【问题标题】:TukeyHSD adjusted P value is 0.0000000TukeyHSD 调整后的 P 值为 0.0000000
【发布时间】:2013-05-04 10:31:08
【问题描述】:

我刚刚进行了阶乘方差分析,然后进行了TukeyHSD 后测。我在TukeyHSD 输出中调整的一些 P 值是0.0000000。这些P值真的可以为零吗?或者这是一个四舍五入的情况,我的真实 P 值可能是 1e-17 之类的东西,四舍五入到 0.0000000

R 中的TukeyHSD() 函数是否有任何选项可以提供包含指数的输出 P 值?

这是我的输出的 sn-p:

TukeyHSD(fit)

  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = lum ~ cells * treatment)

$`cells:treatment`
                    diff         lwr          upr     p adj
NULL:a-KR:a     -266.5833333 -337.887800 -195.2788663 0.0000000
WT:a-KR:a       -196.3333333 -267.637800 -125.0288663 0.0000000
KR:ar-KR:a        83.4166667   12.112200  154.7211337 0.0053485
NULL:ar-KR:a    -283.5000000 -354.804467 -212.1955330 0.0000000
WT:ar-KR:a      -196.7500000 -268.054467 -125.4455330 0.0000000
KR:e-KR:a       -219.0833333 -290.387800 -147.7788663 0.0000000
NULL:e-KR:a     -185.0833333 -256.387800 -113.7788663 0.0000000
WT:e-KR:a        -96.1666667 -167.471134  -24.8621996 0.0003216

【问题讨论】:

  • 在您的特定情况下,p 值不可能为 0。但是 p 值可能非常小,以至于计算机无法将其与 0 区分开来。或者可能是print 方法选择将微小的 p 值报告为 0,而不是执行类似“<.000001 p>
  • 使用options(digits=22) 显示所有小数位。但请注意,小于 2e-16 的数字无法可靠地区分彼此或 0。
  • 一个可重现的例子(tinyurl.com/reproducible-000),或者dput(fit)的结果,肯定会有所帮助......
  • 感谢大家的帮助!! @BenBolker 在下面的回答中提供了一个很好的可重现示例,清楚地显示了正在发生的事情(因此我不会提供)。

标签: r anova


【解决方案1】:

编辑:请参阅下面有关 Tukey p 值分辨率的警告!

dd <- data.frame(y=c(1:10,1001:1010),f=rep(c("A","B"),each=10))
fit <- aov(y~f,data=dd)

打印出来的p值为零:

(tt <- TukeyHSD(fit))
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = y ~ f, data = dd)
## 
## $f
##     diff      lwr      upr p adj
## B-A 1000 997.1553 1002.845     0

但是查看str() 的(缩写)输出显示那里有更多信息:

str(tt)

## List of 1
##  $ f: num [1, 1:4] 1.00e+03 9.97e+02 1.00e+03 2.62e-14
##   ..- attr(*, "dimnames")=List of 2
## 

你可以自己提取值:

tt$f[,"p adj"]
## [1] 2.620126e-14

或者如 cmets 中所述,print(tt,digits=15) 将起作用...

警告

我决定再深入一点,并在挖掘 TukeyHSD.aov() 的代码时注意到它依赖于 ptukey(),在其“示例”部分中警告说“精度可能不超过 8 位” .特别是,一旦 t 统计量高于大约 30,p 值在2.62e-14 处达到最大值(最小值?)...

zval <- 10^seq(1,6,length=100)
pval <- ptukey(zval,2,18,lower.
par(las=1,bty="l")
plot(zval,pval,log="xy",type="l")

最重要的是,您根本无法区分这么小的 p 值。您可能需要重新考虑您的策略...

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 2021-05-27
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2020-06-19
    • 2019-10-08
    • 2021-05-07
    • 2016-12-26
    相关资源
    最近更新 更多