কেবল পুনরুদ্ধার করতে (এবং ভবিষ্যতে ওপি হাইপারলিঙ্কগুলি ব্যর্থ হওয়ার ক্ষেত্রে) আমরা একটি ডেটাসেটের দিকে তাকিয়ে রয়েছি 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))
)। তির্যকটিতে কী রয়েছে: Q আর পচনটির অংশের কেবল "নীচে" এন্ট্রি । শুধু? ভাল, না ... দেখা যাচ্ছে যে উপরের ত্রিভুজাকার ম্যাট্রিক্সের তির্যকটিতে ম্যাট্রিক্সের ইগেনভ্যালু রয়েছে!RQR
এরপরে আমরা নিম্নলিখিত ফাংশনটিকে কল করি: raw = qr.qy(qr(X), z)
যার ফলাফলটি দুটি ক্রিয়াকলাপ দ্বারা "ম্যানুয়ালি" প্রতিলিপি করা যেতে পারে: ১. রূপটি , অর্থাৎ , কিউতে রূপান্তর করা , একটি রূপান্তর যা অর্জন করা যায় , এবং 2. বহন করে ম্যাট্রিক্সের গুণক Q z , হিসাবে রয়েছে ।Qqr(X)$qr
QQ = qr.Q(qr(X))
QzQ %*% z
গুরুতরভাবে, আর এর ইগেনাল্যুয়ু দ্বারা গুণিত করা সংবিধানের কলামের ভেক্টরগুলির অরথোগোনালটির পরিবর্তন করে না, তবে যে ইগেনভ্যালুগুলির পরম মানটি উপরের বাম থেকে নীচে ডানদিকে ক্রমকে ক্রমান্বয়ে প্রদর্শিত হবে , 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
এই ফাংশনটি "/"
প্রতিটি উপাদানকে column দ্বারা ভাগ করে ( ) কলামওয়াইজ করে ম্যাট্রিক্সকে কেবল "নরমালাইজ" করে । সুতরাং এটি দুটি ধাপে পচে যেতে পারে:(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
২. ব্যাখ্যাযোগ্য ভেরিয়েবলের স্তরের পার্থক্য ব্যাখ্যা করতে কোন বিপরীতে (কলামগুলি) উল্লেখযোগ্য অবদান রাখে?
আমরা কেবল আনোভা চালাতে পারি এবং সংক্ষিপ্তসারটি দেখতে পারি ...
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
, তাই মূল মান (পোস্টের শুরুতে কোডের তৃতীয় খণ্ড মধ্যে) নামে পুনরুত্পাদন করা যাবে যে:
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
... বা ...
... বা আরও ভাল ...
হচ্ছে লম্ব বৈপরীত্য তাদের উপাদান এর সমষ্টি শূন্য যোগ জন্য একটি 1 , ⋯ , একটি টি ধ্রুবক, এবং তাদের কোন দুটি ডট পণ্য শূন্য। আমরা যদি তাদের কল্পনা করতে পারি তবে তারা এ জাতীয় কিছু দেখতে পাবে:∑i=1tai=0a1,⋯,at
X0,X1,⋯.Xn
গ্রাফিক্যালি এটি বোঝা অনেক সহজ। বৃহত স্কোয়ার ব্ল্যাক ব্লকের গ্রুপগুলির দ্বারা প্রকৃত উপায়গুলির পূর্বাভাসিত মানগুলির সাথে তুলনা করুন এবং দেখুন যে চতুষ্কোণ এবং ঘনক বহুবর্ণের ন্যূনতম অবদানের সাথে একটি সরলরেখার সান্নিধ্যকরণ (কেবলমাত্র ধনুগুলির সাথে আনুষঙ্গিক বক্ররেখা) সর্বোত্তম কেন:
যদি কেবলমাত্র কার্যকরভাবে, আনোভা এর গুণাগুণগুলি অন্যান্য অনুমানের (চতুর্ভুজ এবং ঘনক) জন্য রৈখিক বিপরীতে এতটা বড় ছিল, এরপরে অযৌক্তিক প্লটটি প্রতিটি "অবদান" এর বহুভুজ প্লটগুলিকে আরও স্পষ্টভাবে চিত্রিত করবে:
কোডটি এখানে ।