2010-07-29 2 views
41

Ищу извлечь р-значение, генерируемое из ANOVA в R.Extract р-значение из AOV

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

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" 
+0

Когда вы ул (тест), он перечисляет структура аовского объекта. Что вам нужно посмотреть, это вывод print.aov() (см. Методы (печать))! Aniko's str (summary (test)) делает именно это. –

ответ

52
summary(test)[[1]][["Pr(>F)"]] 
+2

Это не работает для меня. :( – huggie

+19

Мне нужно еще [[1]] - но, эй, это круто :) 'summary (test) [[1]] [[" Pr (> F) "]] [[1]]' – BurninLeo

+2

без Дополнительная информация BurninLeo [[1]] содержит последний столбец сводной таблицы, вторая строка которой пуста - мы хотим, чтобы первая строка получала значение p, что является дополнительным [[1]] делает. – MichaelChirico

4

Отъезд str(summary(test)) - здесь вы видите значение p.

8

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

Aniko is right, самый простой способ - посмотреть в summary(test).

tests <- summary(test) 
str(tests) 

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

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

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

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

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

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

16

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

sum_test = unlist(summary(test)) 

затем смотрит на имена с

names(sum_test) 

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

sum_test["Pr(>F)1"] 

даст желаемое значение

+0

WOW, это потрясающе !!! Я уже смог получить значение p из других методов, но я никогда не видел команду «unlist», и это дает отличный оптимизированный список полного вывода aov –

3

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

summary(test)[[1]][[1,"Pr(>F)"]] 
0
unlist(summary(myAOV)[[2]])[[9]] 

2 и 9 являются позиции р-значения в модели myAOV

Смежные вопросы