从aov中提取p值

我正在寻找提取R中anova产生的p值。

这是我正在运行的:

test <- aov(asq[,9] ~ asq[,187]) summary(test) 

产量:

  Df Sum Sq Mean Sq F value Pr(>F) asq[, 187] 1 3.02 3.01951 12.333 0.0004599 *** Residuals 1335 326.85 0.24483 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 12 observations deleted due to missingness 

当我看到一个结构,这是我所看到的。 我通常可以通过列表来获得我所需要的东西,但是我很难用这个东西。 谷歌search似乎也显示出比我更简单的结构。

注意:ASQ是我的数据框。

 str(test) List of 13 $ coefficients : Named num [1:2] 0.2862 0.0973 ..- attr(*, "names")= chr [1:2] "(Intercept)" "asq[, 187]" $ residuals : Named num [1:1337] 0.519 0.519 -0.481 -0.481 -0.481 ... ..- attr(*, "names")= chr [1:1337] "1" "2" "3" "4" ... $ effects : Named num [1:1337] -16.19 -1.738 -0.505 -0.505 -0.505 ... ..- attr(*, "names")= chr [1:1337] "(Intercept)" "asq[, 187]" "" "" ... $ rank : int 2 $ fitted.values: Named num [1:1337] 0.481 0.481 0.481 0.481 0.481 ... ..- attr(*, "names")= chr [1:1337] "1" "2" "3" "4" ... $ assign : int [1:2] 0 1 $ qr :List of 5 ..$ qr : num [1:1337, 1:2] -36.565 0.0273 0.0273 0.0273 0.0273 ... .. ..- attr(*, "dimnames")=List of 2 .. .. ..$ : chr [1:1337] "1" "2" "3" "4" ... .. .. ..$ : chr [1:2] "(Intercept)" "asq[, 187]" .. ..- attr(*, "assign")= int [1:2] 0 1 ..$ qraux: num [1:2] 1.03 1.02 ..$ pivot: int [1:2] 1 2 ..$ tol : num 1e-07 ..$ rank : int 2 ..- attr(*, "class")= chr "qr" $ df.residual : int 1335 $ na.action :Class 'omit' Named int [1:12] 26 257 352 458 508 624 820 874 1046 1082 ... .. ..- attr(*, "names")= chr [1:12] "26" "257" "352" "458" ... $ xlevels : list() $ call : language aov(formula = asq[, 9] ~ asq[, 187]) $ terms :Classes 'terms', 'formula' length 3 asq[, 9] ~ asq[, 187] .. ..- attr(*, "variables")= language list(asq[, 9], asq[, 187]) .. ..- attr(*, "factors")= int [1:2, 1] 0 1 .. .. ..- attr(*, "dimnames")=List of 2 .. .. .. ..$ : chr [1:2] "asq[, 9]" "asq[, 187]" .. .. .. ..$ : chr "asq[, 187]" .. ..- attr(*, "term.labels")= chr "asq[, 187]" .. ..- attr(*, "order")= int 1 .. ..- attr(*, "intercept")= int 1 .. ..- attr(*, "response")= int 1 .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> .. ..- attr(*, "predvars")= language list(asq[, 9], asq[, 187]) .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric" .. .. ..- attr(*, "names")= chr [1:2] "asq[, 9]" "asq[, 187]" $ model :'data.frame': 1337 obs. of 2 variables: ..$ asq[, 9] : int [1:1337] 1 1 0 0 0 1 1 1 0 0 ... ..$ asq[, 187]: int [1:1337] 2 2 2 2 2 2 2 2 2 2 ... ..- attr(*, "terms")=Classes 'terms', 'formula' length 3 asq[, 9] ~ asq[, 187] .. .. ..- attr(*, "variables")= language list(asq[, 9], asq[, 187]) .. .. ..- attr(*, "factors")= int [1:2, 1] 0 1 .. .. .. ..- attr(*, "dimnames")=List of 2 .. .. .. .. ..$ : chr [1:2] "asq[, 9]" "asq[, 187]" .. .. .. .. ..$ : chr "asq[, 187]" .. .. ..- attr(*, "term.labels")= chr "asq[, 187]" .. .. ..- attr(*, "order")= int 1 .. .. ..- attr(*, "intercept")= int 1 .. .. ..- attr(*, "response")= int 1 .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> .. .. ..- attr(*, "predvars")= language list(asq[, 9], asq[, 187]) .. .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric" .. .. .. ..- attr(*, "names")= chr [1:2] "asq[, 9]" "asq[, 187]" ..- attr(*, "na.action")=Class 'omit' Named int [1:12] 26 257 352 458 508 624 820 874 1046 1082 ... .. .. ..- attr(*, "names")= chr [1:12] "26" "257" "352" "458" ... - attr(*, "class")= chr [1:2] "aov" "lm" 
 summary(test)[[1]][["Pr(>F)"]] 

因为上面的build议不适合我这是我如何设法解决它:

 sum_test = unlist(summary(test)) 

然后看着名字

 names(sum_test) 

我有“Pr(> F)1”和“Pr(> F)2”,当它第一个请求的值,那么

 sum_test["Pr(>F)1"] 

会给出要求的价值

我知道这是旧的,但我环顾四周,并没有find一个解释或一般的解决scheme,这个线程是在谷歌search出现的第一件事情之一。

安子是对的,最简单的方法是summary(test)

 tests <- summary(test) str(tests) 

这给你一个独立的度量aov对象的列表,但它可能有多个项目重复的措施。 通过重复测量,列表中的每个项目都由列表中项目的错误项定义。 许多新人感到困惑的是,如果在两项措施之间,那么一个单独的名单项目就不会被命名。 所以,他们并没有真正注意到,也不明白为什么使用典型的select器不起作用。

在独立措施的情况下,像下面的作品。

 tests[[1]]$'Pr(>F)' 

在重复的措施是相似的,但你也可以使用命名的项目,如…

 myModelSummary$'Error: subject:A'[[1]]$'Pr(>F)' 

请注意,我仍然需要做这个列表select,因为重复测量模型中的每个列表项都是1的列表。

检查出str(summary(test)) – 这就是你看p值的地方。

比BurningLeo的build议稍微短一些:

 summary(test)[[1]][[1,"Pr(>F)"]] 
 summary(aov(y~factor(x)))[[1]][[5]][1] 
 unlist(summary(myAOV)[[2]])[[9]] 

2和9是myAOV模型中p值的位置

Interesting Posts