1

对于没有包含足够的信息来正确访问该问题,我深表歉意。无论如何,我想比较不同的线性模型对并将它们的 p 值记录到一个表中。我的麻烦在于我不能只提取 p 值。

TC <- matrix(data=NA, nrow=1, ncol=6)
    ML5 <- 1:5
for(B in ML5) {
    Coop <- anova(M6,Models5[[B]])$"Pr(>F)"
    TC[1,B] <- Coop
}

 >Coop
   NA 2.041767e-05

那么我如何只将数字放入表中而不将 NA 放入表中?

太感谢了!

4

3 回答 3

7

你只需要引号:

pvalue <- anova(m2,m1)$"Pr(>F)"

您可以使用普通括号子集访问 pvalue 的第二个元素:

pvalue[2]

所以在你的例子中,我相信你会使用

Coop <- anova(M6,Models5[[B]])$"Pr(>F)"[2]

(虽然无法访问 M6,但我不能完全确定)。

str命令在这种情况下非常有用,可以确定您正在处理的对象类型:

str(myanova$"Pr(>F)")
于 2013-08-07T19:41:08.003 回答
0

使用mtcars来自 R 的数据(我更喜欢@Drew Steen 建议的解决方案)

myanova<-anova(lm(mpg~cyl,mtcars),lm(mpg~cyl+disp,mtcars))
pval<-summary(myanova)[1,6]

根据问题更新:

models1<-lm(mpg~cyl,mtcars)
models2<-list(lm(mpg~cyl+disp,mtcars),lm(mpg~cyl+disp+hp,mtcars),lm(mpg~cyl+disp+hp+drat,mtcars))
myp1<-lapply(models2,function(x) anova(models1,x))
myp2<-lapply(myp1,function(x)summary(x)[1,6])
> myp3
[1] "   0.05419  " "   0.09891  " "   0.09661  "

添加:如果您使用“$”Pr(>F)"

  myp2<-lapply(myp1,function(x)x$"Pr(>F)")
  myp3<-sapply(myp2,function(x) as.data.frame(x)[2,1])
    > myp3
    [1] 0.05418572 0.09891469 0.09661222
于 2013-08-07T20:24:57.337 回答
0

使用 aov():

anova_a <- aov(response ~ time + Error(subject), data = all_data)

f_value <- unlist(summary(anova_a)[[2]])[9]
于 2017-01-17T17:49:45.330 回答