回帰の多項式対比


17

回帰フィッティングにおける多項式コントラストの使用法を理解できません。特に、このページRで説明されている間隔変数(等間隔のレベルを持つ順序変数)を表現するために使用されるエンコーディングを参照しています

そのページの例で、私が正しく理解していれば、Rは区間変数のモデルに適合し、線形、二次、または三次の傾向に重みを付けるいくつかの係数を返します。したがって、近似モデルは次のようになります。

write=52.7870+14.2587X0.9680X20.1554X3,

ここで、値取るべき、、、または間隔変数の異なるレベルに応じ。X1234

これは正しいです?そして、もしそうなら、多項式対比の目的は何でしたか?


7
いいえ、これらの係数は直交多項式項用です。未加工の多項式項のモデルを作成しました。、、およびそれぞれ、、および値に置き換えます(ルックアップテーブルから)。XX2X3LQC
Scortchi -復活モニカ

1
@Scortchi様、ご返事ありがとうございます。私はあなたの言うことを理解しようと思いますが、これらの直交多項式項がどのように機能するかを正直に理解していませんでした。:P
ピッポ14年

1
表記上の問題として、あなたが持っているものは完全に適合したモデルではありません。書き込みの巨大な「帽子」(またはE [write])が必要です。これは、書き込みの予測値または書き込みの期待値を意味します。または、最後に「+ e」が必要です。
GUNG -復活モニカ

@Scortchi「ルックアップテーブル」とは何ですか、またはどのようにして見つけることができますか?
アントニ・パレラダ16

2
@AntoniParellada:それはにリンクされているOPページで、テーブルのats.ucla.edu/stat/r/library/contrast_coding.htm#ORTHOGONAL。&contr.polyRで一緒に
Scortchi-モニカの復職

回答:


29

要約するために(そして将来、OPハイパーリンクが失敗する場合に)、データセットhsb2を次のように見ています:

   id     female race ses schtyp prog read write math science socst
1  70        0    4   1      1    1   57    52   41      47    57
2 121        1    4   2      1    3   68    59   53      63    61
...
199 118      1    4   2      1    1   55    62   58      58    61
200 137      1    4   3      1    2   63    65   65      53    61

ここでインポートできます

変数readを順序付け/順序変数に変換します:

hsb2$readcat<-cut(hsb2$read, 4, ordered = TRUE)
(means = tapply(hsb2$write, hsb2$readcat, mean))
 (28,40]  (40,52]  (52,64]  (64,76] 
42.77273 49.97849 56.56364 61.83333 

これで、通常のANOVAを実行するように設定されました。はい、Rです。基本的に、連続従属変数write、および複数レベルの説明変数がありますreadcat。Rで使用できますlm(write ~ readcat, hsb2)


1.コントラストマトリックスの生成:

順序変数readcatには4つの異なるレベルがあるため、コントラストがあります。n1=3

table(hsb2$readcat)

(28,40] (40,52] (52,64] (64,76] 
     22      93      55      30 

まず、お金を求めて、組み込みのR関数を見てみましょう。

contr.poly(4)
             .L   .Q         .C
[1,] -0.6708204  0.5 -0.2236068
[2,] -0.2236068 -0.5  0.6708204
[3,]  0.2236068 -0.5 -0.6708204
[4,]  0.6708204  0.5  0.2236068

それでは、内部で何が起こっているのかを分析しましょう。

scores = 1:4  # 1 2 3 4 These are the four levels of the explanatory variable.
y = scores - mean(scores) # scores - 2.5

y=[1.5,0.5,0.5,1.5]

seq_len(n) - 1=[0,1,2,3]

n = 4; X <- outer(y, seq_len(n) - 1, "^") # n = 4 in this case

[11.52.253.37510.50.250.12510.50.250.12511.52.253.375]

そこで何が起こった?outer(a, b, "^")要素上げるaの要素にはb、その結果、事業からの最初の列結果、、と。、、およびの2列目。3番目の、、および ; 4番目の、、0.5 0 0.5 0 1.5 01.5 10.5 1 0.5 1 1.5 11.5 2 = 2.25 0.5 2 = 0.25 0.5 2 = 0.25 1.5 2 = 2.25 1.5 3 = 3.375(1.5)0(0.5)00.501.50(1.5)1(0.5)10.511.51(1.5)2=2.25(0.5)2=0.250.52=0.251.52=2.25(1.5)3=3.3750.5 3 = 0.125 1.5 3 = 3.375(0.5)3=0.1250.53=0.125と。1.53=3.375

