从统计测试中提取输出

Tim*_*ert 1 r output

我在R中运行统计测试(在RStudio中运行).我使用变量名保存结果.我想提取结果的一部分.我该怎么做呢?这是最后一个R代码的例子.我建立了一个包含四种治疗方法的实验,并收集数据.我接下来运行ANOVA并执行Tukey HSD测试.结果存储在名为"posthoc"的变量中.

我注意并注意到posthoc是一个列表1.在RStudio中,我看到名称左侧有一个蓝色箭头,点击它会提供更多信息.我不知道如何以一种我可以用来回答我自己的问题的方式解释它.

我可以打印(posthoc),我得到以下内容.

#  Tukey multiple comparisons of means
#    95% family-wise confidence level
#
#Fit: aov(formula = Expt1$Treat1 ~ Expt1$Trt)
#
#$`Expt1$Trt`
#          diff        lwr          upr     p adj
#B-A   6.523841   2.664755  10.38292569 0.0001372
#C-A  18.584160  14.725075  22.44324507 0.0000000
#D-A   2.643719  -1.215367   6.50280370 0.2854076
#C-B  12.060319   8.201234  15.91940456 0.0000000
#D-B  -3.880122  -7.739207  -0.02103681 0.0482260
#D-C -15.940441 -19.799527 -12.08135619 0.0000000
Run Code Online (Sandbox Code Playgroud)

我也可以输入class(posthoc),我得到这个:[1]"TukeyHSD""multicomp"

在这种情况下,我需要的是新变量中的所有p值.一般的问题是R给了我输出,我需要能够弄清楚如何提取该输出的特定元素.我可能正在使用aov,lm,nlme或其他东西.

Mean1=3.2
Sd1=3.2
Mean2=9.4
Sd2=2.4
Mean3=21.4
Sd3=6.4
Mean4=3.9
Sd4=10.7

Size1=30

Treat1=rnorm(Size1,mean=Mean1, sd=Sd1)
Trt="A"
Treat1M <- data.frame(Treat1, Trt)
Treat1=rnorm(Size1,mean=Mean2, sd=Sd2)
Trt="B"
Treat2M <- data.frame(Treat1, Trt)
Treat1=rnorm(Size1,mean=Mean3, sd=Sd3)
Trt="C"
Treat3M <- data.frame(Treat1, Trt)
Treat1=rnorm(Size1,mean=Mean4, sd=Sd4)
Trt="D"
Treat4M <- data.frame(Treat1, Trt)

Expt1=rbind(Treat1M, Treat2M, Treat3M, Treat4M)

Expt1R<-aov(Expt1$Treat1 ~ Expt1$Trt)
posthoc <-TukeyHSD(x=Expt1R, 'Expt1$Trt', conf.level=.95)
Run Code Online (Sandbox Code Playgroud)

Rom*_*man 8

只需使用posthoc变量的子集.

posthoc$`Expt1$Trt`[,4]
Run Code Online (Sandbox Code Playgroud)

或者你可以试试这个broom包裹.

library(broom)
res <- tidy(posthoc)
res
       term comparison   estimate    conf.low conf.high  adj.p.value
1 Expt1$Trt        B-A   5.904138   1.3639293 10.444346 5.223255e-03
2 Expt1$Trt        C-A  16.886340  12.3461316 21.426548 3.919087e-14
3 Expt1$Trt        D-A   4.283597  -0.2566111  8.823805 7.189220e-02
4 Expt1$Trt        C-B  10.982202   6.4419940 15.522410 3.226398e-08
5 Expt1$Trt        D-B  -1.620540  -6.1607487  2.919668 7.886097e-01
6 Expt1$Trt        D-C -12.602743 -17.1429509 -8.062534 3.235351e-10
Run Code Online (Sandbox Code Playgroud)

tidy函数的输出是data.frame.因此,您可以使用访问p值res$adj.p.value.

class(res)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

  • +1为"扫帚".我建议阅读[介绍性小插图](https://cran.r-project.org/web/packages/broom/vignettes/broom.html)以了解一般设计原则.这是简化统计建模的绝佳方案. (4认同)