Main Content

anova

線形回帰モデルの分散分析

説明

tbl = anova(mdl) は、成分 ANOVA 統計量が含まれている table を返します。

tbl = anova(mdl,anovatype) は、anovatype で指定されたタイプの ANOVA 統計量を返します。たとえば、anovatype として 'component' (既定) を指定すると、成分 ANOVA 統計量が含まれている table が返されます。また、anovatype として 'summary' を指定すると、要約 ANOVA 統計量が含まれている table が返されます。

tbl = anova(mdl,'component',sstype) は、指定されたタイプの二乗和を使用して、成分 ANOVA 統計量を計算します。

すべて折りたたむ

hospital データ セットの線形回帰モデルから成分 ANOVA 表を作成します。

hospital データ セットを読み込み、年齢および性別の関数として血圧のモデルを作成します。

load hospital
tbl = table(hospital.Age,hospital.Sex,hospital.BloodPressure(:,2), ...
    'VariableNames',{'Age','Sex','BloodPressure'});
tbl.Sex = categorical(tbl.Sex);
mdl = fitlm(tbl,'BloodPressure ~ Sex + Age^2')
mdl = 
Linear regression model:
    BloodPressure ~ 1 + Age + Sex + Age^2

Estimated Coefficients:
                   Estimate        SE        tStat       pValue  
                   _________    ________    ________    _________

    (Intercept)       63.942      19.194      3.3314    0.0012275
    Age              0.90673      1.0442     0.86837      0.38736
    Sex_Male          3.0019      1.3765      2.1808     0.031643
    Age^2          -0.011275    0.013853    -0.81389      0.41772


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 6.83
R-squared: 0.0577,  Adjusted R-Squared: 0.0283
F-statistic vs. constant model: 1.96, p-value = 0.125

モデルの ANOVA 表を作成します。

tbl = anova(mdl)
tbl=4×5 table
             SumSq     DF    MeanSq       F        pValue 
             ______    __    ______    _______    ________

    Age      18.705     1    18.705    0.40055     0.52831
    Sex      222.09     1    222.09     4.7558    0.031643
    Age^2    30.934     1    30.934    0.66242     0.41772
    Error    4483.1    96    46.699                       

この表には、定数 (切片) 項を除く各項について以下の列が示されています。

  • SumSq — 項によって説明される二乗和。

  • DF — 自由度。この例では、DF はモデルの各項について 1、誤差項について n-p です。ここで、n は観測値の個数、p はモデル内の係数の個数 (切片を含む) です。たとえば、このモデルでは誤差項の DF は 100 – 4 = 96 です。モデル内のいずれかの変数がカテゴリカル変数である場合、その変数の DF はカテゴリに対して作成された指標変数の個数 (カテゴリ数 – 1) です。

  • MeanSqMeanSq = SumSq/DF によって定義される平均二乗。たとえば、誤差項の平均二乗、つまり平均二乗誤差 (MSE) は 4.4831e+03/96 = 46.6991 です。

  • F — 対応する係数がゼロであるという帰無仮説を検定するための F 統計量の値。F = MeanSq/MSE によって計算されます。MSE は平均二乗誤差です。帰無仮説が真である場合、F 統計量は F 分布に従います。分子の自由度は対応する項の DF の値、分母の自由度は n - p です。この例では、各 F 統計量は F(1,96) 分布に従います。

  • pValueF 統計量の値の p 値。たとえば、Agep 値 0.5283 は、モデル内の他の項に対して 5% の有意水準では Age が有意ではないことを示します。

hospital データ セットの線形回帰モデルから要約 ANOVA 表を作成します。

hospital データ セットを読み込み、年齢および性別の関数として血圧のモデルを作成します。

load hospital
tbl = table(hospital.Age,hospital.Sex,hospital.BloodPressure(:,2), ...
    'VariableNames',{'Age','Sex','BloodPressure'});
