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 卡方检验”。