微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 相当于 Stata 中的直接命令即 tabi ..., chi2

如何解决R 相当于 Stata 中的直接命令即 tabi ..., chi2

为这个可能非常基本的问题提前道歉,但我一直在努力找出如何在 R 中做到这一点。

在审阅论文、论文等时,根据汇总数据计算 p 值非常有用。 IE。您看到一张表格,想知道 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,78,nrow = 2))

或类似,但似乎做了一些完全不同的计算...

Chi-squared test for given probabilities
data:  c(8,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 被视为一个一维列联表)。 x 的条目必须是非负整数。在这种情况下,测试的假设是总体概率是否等于 p 中的概率,或者如果不给定 p 则全部相等。

如果x是一个至少有两行两列的矩阵,就当作一个二维列联表:x的条目必须是非负整数。否则,x 和 y 必须是相同长度的向量或因子;删除缺失值的情况,将对象强制为因子,并根据这些计算列联表。然后对二维列联表中单元格计数的联合分布是行和列边际的乘积的零假设执行 Pearson 卡方检验。"

检查您的示例数据,例如当你跑步时

is.matrix(c(8,78,nrow = 2))

它会回来

[1] FALSE

同时

is.matrix(matrix(c(8,nrow = 2))

返回

[1] TRUE

所以你知道你给出的例子是一个向量。现在,当您阅读我在上面粘贴的函数的描述时,您会发现它会尝试对您的向量执行“拟合优度测试”。如果是矩阵,它将执行“Pearson 卡方检验”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。