tbl.Sex = categorical(tbl.Sex);
mdl = fitlm(tbl,'BloodPressure ~ Sex + Age^2')
mdl = 
Linear regression model:
    BloodPressure ~ 1 + Age + Sex + Age^2

Estimated Coefficients:
                   Estimate        SE        tStat       pValue  
                   _________    ________    ________    _________

    (Intercept)       63.942      19.194      3.3314    0.0012275
    Age              0.90673      1.0442     0.86837      0.38736
    Sex_Male          3.0019      1.3765      2.1808     0.031643
    Age^2          -0.011275    0.013853    -0.81389      0.41772


Number of observations: 100, Error degrees of freedom: 96
Root Mean Squared Error: 6.83
R-squared: 0.0577,  Adjusted R-Squared: 0.0283
F-statistic vs. constant model: 1.96, p-value = 0.125

モデルの要約 ANOVA 表を作成します。

tbl = anova(mdl,'summary')
tbl=7×5 table
                     SumSq     DF    MeanSq       F        pValue 
                     ______    __    ______    _______    ________

    Total            4757.8    99    48.059                       
    Model            274.73     3    91.577      1.961     0.12501
    . Linear          243.8     2     121.9     2.6103    0.078726
    . Nonlinear      30.934     1    30.934    0.66242     0.41772
    Residual         4483.1    96    46.699                       
    . Lack of fit    1483.1    39    38.028    0.72253     0.85732
    . Pure error       3000    57    52.632                       

この表には、TotalModelResidual という項のグループに対する検定が示されています。

  • Total — この行には、二乗総和 (SumSq)、自由度 (DF) および平均二乗誤差 (MeanSq) が示されています。MeanSq = SumSq/DF であることに注意してください。

  • Model — この行には、SumSqDFMeanSqF 統計量の値 (F)、および p 値 (pValue) が含まれています。このモデルには非線形項 (Age^2) が含まれているので、anova は線形項 (Age および Sex) によって説明される SumSq および非線形項 (Age^2) によって説明される SumSq という 2 つの部分に Model の二乗和 (SumSq) を分割します。対応する F 統計量は、線形項の有意性と非線形項の有意性を別々のグループとして検定するためのものです。非線形グループは Age^2 の項のみから構成されているので、成分 ANOVA 表における Age^2 の項と同じ p 値になります。

  • Residual — この行には、SumSqDFMeanSqF および pValue が含まれています。このデータ セットには反復が含まれているので、anova は残差 SumSq を反復の部分 (Pure error) と残りの部分 (Lack of fit) に分割します。anova は、不適合を検定するため、反復について計算されたモデルに依存しない分散の推定値とモデルの残差を比較することにより、F 統計量の値を計算します。この F 統計量の値は、不適合の証拠を示していません。

カテゴリカル予測子が含まれている線形回帰モデルを当てはめます。モデルの基準水準を制御するため、カテゴリカル予測子のカテゴリの順序を並べ替えます。次に、anovaを使用してカテゴリカル変数の有意性を検定します。

カテゴリカル予測子をもつモデル

carsmall データ セットを読み込み、Model_Year の関数として MPG の線形回帰モデルを作成します。数値ベクトル Model_Year をカテゴリカル変数として扱うため、名前と値のペアの引数 'CategoricalVars' を使用して予測子を指定します。

load carsmall
mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE      tStat       pValue  
                     ________    ______    ______    __________

    (Intercept)        17.69     1.0328    17.127    3.2371e-30
    Model_Year_76     3.8839     1.4059    2.7625     0.0069402
    Model_Year_82      14.02     1.4369    9.7571    8.2164e-16


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

この表示のモデル式 MPG ~ 1 + Model_Year は、次の式に対応します。

MPG=β0+β1ΙYear=76+β2ΙYear=82+ϵ,

