通常の線形モデルに対するANOVAの利点は何ですか?


8


Rを試してみたところ、anova()にはlmタイプのオブジェクトが必要であることがわかりました。しかし、なぜこの後anovaを続けるべきなのでしょうか。

> x <- data.frame(rand=rnorm(100), factor=sample(c("A","B","C"),100,replace=TRUE))
> head(x)
        rand factor
1  0.9640502      B
2 -0.5038238      C
3 -1.5699734      A
4 -0.8422324      B
5  0.2489113      B
6 -1.4685439      A

> model <- lm(x$rand ~ x$factor))
> summary(model)

Call:
lm(formula = x$rand ~ x$factor)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.74118 -0.89259  0.02904  0.59726  3.19762 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  -0.1878     0.1845  -1.018    0.311
x$factorB    -0.1284     0.2689  -0.477    0.634
x$factorC     0.4246     0.2689   1.579    0.118

Residual standard error: 1.107 on 97 degrees of freedom
Multiple R-squared: 0.04345, Adjusted R-squared: 0.02372 
F-statistic: 2.203 on 2 and 97 DF,  p-value: 0.1160

これは私に必要なすべてを教えてくれますか?なぜanova(model)を続けたいのか知りたいです。


回答:


16

実際にanova()関数を使用したときに得られる結果を見てみましょう(数値は、乱数の生成に使用したシードがわからないため、例とは異なりますが、ポイントは同じです)。

> anova(model)

Analysis of Variance Table

Response: x$rand
          Df  Sum Sq Mean Sq F value Pr(>F)
x$factor   2   4.142  2.0708  1.8948 0.1559
Residuals 97 106.009  1.0929        

因子のF検定は同時にテストしています、つまり、因子は一般に有意ではないという仮説。一般的な戦略は、因子のどのレベルが互いに異なるかを掘り下げる前に、最初にこのオムニバス仮説をテストすることです。H0β1=β2=0

また、anova()関数を使用して、完全モデルテストと縮小モデルテストを比較できます。例えば:

> x <- data.frame(rand=rnorm(100), factor=sample(c("A","B","C"),100,replace=TRUE), 
                  y1=rnorm(100), y2=rnorm(100))
> model1 <- lm(x$rand ~ x$factor + x$y1 + x$y2)
> model2 <- lm(x$rand ~ x$factor)
> anova(model2, model1)

Analysis of Variance Table

Model 1: x$rand ~ x$factor
Model 2: x$rand ~ x$factor + x$y1 + x$y2
Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     97 105.06                           
2     95 104.92  2   0.13651 0.0618 0.9401

これは、因子と2つの共変量(y1とy2)を含む完全なモデルと縮小モデルの比較です。ここで、2つの共変量の勾配が同時にゼロに等しいと仮定します。


2
(+1)良い反応。これらは、ANOVAを介して分析されるDoEで興味深い特定のコントラストであることが多く、デフォルトのコントラスト(返される、summary.aov(lm(...))またはanova(lm(...))特に関心がない)
chl

@chl:それは良い点です。ただし、テストに関心のある仮説の対比を実際に構築するために、言うべきことがあると思います。ANOVAと回帰の間には基本的な違いはありません。時々、ANOVAルーチンはテストされている仮説を隠します。同時に、ANOVAプロシージャは、結果を表示したい方法でパッケージ化する場合があります。
ブレット

ありがとうございました:)それで、因子が少しでも違いを生む場合は、最初にanovaを見てから、lm()-outputを見て、どの因子が違いを生じたのかを調べましたか?しかし、lm()-outputは、さまざまな要因が重要であるかどうかを(1〜3の星で)すでに教えてくれませんか?
アレクサンダーエンゲルハート

1
結構です。上記のlm()からの出力は、レベルA(参照レベル)とレベルBおよびCの間に有意差があるかどうかを示します。レベルBとCが互いに大きく異なるかどうかは示しません。もちろん、レベルB(またはC)を(relevel()関数を使用して)参照にすることもできますが、多くのレベルを持つ因子があるとします。レベル間のすべてのペアごとのコントラストをチェックするのは面倒になります。さらに、多くのテストを実施しています。代わりの方法は、最初にオムニバステストを検査して、何が最初に起こっているかどうかを確認することです。
Wolfgang

ハ!どうもありがとう。lm()が参照レベルに対して因子のみをテストしたことを理解していなかったようです。
アレクサンダーエンゲルハート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.