two - summary aov r
Extraer el valor de p de aov (7)
Estoy buscando extraer el valor p generado a partir de un 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. Por lo general, puedo trabajar en las listas para obtener lo que necesito, pero estoy teniendo dificultades con este. Una búsqueda en Google también pareció revelar estructuras mucho más simples de las que estoy obteniendo.
NOTA: ASQ es mi marco de datos.
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"
Algo más corto, que en el advice de BurningLeo:
summary(test)[[1]][[1,"Pr(>F)"]]
Echa un vistazo a str(summary(test))
- ahí es donde ves el valor p.
Sé que esto es antiguo pero miré a mi alrededor en línea y no encontré una explicación o solución general y este hilo es una de las primeras cosas que aparecen en una búsqueda de Google.
Aniko tiene razón, la forma más fácil es mirar en summary(test)
.
tests <- summary(test)
str(tests)
Eso le da una lista de 1 para un objeto independiente de medidas, pero podría tener varios elementos con medidas repetidas. Con las medidas repetidas, cada elemento de la lista se define por el término de error para el elemento de la lista. Donde mucha gente nueva se confunde es que, si se trata de medidas, el único elemento de la lista no tiene nombre. Entonces, realmente no lo notan y no entienden por qué el uso de un selector típico no funciona.
En el caso de las medidas independientes algo como las siguientes obras.
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.
ya que la sugerencia anterior no funcionó para mí, así es como logré resolverlo:
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"]
le dará el valor solicitado
summary(aov(y~factor(x)))[[1]][[5]][1]
summary(test)[[1]][["Pr(>F)"]]
unlist(summary(myAOV)[[2]])[[9]]
2 y 9 son las posiciones del valor p en el modelo myAOV