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
構造を見ると、これが見えます。私は通常、リストを介して必要なものを取得することができますが、このリストで苦労しています。 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"
summary(test)[[1]][["Pr(>F)"]]
上記の提案は私にとってはうまくいかなかったので、これは私がそれをどうやって解決したかです:
sum_test = unlist(summary(test))
で名前を見て
names(sum_test)
私は「Pr(> F)1」と「Pr(> F)2」を持っています。
sum_test["Pr(>F)1"]
要求された値を与える
これは古いことは知っていますが、オンラインで調べて説明や一般的な解決策を見つけられなかったため、このスレッドはGoogle検索で最初に出てくるものの1つです。
アニコが正しい、最も簡単な方法はsummary(test)
を調べることです。
tests <- summary(test)
str(tests)
これにより、独立したメジャーaovオブジェクトに対して1のリストが得られますが、反復メジャーを持つ複数のアイテムを持つことができます。反復測定では、リスト内の各アイテムはリスト内のアイテムのエラー用語によって定義されます。多くの新しい人々が混乱するのは、それがメジャーの間にある場合、1つの孤立したリスト項目に名前が付けられないということです。そのため、彼らは実際にはそれに気付かず、典型的なセレクターを使用しても機能しない理由を理解していません。
独立した測定の場合、次のようなものが機能します。
tests[[1]]$'Pr(>F)'
繰り返し測定では似ていますが、次のような名前付きアイテムを使用することもできます...
myModelSummary$'Error: subject:A'[[1]]$'Pr(>F)'
繰り返し測定モデルのリスト項目はそれぞれ1のリストであるため、リストの選択を行う必要がありました。
str(summary(test))
を確認してください-p値が表示されている場所です。
BurningLeoの アドバイス よりもやや短い
summary(test)[[1]][[1,"Pr(>F)"]]
summary(aov(y~factor(x)))[[1]][[5]][1]
unlist(summary(myAOV)[[2]])[[9]]
2と9は、myAOVモデルのp値の位置です。