anova
線形回帰モデルの分散分析
説明
例
成分 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) です。MeanSq
—MeanSq = SumSq/DF
によって定義される平均二乗。たとえば、誤差項の平均二乗、つまり平均二乗誤差 (MSE) は 4.4831e+03/96 = 46.6991 です。F
— 対応する係数がゼロであるという帰無仮説を検定するための F 統計量の値。F = MeanSq/MSE
によって計算されます。MSE
は平均二乗誤差です。帰無仮説が真である場合、F 統計量は F 分布に従います。分子の自由度は対応する項のDF
の値、分母の自由度は n - p です。この例では、各 F 統計量は 分布に従います。pValue
— F 統計量の値の p 値。たとえば、Age
の p 値 0.5283 は、モデル内の他の項に対して 5% の有意水準ではAge
が有意ではないことを示します。
要約 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,'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
この表には、Total
、Model
、Residual
という項のグループに対する検定が示されています。
Total
— この行には、二乗総和 (SumSq
)、自由度 (DF
) および平均二乗誤差 (MeanSq
) が示されています。MeanSq = SumSq/DF
であることに注意してください。Model
— この行には、SumSq
、DF
、MeanSq
、F 統計量の値 (F
)、および p 値 (pValue
) が含まれています。このモデルには非線形項 (Age^2
) が含まれているので、anova
は線形項 (Age
およびSex
) によって説明されるSumSq
および非線形項 (Age^2
) によって説明されるSumSq
という 2 つの部分にModel
の二乗和 (SumSq
) を分割します。対応する F 統計量は、線形項の有意性と非線形項の有意性を別々のグループとして検定するためのものです。非線形グループはAge^2
の項のみから構成されているので、成分 ANOVA 表におけるAge^2
の項と同じ p 値になります。Residual
— この行には、SumSq
、DF
、MeanSq
、F
および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
は、次の式に対応します。
,
と は指標変数であり、それぞれ Model_Year
の値が 76 および 82 である場合に値が 1 になります。変数 Model_Year
には 3 種類の値が格納されます。これは、関数 unique
を使用してチェックできます。
unique(Model_Year)
ans = 3×1
70
76
82
fitlm
は、基準水準として Model_Year
の最小値 ('70'
) を選択し、2 つの指標変数 および を作成します。3 つの指標変数 (各水準について 1 つ) と切片項をモデルに含めると計画行列がランク落ちとなるので、このモデルには 2 つの指標変数のみが含まれています。
すべての指標変数をもつモデル
mdl
のモデル式は、3 つの指標変数があり切片項はない次のようなモデルとして解釈できます。
.
または、手動で指標変数を作成しモデル式を指定することにより、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 つの指標変数 および を含めます。
カテゴリカル予測子の評価
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_Year
の p 値が含まれており、指標変数の p 値より小さくなっています。
入力引数
mdl
— 線形回帰モデル オブジェクト
LinearModel
オブジェクト | CompactLinearModel
オブジェクト
線形回帰モデル オブジェクト。fitlm
または stepwiselm
を使用して作成した LinearModel
オブジェクト、または compact
を使用して作成した CompactLinearModel
オブジェクトとして指定します。
sstype
— 二乗和のタイプ
'h'
(既定値) | 1
| 2
| 3
各項の二乗和のタイプ。次の表のいずれかの値を指定します。
値 | 説明 |
---|---|
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 の二乗和の場合、次のようになります。
mdl
がCompactLinearModel
オブジェクトであり回帰モデルが非階層的である場合、anova
はエラーを返します。mdl
がLinearModel
オブジェクトであり回帰モデルが非階層的である場合、anova
は、タイプ 3 の二乗和を計算する必要があるときは常に、エフェクト コーディングを使用してモデルを再度当てはめます。mdl
内の回帰モデルが階層的である場合、anova
はモデルの再当てはめを行わずに結果を計算します。
sstype
は、anovatype
が 'component'
である場合のみ適用されます。
出力引数
tbl
— ANOVA の要約統計量表
table
ANOVA の要約統計量表。table として返されます。
tbl
の内容は、anovatype
で指定した ANOVA のタイプによって異なります。
anovatype
が'component'
である場合、定数 (切片) 項を除くモデル内の各変数の ANOVA 統計量がtbl
に格納されます。この table には、各変数について以下の列が含まれています。列 説明 SumSq
項によって説明される二乗和。
sstype
に応じて計算されます。DF
自由度
数値変数の
DF
は 1 です。カテゴリカル変数の
DF
は、カテゴリに対して作成される指標変数の個数 (カテゴリ数 - 1) です。モデル表示では各指標変数に対して 1 つの行ですが、tbl
には各カテゴリカル変数に対して 1 つの行が格納されることに注意してください。カテゴリカル変数を指標変数のグループとして検定するには、anova
を使用します。誤差項の
DF
は n – 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
— 二乗総和。応答の平均に対する応答の偏差二乗和です。DF
—Model
とResidual
の自由度の合計
Model
モデル全体に対する統計
SumSq
— モデルの二乗総和。応答の平均に対する近似値の偏差二乗和です。F
およびpValue
— 定数項のみから構成される縮退したモデルよりモデル全体の方が有意に優れているかどうかを検定するための値を提供します。
線形項のみが
mdl
に含まれている場合、anova
はModel
をLinear
とNonLinear
に分解しません。Linear
線形項の統計
SumSq
— 線形項の二乗和。モデルの二乗和と非線形項の二乗和の差です。F
およびpValue
— 定数項のみから構成される縮退したモデルより線形項のみから構成されるモデルの方が優れているかどうかを検定するための値を提供します。anova
は完全なモデルに基づく平均二乗誤差を使用してこの F 値を計算するので、非線形項を削除して検定を繰り返すことにより得られる F 値はこの行の値と同じではありません。
Nonlinear
非線形項の統計
SumSq
— 非線形 (高次または交互作用) 項の二乗和。線形項のみを保持し非線形項をすべて削除した場合の残差二乗和の増加です。F
およびpValue
— 線形項のみから構成される小さいモデルより完全なモデルの方が有意に優れているかどうかを検定するための値を提供します。
Residual
残差の統計
SumSq
— 残差二乗和。残差の値の二乗の合計です。MeanSq
— 平均二乗誤差。Model
、Linear
および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 表を参照してください。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2012a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)