ΙYear=76ΙYear=82 は指標変数であり、それぞれ Model_Year の値が 76 および 82 である場合に値が 1 になります。変数 Model_Year には 3 種類の値が格納されます。これは、関数 unique を使用してチェックできます。

unique(Model_Year)
ans = 3×1

    70
    76
    82

fitlm は、基準水準として Model_Year の最小値 ('70') を選択し、2 つの指標変数 ΙYear=76 および ΙYear=82 を作成します。3 つの指標変数 (各水準について 1 つ) と切片項をモデルに含めると計画行列がランク落ちとなるので、このモデルには 2 つの指標変数のみが含まれています。

すべての指標変数をもつモデル

mdl のモデル式は、3 つの指標変数があり切片項はない次のようなモデルとして解釈できます。

y=β0Ιx1=70+(β0+β1)Ιx1=76+(β0+β2)Ιx2=82+ϵ.

または、手動で指標変数を作成しモデル式を指定することにより、3 つの指標変数があり切片項はないモデルを作成できます。

temp_Year = dummyvar(categorical(Model_Year));
Model_Year_70 = temp_Year(:,1);
Model_Year_76 = temp_Year(:,2);
Model_Year_82 = temp_Year(:,3);
tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG);
mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl = 
Linear regression model:
    MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82

Estimated Coefficients:
                     Estimate      SE       tStat       pValue  
                     ________    _______    ______    __________

    Model_Year_70      17.69      1.0328    17.127    3.2371e-30
    Model_Year_76     21.574     0.95387    22.617    4.0156e-39
    Model_Year_82      31.71     0.99896    31.743    5.2234e-51


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56

モデルの基準水準の選択

カテゴリカル変数のカテゴリの順序を変更することにより、基準水準を選択できます。まず、カテゴリカル変数 Year を作成します。

Year = categorical(Model_Year);

関数categoriesを使用して、カテゴリの順序をチェックします。

categories(Year)
ans = 3x1 cell
    {'70'}
    {'76'}
    {'82'}

Year を予測子変数として使用する場合、fitlm は 1 番目のカテゴリ '70' を基準水準として選択します。関数reordercatsを使用して Year を並べ替えます。

Year_reordered = reordercats(Year,{'76','70','82'});
categories(Year_reordered)
ans = 3x1 cell
    {'76'}
    {'70'}
    {'82'}

Year_reordered の 1 番目のカテゴリは '76' です。Year_reordered の関数として MPG の線形回帰モデルを作成します。

mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 = 
Linear regression model:
    MPG ~ 1 + Model_Year

Estimated Coefficients:
                     Estimate      SE        tStat       pValue  
                     ________    _______    _______    __________

    (Intercept)       21.574     0.95387     22.617    4.0156e-39
    Model_Year_70    -3.8839      1.4059    -2.7625     0.0069402
    Model_Year_82     10.136      1.3812     7.3385    8.7634e-11


Number of observations: 94, Error degrees of freedom: 91
Root Mean Squared Error: 5.56
R-squared: 0.531,  Adjusted R-Squared: 0.521
F-statistic vs. constant model: 51.6, p-value = 1.07e-15

mdl2 は、'76' を基準水準として使用し、2 つの指標変数 ΙYear=70 および ΙYear=82 を含めます。

カテゴリカル予測子の評価

mdl2 のモデル表示には、対応する係数がゼロに等しいかどうかをテストするための p 値が各項について含まれています。各 p 値は各指標変数を検定します。カテゴリカル変数 Model_Year を指標変数のグループとして調べるには、anovaを使用します。定数項を除くモデル内の各変数の ANOVA 統計量が含まれている成分 ANOVA 表を返すため、'components' (既定の設定) オプションを使用します。

anova(mdl2,'components')
ans=2×5 table
                  SumSq     DF    MeanSq      F        pValue  
                  ______    __    ______    _____    __________

    Model_Year    3190.1     2    1595.1    51.56    1.0694e-15
    Error         2815.2    91    30.936                       