次に、この行列の正規直交分解を行い、Q()のコンパクトな表現を取得します。ここでこのポストで使用されるRのQR分解で使用される関数の内部動作のいくつかをさらに説明しますQRc_Q = qr(X)$qr

[202.500.52.23604.5840.50.447200.50.8940.92961.342]

...対角線のみを保存します(z = c_Q * (row(c_Q) == col(c_Q)))。対角線にあるもの:分解の部分の「ボトム」エントリのみ。ただ?まあ、いや...上三角行列の対角線が行列の固有値を含むことがわかります!Q RRQR

次の我々は次の関数を呼び出す:raw = qr.qy(qr(X), z)二つの操作で「手動」に複製することができ、その結果:1.のコンパクト形旋削、すなわちに、を用いて達成することができる形質転換、および実行2行列の乗算のように、。Q Q zQqr(X)$qrQQ = qr.Q(qr(X))QzQ %*% z

重要なことに、に固有値を乗算しても、構成列ベクトルの直交性は変わりませんが、固有値の絶対値が左上から右下にでと、の乗算は高次の多項式列の値を減らすには:R Q zQRQz

Matrix of Eigenvalues of R
     [,1]      [,2] [,3]      [,4]
[1,]   -2  0.000000    0  0.000000
[2,]    0 -2.236068    0  0.000000
[3,]    0  0.000000    2  0.000000
[4,]    0  0.000000    0 -1.341641

分解操作の前後で、影響を受けていない最初の2列と、後の列ベクトル(2次および3次)の値を比較します。QR

Before QR factorization operations (orthogonal col. vec.)
     [,1] [,2] [,3]   [,4]
[1,]    1 -1.5 2.25 -3.375
[2,]    1 -0.5 0.25 -0.125
[3,]    1  0.5 0.25  0.125
[4,]    1  1.5 2.25  3.375


After QR operations (equally orthogonal col. vec.)
     [,1] [,2] [,3]   [,4]
[1,]    1 -1.5    1 -0.295
[2,]    1 -0.5   -1  0.885
[3,]    1  0.5   -1 -0.885
[4,]    1  1.5    1  0.295

最後に(Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))、マトリックスraw正規直交ベクトルに変換することを呼び出します。

Orthonormal vectors (orthonormal basis of R^4)
     [,1]       [,2] [,3]       [,4]
[1,]  0.5 -0.6708204  0.5 -0.2236068
[2,]  0.5 -0.2236068 -0.5  0.6708204
[3,]  0.5  0.2236068 -0.5 -0.6708204
[4,]  0.5  0.6708204  0.5  0.2236068

この関数は、"/"各要素をごとに分割することにより、単純に行列を「正規化」し。したがって、2つのステップで分解できます:、その結果、各列の分母であり、列のすべての要素は。col.xi2(i) apply(raw, 2, function(x)sqrt(sum(x^2)))2 2.236 2 1.341(ii)(i)

この時点で、列ベクトルは正規直交基底を形成し、切片となる最初の列を取り除き、結果を再現しました。R4contr.poly(4)

[0.67082040.50.22360680.22360680.50.67082040.22360680.50.67082040.67082040.50.2236068]

この行列の列は、およびで示されるように、正規直交です(たとえば、行についても同様です)。そして、各列は、最初のをそれぞれ乗、乗、乗、つまりlinear、quadratic、cubicに上げた結果です。(sum(Z[,3]^2))^(1/4) = 1z[,3]%*%z[,4] = 0scores - mean123


2.説明変数のレベル間の違いを説明するのに、どのコントラスト(列)が大きく貢献していますか?

ANOVAを実行して概要を見るだけです...

summary(lm(write ~ readcat, hsb2))

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  52.7870     0.6339  83.268   <2e-16 ***
readcat.L    14.2587     1.4841   9.607   <2e-16 ***
readcat.Q    -0.9680     1.2679  -0.764    0.446    
readcat.C    -0.1554     1.0062  -0.154    0.877 

... readcatonの線形効果があることを確認するwriteため、元の値(投稿の冒頭のコードの3番目のチャンク)は次のように再現できます。

