R 相当于 Stata 中的即时命令(即 tabi ..., chi2)
R equivalent of immediate commands in Stata (i.e. tabi ..., chi2)
提前为这个可能非常基本的问题道歉,但我一直在努力寻找如何在 R 中做到这一点。
在审阅论文、论文等时,根据聚合数据计算 p-vaules 非常有用。 IE。您看到 table 并想知道是否正确计算了 p 值。在 Stata 中,使用即时命令很容易计算聚合数据的卡方检验,例如:
tabi 8 43 \ 2 78,行 chi2
给出输出
row | 1 2 | Total
1 | 8 43 | 51
| 15.69 84.31 | 100.00
2 | 2 78 | 80
| 2.50 97.50 | 100.00
Total | 10 121 | 131
| 7.63 92.37 | 100.00
Pearson chi2(1) = 7.6805 Pr = 0.006
我很难在 R 中做同样的事情,例如使用 chisq.test()
例如,我试过
chisq.test(c(8, 43, 2, 78))
或
chisq.test(c(8, 43, 2, 78, nrow = 2))
或类似,但它似乎做了一些完全不同的计算...
Chi-squared test for given probabilities
data: c(8, 43, 2, 78, nrow = 2)
X-squared = 167.94, df = 4, p-value < 2.2e-16
任何人都可以帮助解决这个问题吗?
提前致谢
比约恩
我不完全确定你想要达到什么目的,但我认为你可能正在搜索这个(?):
chisq.test(matrix(c(8, 43, 2, 78), nrow = 2))
无论如何,只是 运行 ?chisq.test()
看看这个函数是如何工作的,它需要什么参数以及顺序等等。
如果您 运行 这个,您还会找到该功能如何工作的描述:
"如果x是一个只有一行或一列的矩阵,或者x是一个向量而y没有给定,则进行拟合优度检验(x被视为一维列联table). x 的条目必须是非负整数。在这种情况下,检验的假设是总体概率是否等于 p 中的概率,或者如果 p 未给出则全部相等。
如果x是一个至少有两行两列的矩阵,则认为它是一个二维偶然性table:x的元素必须是非负整数。否则,x 和 y 必须是相同长度的向量或因子;删除缺失值的案例,将对象强制转换为因子,并根据这些计算偶然性 table。然后执行 Pearson 的卡方检验,假设二维意外事件中单元格计数的联合分布 table 是行边缘和列边缘的乘积。"
检查您的示例数据,例如当你 运行
is.matrix(c(8, 43, 2, 78, nrow = 2))
会return
[1] FALSE
而
is.matrix(matrix(c(8, 43, 2, 78), nrow = 2))
returns
[1] TRUE
所以你知道你给出的例子是一个向量。现在,当您阅读我上面粘贴的函数的描述时,您会发现它会尝试对您的向量执行“拟合优度检验”。如果是矩阵,它将执行“Pearson 卡方检验”。
提前为这个可能非常基本的问题道歉,但我一直在努力寻找如何在 R 中做到这一点。
在审阅论文、论文等时,根据聚合数据计算 p-vaules 非常有用。 IE。您看到 table 并想知道是否正确计算了 p 值。在 Stata 中,使用即时命令很容易计算聚合数据的卡方检验,例如:
tabi 8 43 \ 2 78,行 chi2
给出输出
row | 1 2 | Total
1 | 8 43 | 51
| 15.69 84.31 | 100.00
2 | 2 78 | 80
| 2.50 97.50 | 100.00
Total | 10 121 | 131
| 7.63 92.37 | 100.00
Pearson chi2(1) = 7.6805 Pr = 0.006
我很难在 R 中做同样的事情,例如使用 chisq.test() 例如,我试过
chisq.test(c(8, 43, 2, 78))
或
chisq.test(c(8, 43, 2, 78, nrow = 2))
或类似,但它似乎做了一些完全不同的计算...
Chi-squared test for given probabilities
data: c(8, 43, 2, 78, nrow = 2)
X-squared = 167.94, df = 4, p-value < 2.2e-16
任何人都可以帮助解决这个问题吗?
提前致谢
比约恩
我不完全确定你想要达到什么目的,但我认为你可能正在搜索这个(?):
chisq.test(matrix(c(8, 43, 2, 78), nrow = 2))
无论如何,只是 运行 ?chisq.test()
看看这个函数是如何工作的,它需要什么参数以及顺序等等。
如果您 运行 这个,您还会找到该功能如何工作的描述:
"如果x是一个只有一行或一列的矩阵,或者x是一个向量而y没有给定,则进行拟合优度检验(x被视为一维列联table). x 的条目必须是非负整数。在这种情况下,检验的假设是总体概率是否等于 p 中的概率,或者如果 p 未给出则全部相等。
如果x是一个至少有两行两列的矩阵,则认为它是一个二维偶然性table:x的元素必须是非负整数。否则,x 和 y 必须是相同长度的向量或因子;删除缺失值的案例,将对象强制转换为因子,并根据这些计算偶然性 table。然后执行 Pearson 的卡方检验,假设二维意外事件中单元格计数的联合分布 table 是行边缘和列边缘的乘积。"
检查您的示例数据,例如当你 运行
is.matrix(c(8, 43, 2, 78, nrow = 2))
会return
[1] FALSE
而
is.matrix(matrix(c(8, 43, 2, 78), nrow = 2))
returns
[1] TRUE
所以你知道你给出的例子是一个向量。现在,当您阅读我上面粘贴的函数的描述时,您会发现它会尝试对您的向量执行“拟合优度检验”。如果是矩阵,它将执行“Pearson 卡方检验”。