成分 ANOVA 表には変数 Model_Yearp 値が含まれており、指標変数の p 値より小さくなっています。

入力引数

すべて折りたたむ

線形回帰モデル オブジェクト。fitlm または stepwiselm を使用して作成した LinearModel オブジェクト、または compact を使用して作成した CompactLinearModel オブジェクトとして指定します。

ANOVA のタイプ。次のいずれかの値を指定します。

  • 'component'anova は、定数項を除くモデル内の各変数の ANOVA 統計量が含まれている table tbl を返します。

  • 'summary'anova は、グループ化された変数およびモデル全体の要約 ANOVA 統計量が含まれている table tbl を返します。

詳細については、出力引数 tbl の説明を参照してください。

各項の二乗和のタイプ。次の表のいずれかの値を指定します。

説明
1タイプ 1 の二乗和 — 先行する項が既に含まれている近似に項を追加した場合の残差二乗和の減少
2タイプ 2 の二乗和 — 他の項がすべて含まれているモデルに項を追加した場合の残差二乗和の減少
3タイプ 3 の二乗和 — 他の項がすべて含まれているモデル (ただし、モデルを推定可能にする通常の "シグマ制約" に従うように項の効果が制約されている) に項を追加した場合の残差二乗和の減少
'h'階層モデル — タイプ 2 に似ているが、連続的な因子とカテゴリカル因子の両方を使用して項の階層を決定

任意の項に対する二乗和は 2 つのモデルを比較することで決まります。主効果が含まれており交互作用は含まれていないモデルの場合、sstype の値は不均衡なデータに対する計算のみに影響を与えます。

2 つの因子およびそれらの交互作用をもつモデルを当てはめると仮定します。項は A、B、AB という順序で現れるとします。R(·) はモデルの残差二乗和を表すとします。したがって、R(A, B, AB) はモデル全体を当てはめた場合の残差二乗和、R(A) は A の主効果のみを当てはめた場合の残差二乗和、R(1) は平均値のみを当てはめた場合の残差二乗和です。3 種類の二乗和は次のようになります。

用語タイプ 1 の二乗和タイプ 2 の二乗和タイプ 3 の二乗和

A

R(1) – R(A)

R(B) – R(A, B)

R(B, AB) – R(A, B, AB)

B

R(A) – R(A, B)

R(A) – R(A, B)

R(A, AB) – R(A, B, AB)

AB

R(A, B) – R(A, B, AB)

R(A, B) – R(A, B, AB)

R(A, B) – R(A, B, AB)

タイプ 3 の二乗和のモデルには、シグマ制約が付されています。したがって、R(B, AB) を当てはめるとき、AB 効果の配列は B の各値について A で合計 0 となり、A の各値について B で合計 0 となります。

タイプ 3 の二乗和の場合、次のようになります。

  • mdlCompactLinearModel オブジェクトであり回帰モデルが非階層的である場合、anova はエラーを返します。

  • mdlLinearModel オブジェクトであり回帰モデルが非階層的である場合、anova は、タイプ 3 の二乗和を計算する必要があるときは常に、エフェクト コーディングを使用してモデルを再度当てはめます。

  • mdl 内の回帰モデルが階層的である場合、anova はモデルの再当てはめを行わずに結果を計算します。

sstype は、anovatype'component' である場合のみ適用されます。

出力引数

すべて折りたたむ

ANOVA の要約統計量表。table として返されます。

