Extrae el valor p de aov

Estoy buscando extraer el valor p generado de una anova en R.

Esto es lo que estoy ejecutando:

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

Rendimientos:

  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 

Cuando miro la estructura, esto es lo que veo. Normalmente puedo trabajar con listas para obtener lo que necesito, pero estoy teniendo un momento difícil con este. Una búsqueda en Google también parecía revelar estructuras mucho más simples de lo que estoy obteniendo.

NOTA: ASQ es mi dataframe.

 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")= .. ..- 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")= .. .. ..- 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)"]] 

dado que la sugerencia anterior no funcionó para mí, así es como logré resolverla:

 sum_test = unlist(summary(test)) 

luego mirando los nombres con

 names(sum_test) 

tengo “Pr (> F) 1” y “Pr (> F) 2”, cuando el primero es el valor solicitado, entonces

 sum_test["Pr(>F)1"] 

dará el valor solicitado

Sé que esto es antiguo, pero miré en línea y no encontré una explicación o solución general, y este hilo es una de las primeras cosas que aparece en una búsqueda en Google.

Aniko tiene razón, la manera más fácil es mirar en summary(test) .

 tests <- summary(test) str(tests) 

Eso le da una lista de 1 para un objeto aov de medidas independientes, pero podría tener varios elementos con medidas repetidas. Con las medidas repetidas cada elemento en la lista se define por el término de error para el elemento en la lista. Donde mucha gente nueva se confunde es que si es entre medidas, el elemento de una lista en solitario no se nombra. Entonces, realmente no lo notan y no entienden por qué no funciona el uso de un selector típico.

En el caso de medidas independientes, algo como lo siguiente funciona.

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

En medidas repetidas, es similar, pero también puedes usar elementos con nombre como ...

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

Tenga en cuenta que todavía tenía que hacer esa selección de lista porque cada uno de los elementos de la lista en el modelo de medidas repetidas es nuevamente una lista de 1.

Echa un vistazo a str(summary(test)) – ahí es donde ves el valor p.

Algo más corto, que en el consejo de BurningLeo:

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

2 y 9 son las posiciones del valor p en el modelo myAOV

Intereting Posts