बस पुनरावृत्ति करने के लिए (और यदि ओपी हाइपरलिंक भविष्य में विफल हो जाता है), हम एक डेटासेट 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
अब हम पूरी तरह से तैयार सिर्फ एक नियमित रूप से एनोवा चलाने के लिए कर रहे हैं - हाँ, यह अनुसंधान है, और हम मूल रूप से एक सतत निर्भर चर, है write
, और एक व्याख्यात्मक कई स्तरों के साथ चर, readcat
। आर में हम उपयोग कर सकते हैंlm(write ~ readcat, hsb2)
1. विपरीत मैट्रिक्स उत्पन्न करना:
आदेशित चर के चार अलग-अलग स्तर हैं readcat
, इसलिए हमारे पास विरोधाभास होंगे।n−1=3
table(hsb2$readcat)
(28,40] (40,52] (52,64] (64,76]
22 93 55 30
सबसे पहले, पैसे के लिए चलते हैं, और अंतर्निहित आर फ़ंक्शन पर एक नज़र डालें:
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
, ताकि संचालन से पहला स्तंभ परिणाम हो, , ( - 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 से(−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.25 और 1.5 2 = 2.25 ; और चौथा, ( - 1.5 ) 3 = - 3.375 , ( - 0.5 ) 3 = - 0.125 , 0.5 3 = 0.125 और 1.5 3 = 3.375 ।(−0.5)2=0.250.52=0.251.52=2.25(−1.5)3=−3.375(−0.5)3=−0.1250.53=0.1251.53=3.375
इसके बाद हम इस मैट्रिक्स का एक orthonormal अपघटन करते हैं और Q ( ) का कॉम्पैक्ट प्रतिनिधित्व करते हैं । इस पोस्ट में इस्तेमाल किए गए आर में क्यूआर फैक्टराइजेशन में उपयोग किए जाने वाले कार्यों के कुछ आंतरिक कामकाज को आगे यहां बताया गया है ।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))
)। विकर्ण में क्या निहित है: क्यू आर अपघटन के भाग के "नीचे" प्रविष्टियां । बस? खैर, नहीं ... यह पता चला है कि एक ऊपरी त्रिकोणीय मैट्रिक्स के विकर्ण में मैट्रिक्स के आइगेनवेल्यूज़ होते हैं!RQR
अगला हम निम्नलिखित फ़ंक्शन को कॉल करें: raw = qr.qy(qr(X), z)
, जिसके परिणामस्वरूप "मैन्युअल" दो आपरेशन द्वारा भी दोहराया जा सकता है: 1. का संक्षिप्त रूप टर्निंग , यानी , में क्यू , एक परिवर्तन के साथ प्राप्त किया जा सकता है, और 2. बाहर ले जाने मैट्रिक्स गुणन Q z , जैसा कि में है ।Qqr(X)$qr
QQ = qr.Q(qr(X))
QzQ %*% z
महत्वपूर्ण रूप से, R के eigenvalues द्वारा को गुणा करने से घटक कॉलम वैक्टर की ऑर्थोगोनलिटी में परिवर्तन नहीं होता है, लेकिन यह देखते हुए कि eigenvalues का निरपेक्ष मान शीर्ष क्रम से ऊपर बाएं से दाएं दाईं ओर घटते क्रम में दिखाई देता है, Q z का गुणन घटने की ओर बढ़ जाएगा उच्च क्रम बहुपद स्तंभों में मान:QRQz
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
गुणन क्रियाओं के पहले और बाद के और बाद के अप्रभावित पहले दो स्तंभों के बाद के स्तंभ वैक्टर (द्विघात और घन) में मानों की तुलना करें ।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
इस समारोह बस विभाजित (द्वारा मैट्रिक्स "को सामान्य" "/"
) द्वारा प्रत्येक तत्व columnwise । तो इसे दो चरणों में विघटित किया जा सकता है:(i), जिसके परिणामस्वरूप, प्रत्येक स्तंभ के लिए हर(जो)में(ii)हर स्तंभ मेंप्रत्येक तत्व को(i)के संबंधित मान से विभाजित किया जाता है।∑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⎤⎦⎥⎥⎥⎥
इस मैट्रिक्स के कॉलम हैं ऑर्थोनॉर्मल हैं , जैसा कि इसके द्वारा दिखाया जा सकता है (sum(Z[,3]^2))^(1/4) = 1
और z[,3]%*%z[,4] = 0
, उदाहरण के लिए (संयोग से वही पंक्तियों के लिए जाता है)। और, प्रत्येक स्तंभ प्रारंभिक ऊपर उठाने का परिणाम है करने के लिए 1 -ST, 2 -nd और 3 यानी - -rd शक्ति क्रमश: रैखिक, द्विघात और घन ।scores - mean123
2. व्याख्यात्मक चर में स्तरों के बीच अंतर को समझाने के लिए कौन से विरोधाभासी (स्तंभ) महत्वपूर्ण योगदान देते हैं?
हम सिर्फ एनोवा को चला सकते हैं और सारांश देख सकते हैं ...
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
पर write
है, तो मूल मानों (पोस्ट की शुरुआत में कोड के तीसरे खंड में) के रूप में reproduced किया जा सकता है कि:
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
... और ...
... या बहुत बेहतर ...
होने के नाते ओर्थोगोनल विरोधाभासों उनके घटकों का योग शून्य करने के लिए कहते हैं ∑i=1tai=0 के लिए स्थिरांक, और उनमें से किसी भी दो के बिंदु गुणनफल शून्य है। अगर हम उनकी कल्पना कर सकें तो वे कुछ इस तरह दिखेंगे:a1,⋯,at
ऑर्थोगोनल कॉन्ट्रास्ट के पीछे का विचार यह है कि हम जो एक्सट्रैक्ट (एक रेखीय रिग्रेशन के माध्यम से गुणांक पैदा करने वाले इस मामले में) कर सकते हैं, डेटा के स्वतंत्र पहलुओं का परिणाम होगा। अगर हम बस इस्तेमाल करते हैं तो ऐसा नहीं होगाX0,X1,⋯.Xn
आलेखीय रूप से, यह समझना बहुत आसान है। बड़े वर्ग ब्लैक ब्लॉक्स में समूहों द्वारा वास्तविक साधनों की तुलना अनुमानित मूल्यों से करें, और देखें कि द्विघात और घन बहुपद के न्यूनतम योगदान के साथ एक सीधी रेखा सन्निकटन (केवल घट के साथ सन्निहित वक्रों के साथ) इष्टतम है:
यदि, प्रभाव के लिए, एनोवा के गुणांक अन्य सन्निकटन (द्विघात और घन) के लिए रैखिक विपरीत के लिए बड़े थे, निरर्थक साजिश जो इस प्रकार है कि प्रत्येक "योगदान" के बहुपद भूखंडों को स्पष्ट रूप से चित्रित किया जाएगा:
कोड यहाँ है ।