【问题标题】:Extract the full p.value from chisq.test从 chisq.test 中提取完整的 p.value
【发布时间】:2019-12-06 21:19:14
【问题描述】:

从 R 中的 chisq.test 得到这个结果。

rslt <- chisq.test(a$x, a$y)

Pearson's Chi-squared test
data:  a$x and a$y
X-squared = 32944, df = 9, p-value < 2.2e-16

但提取 p.value 只是 0

> rslt$p.value
[1] 0

我希望得到 2.2e-16 而不是 0。

我也尝试取消列出 rslt。

> unlist(rslt)
         statistic.X-squared                 parameter.df                      p.value                       method 
          "32943.9488257678"                          "9"                          "0" "Pearson's Chi-squared test"

但我仍然得到 0 而不是 2.2e-16。

有没有办法从描述或实际值而不是缩短值中获取信息?

谢谢。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 rslt$p.value==0 是否返回 true?浮点数变得很奇怪。
  • 如果你 plug that chi-sq value into wolfram alpha 你得到 1.01 x 10^(-7140)。出于所有意图和目的,该数字为 0。您应该拒绝原假设。 R 无法处理这么小的精度。

标签: r chi-squared


【解决方案1】:
rslt = chisq.test(cbind(c(10,20),c(30,40)))

Pearson's Chi-squared test with Yates' continuity correction

data:  cbind(c(10, 20), c(30, 40))
X-squared = 0.44643, df = 1, p-value = 0.504

我们总是可以使用来自测试的卡方估计值,并计算 p.value。使用上面的示例,您可以看到它们是相同的。

rslt$p.value == pchisq(rslt$statistic,rslt$parameter,lower.tail=FALSE)
X-squared 


TRUE 

以你为例,因为 p.value 非常小,所以使用 log:

pchisq(32943.9488257678,9,lower.tail=F,log.p=TRUE)
-16440.44

【讨论】:

    【解决方案2】:

    您的 p 值似乎为零,即:&lt; 2.2e-16。或小于 R 可以处理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2020-07-27
      • 2012-09-25
      相关资源
      最近更新 更多