Извлечь p-значение из AOV - PullRequest
52 голосов
/ 30 июля 2010

Я ищу, чтобы извлечь p-значение, сгенерированное из ановы в R.

Вот что я бегу:

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

Когда я смотрю на структуру, это то, что я вижу. Я обычно могу работать со списками, чтобы получить то, что мне нужно, но мне тяжело с этим. Поиск в Google, похоже, также выявил гораздо более простые структуры, чем я получаю.

ПРИМЕЧАНИЕ. 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"

Ответы [ 7 ]

67 голосов
/ 30 июля 2010
summary(test)[[1]][["Pr(>F)"]]
19 голосов
/ 29 апреля 2014

, поскольку предложенное выше предложение не сработало для меня, вот как мне удалось его решить:

sum_test = unlist(summary(test))

затем, глядя на имена с

names(sum_test)

у меня есть «Pr (> F) 1» и «Pr (> F) 2», когда первое это запрошенное значение, поэтому

sum_test["Pr(>F)1"]

даст запрашиваемое значение

8 голосов
/ 13 апреля 2012

Я знаю, что это старо, но я посмотрел в Интернете и не нашел объяснения или общего решения, и эта тема - одна из первых вещей, которая появляется в поиске Google.

Анико права,самый простой способ - поиск в summary(test).

tests <- summary(test)
str(tests)

. Это дает список из 1 для объекта независимых измерений aov, но он может иметь несколько элементов с повторяющимися измерениями.При повторных измерениях каждый элемент в списке определяется термином ошибки для элемента в списке.Многие новые люди запутываются в том, что если между измерениями не указан один элемент списка.Таким образом, они на самом деле не замечают этого и не понимают, почему использование обычного селектора не работает.

В случае независимых мер работает что-то вроде следующего.

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

В повторяющихся измерениях это похоже, но вы также можете использовать именованные элементы, такие как ...

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

Обратите внимание, что я все еще должен был сделать этот выбор списка, потому что каждый из элементов списка в модели повторных измерений сновасписок 1.

4 голосов
/ 30 июля 2010

Проверьте str(summary(test)) - вот где вы видите значение p.

3 голосов
/ 17 июня 2014

Несколько короче, чем в совете BurningLeo :

summary(test)[[1]][[1,"Pr(>F)"]]
2 голосов
/ 02 марта 2016
summary(aov(y~factor(x)))[[1]][[5]][1]
0 голосов
/ 22 июня 2016
unlist(summary(myAOV)[[2]])[[9]]

2 и 9 - это значения p-значения в модели myAOV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...