多変量一般線形モデル
この例では、mvregress
を使用して推定の多変量一般線形モデルを設定する方法を示します。
標本データを読み込みます。
このデータには、1985 年における 205 台の輸入自動車の標本に関する測定値が含まれています。
ここでは、都市とハイウェイの MPG (列 14 と 15) の二変量応答をモデル化します。
予測子には、ホイール ベース (列 3)、車両総重量 (列 7)、燃料タイプ (列 18) を使用します。最初の 2 つの予測子は連続的で、この例ではセンタリングおよびスケーリングされています。燃料タイプは、2 つのカテゴリ (11
と 20
) を含むカテゴリカル変数であるため、回帰にはダミー指標変数が必要です。
load('imports-85')
Y = X(:,14:15);
[n,d] = size(Y);
X1 = zscore(X(:,3));
X2 = zscore(X(:,7));
X3 = X(:,18)==20;
Xmat = [ones(n,1) X1 X2 X3];
変数 X3
は、燃料タイプ 20 については 1
の値、それ以外については 0
の値を使用するようにコード化されます。
便宜上、3 つの予測子 (ホイール ベース、車両総重量、燃料タイプのインジケーター) を 1 つの計画行列に結合し、1 つの切片項を追加します。
計画行列を設定する。
これらの予測子が与えられると、二変量 MPG 応答の多変量一般線形モデルは次のようになります。
ここで、 です。合計で 個の回帰係数があります。
mvregress
で使用するため、2 行 8 列 (d 行 K 列) の行列から構成される長さ の cell 配列を作成します。cell 配列の i
番目の行列は次のようになります。
Xcell = cell(1,n); for i = 1:n Xcell{i} = [kron([Xmat(i,:)],eye(d))]; end
この仕様の計画行列の場合、対応するパラメーター ベクトルは次のようになります。
回帰係数を推定する。
最尤推定法を使用してモデルを当てはめます。
[beta,sigma,E,V] = mvregress(Xcell,Y); beta
beta = 8×1
33.5476
38.5720
0.9723
0.3950
-6.3064
-6.3584
-9.2284
-8.6663
これらの係数推定では、以下が示されます。
平均ホイール ベース、車両総重量および燃料タイプ 11 の車両に対して予想される MPG は、都市とハイウェイでそれぞれ
33.5
および38.6
です。燃料タイプ 20 の場合、予想される MPG は都市とハイウェイで33.5476 - 9.2284 = 24.3192
および38.5720 - 8.6663 = 29.9057
です。車両総重量の標準偏差が 1 増加すると、予想される MPG に対して都市とハイウェイでほぼ同じ影響があります。他のすべてが等しいと仮定すると、都市とハイウェイの両方における MPG に関して、予想される MPG は車両総重量の標準偏差が 1 増加するたびに約
6.3
減少します。他のすべてが等しい場合、ホイール ベースの標準偏差が 1 増加するたびに、都市の予想される MPG は
0.972
増加しますが、ハイウェイの予想される MPG は0.395
だけ増加します。
標準誤差の計算
回帰係数の標準誤差は、この分散共分散行列 V
の対角の平方根になります。
se = sqrt(diag(V))
se = 8×1
0.7365
0.7599
0.3589
0.3702
0.3497
0.3608
0.7790
0.8037
係数行列の形状の変更
回帰係数は元の 4 行 2 列の行列の形状に簡単に変更することができます。
B = reshape(beta,2,4)'
B = 4×2
33.5476 38.5720
0.9723 0.3950
-6.3064 -6.3584
-9.2284 -8.6663
モデルの仮定をチェックする。
モデルの仮定では、 は独立しており、二変量標準正規分布に従います。この 2 次元の例では、散布図を使用してこの仮定の有効性を評価できます。
z = E/chol(sigma); figure() plot(z(:,1),z(:,2),'.') title('Standardized Residuals') hold on % Overlay standard normal contours z1 = linspace(-5,5); z2 = linspace(-5,5); [zx,zy] = meshgrid(z1,z2); zgrid = [reshape(zx,100^2,1),reshape(zy,100^2,1)]; zn = reshape(mvnpdf(zgrid),100,100); [c,h] = contour(zx,zy,zn); clabel(c,h)
いくつかの残差が予想よりも大きくても、全体としては、多変量正規性の仮定に対する証拠はほとんどありません。