回答:
ANOVAと線形回帰は、2つのモデルが同じ仮説に対してテストし、同じエンコードを使用する場合、同等です。モデルの基本的な目的は異なります。ANOVAは、データのカテゴリの平均値の違いを主に懸念していますが、線形回帰は、サンプルの平均応答と関連する推定を主に懸念しています。
ANOVAをダミー変数を使用した回帰として説明することができます。これは、カテゴリー変数を使用した単純な回帰の場合であることが簡単にわかります。カテゴリ変数は、指標行列(0/1
被験者が特定のグループの一部であるかどうかに依存する行列)としてエンコードされ、線形回帰によって記述される線形システムの解に直接使用されます。5つのグループの例を見てみましょう。引数のために、平均group1
が1、平均group2
が2、...、平均group5
が5であると仮定します(MATLABを使用しますが、Rでもまったく同じことは同等です)。
rng(123); % Fix the seed
X = randi(5,100,1); % Generate 100 random integer U[1,5]
Y = X + randn(100,1); % Generate my response sample
Xcat = categorical(X); % Treat the integers are categories
% One-way ANOVA
[anovaPval,anovatab,stats] = anova1(Y,Xcat);
% Linear regression
fitObj = fitlm(Xcat,Y);
% Get the group means from the ANOVA
ANOVAgroupMeans = stats.means
% ANOVAgroupMeans =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Get the beta coefficients from the linear regression
LRbetas = [fitObj.Coefficients.Estimate']
% LRbetas =
% 1.0953 0.7468 1.6398 3.1368 3.9565
% Rescale the betas according the intercept
scaledLRbetas = [LRbetas(1) LRbetas(1)+LRbetas(2:5)]
% scaledLRbetas =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Check if the two results are numerically equivalent
abs(max( scaledLRbetas - ANOVAgroupMeans))
% ans =
% 2.6645e-15
このシナリオで見られるように、結果はまったく同じです。わずかな数値の違いは、設計が完全にバランスが取れていないことと、下にある推定手順によるものです。ANOVAは数値エラーをもう少し積極的に蓄積します。その点で、切片を当てはめLRbetas(1)
ます。インターセプトのないモデルを適合させることはできますが、それは「標準」線形回帰ではありません。(その場合、結果はANOVAにさらに近くなります。)
ANOVAの場合と線形回帰の場合の統計量(平均の比)は、上記の例でも同じです。
abs( fitObj.anova.F(1) - anovatab{2,5} )
% ans =
% 2.9132e-13
手順は同じ仮説をテストするが、異なる文言でいるためです:「場合ANOVAは、定性的チェックする比率は一切グループ化は信じがたいされていないことを示唆するのに十分な高さ」 "場合は、線形回帰は質的にチェックする一方比だけインターセプトを示唆する十分高いですモデルはおそらく不十分です」。
(これは、「帰無仮説の下で観測された値以上の値を見る可能性」のやや自由な解釈であり、教科書の定義であることを意図していません。)
「ANOVAが線形モデルの係数について何も伝えない(平均が等しくないと仮定して)」という質問の最後の部分に戻って、あなたのデザインの場合、ANOVAシンプルで十分なバランスが取れており、線形モデルのすべてを示します。グループ平均の信頼区間は、の信頼区間と同じになります等。明らかに、彼の回帰モデルに複数の共変量を追加し始めたとき、単純な一元配置分散分析は直接等価ではありません。その場合、線形回帰の平均応答の計算に使用される情報を、一元配置分散分析で直接利用できない情報で補強します。もう一度ANOVA用語で物事を再表現できると思いますが、それはほとんど学術的な課題です。
この問題に関する興味深い論文は、Gelmanの2005年の論文「分散の分析-なぜこれまで以上に重要なのか」です。提起されたいくつかの重要なポイント。私はこの論文を完全に支持しているわけではありません(個人的にはMcCullachの見解ともっと一致していると思います)が、建設的な読み物になる可能性があります。
最後に、混合効果モデルがある場合、プロットは太くなります。そこでは、データのグループ化に関する迷惑な情報や実際の情報について、さまざまな概念があります。これらの問題はこの質問の範囲外ですが、うなずくに値すると思います。
カテゴリ(ダミーコーディング)回帰子を使用したOLS はANOVA の因子と同等であるという考えに色を付けてみましょう。どちらの場合にもレベル(またはANOVAの場合はグループ)があります。
OLS回帰では、回帰変数に連続変数も含まれることが最も一般的です。これらは、カテゴリー変数と従属変数(DC)の間の適合モデルの関係を論理的に変更します。しかし、パラレルを認識できないようにするという点ではありません。
mtcars
データセットに基づいて、最初にlm(mpg ~ wt + as.factor(cyl), data = mtcars)
連続変数wt
(重み)とカテゴリ変数の効果を予測するさまざまな切片cylinder
(4、6、または8シリンダー)によって決定される勾配としてモデルを視覚化できます。一元配置分散分析と類似するのは、この最後の部分です。
それを右のサブプロットでグラフィカルに見てみましょう(左の3つのサブプロットは、すぐに説明するANOVAモデルとの左右比較のために含まれています):
各シリンダーエンジンは色分けされており、異なる切片のある適合線とデータクラウド間の距離は、ANOVAのグループ内変動に相当します。連続変数とOLSモデルにおける切片(すなわち通知weight
)数学の影響によるANOVAで異なる群内手段、の値と同じではないweight
平均値(以下を参照)と異なるモデル行列mpg
のためのたとえば、4気筒車はmean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364
であるのに対し、OLSの「ベースライン」インターセプト(慣例cyl==4
(Rで並べられた最小から最大の数字)を反映)は著しく異なりますsummary(fit)$coef[1] #[1] 33.99079
。線の勾配は連続変数の係数ですweight
。
weight
これらの線を精神的にまっすぐにして水平線に戻すことによる影響を抑えようとするaov(mtcars$mpg ~ as.factor(mtcars$cyl))
と、左側の3つのサブプロットにモデルのANOVAプロットが表示されます。weight
回帰アウト今であるが、異なる切片の点から関係が概ね維持される-私たちは単にのみを「見る」に視覚装置として、反時計回りに回転させ、再びそれぞれの異なるレベル(のために以前に重複プロットを分散さ接続; 2つの異なるモデルを比較しているため、数学的な平等としてではありません!)。
因子の各レベルcylinder
は独立しており、垂直線は残差またはグループ内誤差を表します。クラウド内の各ポイントからの距離と各レベルの平均(色分けされた水平線)。色の勾配は、モデルの検証におけるレベルの重要性を示します。データポイントがグループ平均の周りにクラスター化されるほど、ANOVAモデルは統計的に有意になる可能性が高くなります。すべてのプロットの周りの黒い水平線は、すべての因子の平均です。軸の数字は、各レベル内の各ポイントの単なるプレースホルダー番号/識別子であり、ボックスプロットとは異なるプロット表示を可能にするために、水平線に沿ってポイントを分離する以外の目的はありません。
そして、これらの垂直セグメントの合計により、残差を手動で計算できます。
mu_mpg <- mean(mtcars$mpg) # Mean mpg in dataset
TSS <- sum((mtcars$mpg - mu_mpg)^2) # Total sum of squares
SumSq=sum((mtcars[mtcars$cyl==4,"mpg"]-mean(mtcars[mtcars$cyl=="4","mpg"]))^2)+
sum((mtcars[mtcars$cyl==6,"mpg"] - mean(mtcars[mtcars$cyl=="6","mpg"]))^2)+
sum((mtcars[mtcars$cyl==8,"mpg"] - mean(mtcars[mtcars$cyl=="8","mpg"]))^2)
結果:SumSq = 301.2626
およびTSS - SumSq = 824.7846
。と比較:
Call:
aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
Terms:
as.factor(mtcars$cyl) Residuals
Sum of Squares 824.7846 301.2626
Deg. of Freedom 2 29
cylinder
回帰分析としてカテゴリカルのみを使用した線形モデルのANOVAでのテストとまったく同じ結果:
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)
anova(fit)
Analysis of Variance Table
Response: mpg
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(cyl) 2 824.78 412.39 39.697 4.979e-09 ***
Residuals 29 301.26 10.39
したがって、モデルで説明されていない総分散の一部である残差と分散は、タイプのOLS lm(DV ~ factors)
またはANOVA(aov(DV ~ factors)
)を呼び出しても同じです。連続変数のモデルは、同一のシステムになります。同様に、モデルをグローバルに、またはオムニバスANOVA(レベルごとではなく)として評価すると、当然ながら同じp値が得られますF-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09
。
これは、個々のレベルのテストで同一のp値が得られることを意味するものではありません。OLSの場合、次を呼び出しsummary(fit)
て取得できます。
lm(formula = mpg ~ as.factor(cyl), data = mtcars)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.6636 0.9718 27.437 < 2e-16 ***
as.factor(cyl)6 -6.9208 1.5583 -4.441 0.000119 ***
as.factor(cyl)8 -11.5636 1.2986 -8.905 8.57e-10 ***
これは、オムニバステストに近いANOVAでは不可能です。これらのタイプの値評価を取得するには、Tukey Honest Significant Difference Testを実行する必要があります。これは、複数のペアワイズ比較を実行した結果(タイプ"完全に異なる出力:p adjusted
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
$`as.factor(mtcars$cyl)`
diff lwr upr p adj
6-4 -6.920779 -10.769350 -3.0722086 0.0003424
8-4 -11.563636 -14.770779 -8.3564942 0.0000000
8-6 -4.642857 -8.327583 -0.9581313 0.0112287
究極的には、ボンネットの下のエンジンを覗いてみると、モデルマトリックスと列スペースの投影に他ならないので、安心するものはありません。ANOVAの場合、これらは実際には非常に単純です。
これは、3つのレベル(例えばと共に一方向ANOVAモデル行列となりcyl 4
、cyl 6
、cyl 8
として要約)、とき:各レベルまたはグループでの平均でありますグループまたはレベルの観測値の誤差または残差が追加されると、実際のDV観測値が得られます。
一方、OLS回帰のモデル行列は次のとおりです。
これは、あり、それぞれ1つの切片と2つの勾配(および)別の連続変数、たとえばと。weight
displacement
ここでのトリックは、最初の例のように、異なる切片を作成する方法を確認することlm(mpg ~ wt + as.factor(cyl), data = mtcars)
です-2番目の勾配を取り除き、元の単一の連続変数weight
(言い換えると、モデル行列、切片およびの勾配、)。の列はデフォルトで切片に対応します。繰り返しますが、その値はANOVAグループ内平均と同じではありません。これは、OLSモデル行列(下)のの列を最初の列と比較しても驚くべきことではありませんweight
cyl 4
cyl 4
は、ANOVAモデルマトリックスあり、4シリンダーの例を選択するだけです。切片はの効果を説明するためにコーディングダミーを経由してシフトされると、次のように:cyl 6
cyl 8
これで、3番目の列がとき、切片を体系的にシフトします OLSモデルが4気筒車のグループ平均値と同一であるが、それを反映しないで「ベースライン」切片の場合のように、そのことを示す、OLSモデルにおけるレベル間の差はない数学的にグループ間の違いの平均:
fit <- lm(mpg ~ wt + as.factor(cyl), data = mtcars)
summary(fit)$coef[3] #[1] -4.255582 (difference between intercepts cyl==4 and cyl==6 in OLS)
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)$coef[2] #[1] -6.920779 (difference between group mean cyl==4 and cyl==6)
同様に、4番目の列が場合、固定値がに追加されます。したがって、行列方程式はます。したがって、このモデルからANOVAモデルに移行するのは、連続変数を取り除くだけで、OLSのデフォルトインターセプトがANOVAの最初のレベルを反映していることを理解するだけです。
Antoni Parelladaとusεr11852の回答は非常に良かったです。コーディングの観点からのあなたの質問に対応しますR
。
ANOVAは、線形モデルの係数については何も伝えません。では、線形回帰はどのように分散分析と同じですか?
実際、aov
機能するR
ことができるのと同じように使用することができますlm
。下記は用例です。
> lm_fit=lm(mpg~as.factor(cyl),mtcars)
> aov_fit=aov(mpg~as.factor(cyl),mtcars)
> coef(lm_fit)
(Intercept) as.factor(cyl)6 as.factor(cyl)8
26.663636 -6.920779 -11.563636
> coef(aov_fit)
(Intercept) as.factor(cyl)6 as.factor(cyl)8
26.663636 -6.920779 -11.563636
> all(predict(lm_fit,mtcars)==predict(aov_fit,mtcars))
[1] TRUE
ご覧のとおり、ANOVAモデルから係数を取得できるだけでなく、線形モデルと同様に予測に使用することもできます。
ヘルプファイルのaov
機能を確認すると、
これにより、線形モデルを平衡または不平衡の実験計画に適合させるためのlmへのラッパーが提供されます。lmとの主な違いは、印刷、要約などがフィットを処理する方法にあります。これは、線形モデルの分析ではなく、分散分析の従来の言語で表現されます。