要約するために(そして将来、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つの異なるレベルがあるため、コントラストがあります。n−1=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
⎡⎣⎢⎢⎢⎢1111−1.5−0.50.51.52.250.250.252.25−3.375−0.1250.1253.375⎤⎦⎥⎥⎥⎥
そこで何が起こった?outer(a, b, "^")
要素上げるa
の要素にはb
、その結果、事業からの最初の列結果、、と。、、およびの2列目。3番目の、、および ; 4番目の、、(− 0.5 )0 0.5 0 1.5 0(− 1.5 )1(− 0.5 )1 0.5 1 1.5 1(− 1.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
⎡⎣⎢⎢⎢⎢−20.50.50.50−2.2360.4470.894−2.502−0.92960−4.5840−1.342⎤⎦⎥⎥⎥⎥
...対角線のみを保存します(z = c_Q * (row(c_Q) == col(c_Q))
)。対角線にあるもの:分解の部分の「ボトム」エントリのみ。ただ?まあ、いや...上三角行列の対角線が行列の固有値を含むことがわかります!Q RRQR
次の我々は次の関数を呼び出す:raw = qr.qy(qr(X), z)
二つの操作で「手動」に複製することができ、その結果:1.のコンパクト形旋削、すなわちに、を用いて達成することができる形質転換、および実行2行列の乗算のように、。Q Q zQqr(X)$qr
QQ = 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.x2i−−−−−−−√(i) apply(raw, 2, function(x)sqrt(sum(x^2)))
2 2.236 2 1.341
(ii)(i)
この時点で、列ベクトルは正規直交基底を形成し、切片となる最初の列を取り除き、結果を再現しました。R4contr.poly(4)
⎡⎣⎢⎢⎢⎢−0.6708204−0.22360680.22360680.67082040.5−0.5−0.50.5−0.22360680.6708204−0.67082040.2236068⎤⎦⎥⎥⎥⎥
この行列の列は、およびで示されるように、正規直交です(たとえば、行についても同様です)。そして、各列は、最初のをそれぞれ乗、乗、乗、つまりlinear、quadratic、cubicに上げた結果です。(sum(Z[,3]^2))^(1/4) = 1
z[,3]%*%z[,4] = 0
scores - 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
... readcat
onの線形効果があることを確認する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次)の線形コントラストに対して同じ大きさであった場合、以下の無意味なプロットは各「寄与」の多項式プロットをより明確に示します。
コードはこちらです。