coeff = coefficients(lm(write ~ readcat, hsb2))
C = contr.poly(4)
(recovered = c(coeff %*% c(1, C[1,]),
               coeff %*% c(1, C[2,]),
               coeff %*% c(1, C[3,]),
               coeff %*% c(1, C[4,])))
[1] 42.77273 49.97849 56.56364 61.83333

...または...

ここに画像の説明を入力してください

...またははるかに良い...

ここに画像の説明を入力してください

ある直交対比それらの成分の合計がゼロに追加ため定数、およびそれらのいずれか2つのドット積がゼロです。それらを視覚化できれば、次のようになります。i=1tai=0a1,,at

ここに画像の説明を入力してください

直交コントラストの背後にある考え方は、抽出できる推論(この場合、線形回帰による係数の生成)は、データの独立した側面の結果になるというものです。を単純に使用した場合、これは当てはまりません対比としての。X0,X1,.Xn

グラフィカルに、これは理解しやすいです。大きな正方形の黒いブロックのグループによる実際の平均を予測値と比較し、2次および3次多項式の寄与が最小の直線近似(曲線は黄土のみで近似される)が最適である理由を確認します。

ここに画像の説明を入力してください

事実上、ANOVAの係数が他の近似(2次および3次)の線形コントラストに対して同じ大きさであった場合、以下の無意味なプロットは各「寄与」の多項式プロットをより明確に示します。

ここに画像の説明を入力してください

コードはこちらです。


+1うわー。この回答(これまで最後まで読んでいませんでした)を、古い忘れられた質問に対する回答とみなすことはできますstats.stackexchange.com/q/63639/3277
ttnphns

(+1)@ttnphns:間違いなくそこに収まるでしょう。
Scortchi -復活モニカ

ちょっとしたヒント:ここへのリンクを付けてコメントしてください。またはそこに答えを出す-私はそれを受け入れる可能性があります。
ttnphns

1
@ttnphnsと@Scortchiありがとうございます!私はこれらの概念を理解しようとかなりの時間を費やしましたが、あまり反応を期待していませんでした。とてもポジティブな驚きです。qr.qy()機能を説明する上で、いくつかのしわがあると思いますが、時間があればすぐに、あなたの質問について最小限の首尾一貫した何かを言うことができるかどうかを確認しようとします。
アントニ・パレラダ

1
@Elvis良い要約文を選択して、投稿のどこかに配置しようとしました。これは良い点だと思いますし、素晴らしい数学的な説明が必要ですが、この時点ではさらに詳しく説明するには多すぎるかもしれません。
アントニ・パレラダ

5

あなたの例を使用して、それがどのように機能するかを説明します。4つのグループで多項式コントラストを使用すると、次のようになります。

Ewrite1=μ0.67L+0.5Q0.22CEwrite2=μ0.22L0.5Q+0.67CEwrite3=μ+0.22L0.5Q0.67CEwrite4=μ+0.67L+0.5Q+0.22C

最初の方程式が最低の読書スコアのグループに対して機能し、4番目の方程式が最高の読書スコアのグループに対して機能する場合。これらの方程式を通常の線形回帰を使用して与えられた方程式と比較できます(が連続していると仮定)readi

Ewritei=μ+readiL+readi2Q+readi3C

通常の代わりに、君は持っているだろうし、第1の位置に書き込まれます。しかし、この記述は、多項式対比の記述に似ています。したがって、前の数字は実際には代わりにます。前の係数には線形トレンドがあり、 2次および 3 次の前に係数があることがわかります。L,Q,Cβ1,β2,β3L,Q,Creadi,readi2,readi3LQC

次に、Rはパラメーターを 推定し ます。および推定係数は、通常の線形回帰の推定値のようなものです。したがって、出力から、推定係数がゼロと著しく異なるかどうかを確認できるため、何らかの線形、二次、または三次の傾向を予測できます。μ = 52.79 L = 14.26 Q = - 0.97 C = - 0.16 μ = 1μ,L,Q,C

μ^=52.79,L^=14.26,Q^=0.97,C^=0.16
μLQCをμ^=14i=14Ewriteiμ^,L^,Q^,C^

その例では、のみが著しく非ゼロです。したがって、あなたの結論は次のようになります:筆記におけるより良いスコアリングは読解スコアに直線的に依存することがわかりますが、有意な二次効果や三次効果はありません。L^

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.