tbl の内容は、anovatype で指定した ANOVA のタイプによって異なります。

  • anovatype'component' である場合、定数 (切片) 項を除くモデル内の各変数の ANOVA 統計量が tbl に格納されます。この table には、各変数について以下の列が含まれています。

    説明
    SumSq

    項によって説明される二乗和。sstype に応じて計算されます。

    DF

    自由度

    • 数値変数の DF は 1 です。

    • カテゴリカル変数の DF は、カテゴリに対して作成される指標変数の個数 (カテゴリ数 - 1) です。モデル表示では各指標変数に対して 1 つの行ですが、tbl には各カテゴリカル変数に対して 1 つの行が格納されることに注意してください。カテゴリカル変数を指標変数のグループとして検定するには、anova を使用します。

    • 誤差項の DFn – p です。n は観測値の個数、p はモデル内の係数の個数です。

    MeanSq

    MeanSq = SumSq/DF によって定義される平均二乗。

    誤差項の MeanSq は平均二乗誤差 (MSE) です。

    F

    対応する係数がゼロであるという帰無仮説を検定するための F 統計量の値。F = MeanSq/MSE によって計算されます。

    帰無仮説が真である場合、F 統計量は F 分布に従います。分子の自由度は対応する項の DF の値、分母の自由度は n – p です。

    pValue

    F 統計量の値の p 値

    たとえば、成分 ANOVA 表を参照してください。

  • anovatype'summary' である場合、グループ化された項の要約統計量が tbl の各行に格納されます。この table には、'component' と同じ列および以下の行が含まれています。

    説明
    Total

    総統計

    • SumSq — 二乗総和。応答の平均に対する応答の偏差二乗和です。

    • DFModelResidual の自由度の合計

    Model

    モデル全体に対する統計

    • SumSq — モデルの二乗総和。応答の平均に対する近似値の偏差二乗和です。

    • F および pValue — 定数項のみから構成される縮退したモデルよりモデル全体の方が有意に優れているかどうかを検定するための値を提供します。

    線形項のみが mdl に含まれている場合、anovaModelLinearNonLinear に分解しません。

    Linear

    線形項の統計

    • SumSq — 線形項の二乗和。モデルの二乗和と非線形項の二乗和の差です。

    • F および pValue — 定数項のみから構成される縮退したモデルより線形項のみから構成されるモデルの方が優れているかどうかを検定するための値を提供します。anova は完全なモデルに基づく平均二乗誤差を使用してこの F 値を計算するので、非線形項を削除して検定を繰り返すことにより得られる F 値はこの行の値と同じではありません。

    Nonlinear

    非線形項の統計

    • SumSq — 非線形 (高次または交互作用) 項の二乗和。線形項のみを保持し非線形項をすべて削除した場合の残差二乗和の増加です。

    • F および pValue — 線形項のみから構成される小さいモデルより完全なモデルの方が有意に優れているかどうかを検定するための値を提供します。

    Residual

    残差の統計

    • SumSq — 残差二乗和。残差の値の二乗の合計です。

    • MeanSq — 平均二乗誤差。ModelLinear および NonLinear の F 統計量の値を計算するために使用されます。

    mdl が完全な LinearModel オブジェクトであり、標本データに反復 (同じ予測子値を共有する複数の観測値) が含まれている場合、anova は反復される観測値の二乗和 (Lack of fit) と残りの二乗和 (Pure error) に残差二乗和を分解します。

    Lack of fit

    不適合の統計

    • SumSq — 不適合による二乗和。残差の二乗和と反復の二乗和の差です。

    • F および pValue — F 統計量の値は、純粋な誤差の MeanSq に対する不適合の MeanSq の比率です。この比率は、残差の変動が反復の変動より大きいかどうかを調べることにより、バイアスの検定を提供します。小さい p 値は、モデルに項を追加すると近似が改善される可能性があることを示します。

    Pure error

    純粋な誤差の統計

    • SumSq — 反復の二乗和。予測子の値が同じである点の集合を探索し、各集合内で平均に対する偏差の二乗和を計算して、計算した値をプールすることにより得られます。

    • MeanSq — 応答の、モデルに依存しない純粋な誤差の分散の推定値。

    たとえば、要約 ANOVA 表を参照してください。

代替機能

関数 anova1anova2 および anovan を使用すると、より完全な ANOVA 統計量を入手できます。

拡張機能

バージョン履歴

R2012a で導入