こちらの続き。
ANOVAオブジェクトからは、多くの興味深い情報を得ることができる。1つに保存されているすべてを見るには、ANOVAオブジェクト上でコマンドを実行する。
二元配置分散分析(Two-way ANOVA)のデータをもう少し掘っていく。まずはTwo-way ANOVAのデータを作ろう。
詳しくはこちらから。
「交互作用を考慮したANOVA」のところのデータ。
library(yarrr) cleaner.type.aov <- aov(formula = time ~ cleaner + type, data = poopdeck) cleaner.type.int.aov <- aov(formula = time ~ cleaner * type, data = poopdeck)
オプション
names(cleaner.type.int.aov)
出力。
[1] "coefficients" "residuals" "effects" "rank" "fitted.values" "assign" "qr" "df.residual" "contrasts" [10] "xlevels" "call" "terms" "model"
例えば、"fitted.values "には、データセットのすべての観測データに対する従属変数(時間)のモデルフィットが含まれています。これらのフィット値は、 $ operatorと代入によってデータセットに戻すことができます。例えば、相互作用モデル(cleaner.type.aov)と非相互作用モデル(cleaner.type.int.aov)の両方からモデルのフィット値を取得し、データフレームの新しい列に割り当ててみよう。
相互作用モデルのフィット値をint.fitとしてデータフレームに追加する
poopdeck$int.fit <- cleaner.type.int.aov$fitted.values
主効果モデルのフィットをme.fitとしてデータフレームに追加する
poopdeck$me.fit <- cleaner.type.aov$fitted.values
それでは、表の最初の数行を見て、最初の数個の観測値の適合性を見よう。
head(poopdeck)
データ行頭。
day cleaner type time 1 1 a parrot 47 2 1 b parrot 55 3 1 c parrot 64 4 1 a shark 101 5 1 b shark 76 6 1 c shark 63
このフィットを使って、モデルがデータにどれだけフィットしたか(あるいはフィットしなかったか)を確認することができる。例えば、各モデルの適合度が真のデータからどれだけ離れているかを、次のように計算することができる。
相互作用モデルのフィットは、平均してどのくらいデータから離れていたか?
mean(abs(poopdeck$int.fit - poopdeck$time))
[1]15.35173
主効果モデルのフィットは、平均してどのくらいデータから離れていたか?
mean(abs(poopdeck$me.fit - poopdeck$time))
[1] 16.5351
、交互作用モデルは平均で15.35分、主効果モデルは平均で16.54分、データから外れている。交互作用モデルは主効果のみのモデルよりも複雑なので、これは驚くことではありません。しかし、交互作用モデルの方がデータへの適合性が高いからといって、必ずしも交互作用に意味があり、信頼できるとは限らない。