Tương phản đa thức cho hồi quy


17

Tôi không thể hiểu việc sử dụng các tương phản đa thức trong điều chỉnh hồi quy. Cụ thể, tôi đang đề cập đến một mã hóa được sử dụng Rđể thể hiện một biến khoảng (biến thứ tự với các mức cách đều nhau), được mô tả tại trang này .

Trong ví dụ của trang đó , nếu tôi hiểu chính xác, R phù hợp với một mô hình cho một biến khoảng, trả về một số hệ số có trọng số theo xu hướng tuyến tính, bậc hai hoặc khối của nó. Do đó, mô hình được trang bị nên:

wrTôite= =52,7870+14,2587X-0,9680X2-0.1554X3,

Trong đó nên lấy các giá trị , , hoặc theo mức độ khác nhau của biến khoảng.1 2 3 4X1234

Điều này có đúng không? Và, nếu vậy, mục đích của sự tương phản đa thức là gì?


7
Không, các hệ số này dành cho các thuật ngữ đa thức trực giao : bạn đã viết mô hình cho các thuật ngữ đa thức thô . Thay thế X , X2 , & X3 bằng các giá trị L , Q , & C tương ứng (từ bảng tra cứu).
Scortchi - Phục hồi Monica

1
Kính gửi @Scortchi, cảm ơn bạn đã trả lời. Tôi đoán để hiểu ý của bạn, nhưng sau đó tôi đã không thành thật hiểu cách các thuật ngữ đa thức trực giao này hoạt động như thế nào. : P
Pippo

1
Là một vấn đề công chứng, những gì bạn có không phải là mô hình được trang bị. Bạn có thể cần một 'chiếc mũ' khổng lồ hơn ghi (hoặc E [write]), có nghĩa là giá trị dự đoán của ghi hoặc giá trị dự kiến ​​của ghi; hoặc bạn cần một '+ e' ở cuối để chỉ ra phần dư.
gung - Tái lập Monica

@Scortchi Bạn có thể tìm thấy "bảng tra cứu" là gì hoặc làm thế nào?
Antoni Parellada

2
@AntoniParellada: Đây là bảng trong trang mà OP liên kết đến: ats.ucla.edu/stat/r/l Library / contrast_coding.htmlm # ORTHOGONAL . & đã nhận được contr.polytrong R.
Scortchi - Tái lập Monica

Câu trả lời:


29

Chỉ cần tóm tắt lại (và trong trường hợp các siêu liên kết OP thất bại trong tương lai), chúng tôi đang xem xét một bộ dữ liệu hsb2như sau:

   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

có thể được nhập khẩu ở đây .

Chúng tôi biến biến readthành và biến thứ tự / thứ tự:

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 

Bây giờ tất cả chúng ta đã sẵn sàng để chạy ANOVA thông thường - vâng, đó là R và về cơ bản chúng ta có một biến phụ thuộc liên tục writevà một biến giải thích với nhiều cấp độ , readcat. Trong R chúng ta có thể sử dụnglm(write ~ readcat, hsb2)


1. Tạo ma trận tương phản:

Có bốn cấp độ khác nhau cho biến được đặt hàng readcat, vì vậy chúng tôi sẽ có độ tương phản.n-1= =3

table(hsb2$readcat)

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

Trước tiên, hãy kiếm tiền và xem chức năng R tích hợp:

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

Bây giờ hãy mổ xẻ những gì đã diễn ra dưới mui xe:

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

[1-1,52,25-3.3751-0,50,25-0,12510,50,250,12511,52,253.375]

Chuyện gì đã xảy ra ở đó? các outer(a, b, "^")phần tử tăng các phần atử của b, để cột đầu tiên kết quả từ các hoạt động, , ( - 0,5 ) 0 , 0,5 01,5 0 ; cột thứ hai từ ( - 1,5 ) 1 , ( - 0,5 ) 1 , 0,5 11,5 1 ; thứ ba từ ( - 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,251,5 2 = 2,25 ; và thứ tư, ( - 1,5 ) 3 = - 3,375 , ( - 0,5 ) 3 = - 0,125 , 0,5 3 = 0,1251,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

Tiếp theo, chúng ta thực hiện phân rã trực giao của ma trận này và lấy biểu diễn nhỏ gọn của Q ( ). Một số hoạt động bên trong của các chức năng được sử dụng trong nhân tố QR trong R được sử dụng trong bài viết này được giải thích thêm ở đây .QRc_Q = qr(X)$qr

[-20-2,500,5-2.2360-4.5840,50,447200,50,894-0,9296-1.342]

... trong đó chúng ta chỉ lưu đường chéo ( z = c_Q * (row(c_Q) == col(c_Q))). Những gì nằm trong đường chéo: Chỉ là các mục "dưới cùng" của phần của phân tách Q R. Chỉ? tốt, không ... Hóa ra đường chéo của ma trận tam giác trên chứa các giá trị riêng của ma trận!RQR

Tiếp theo, chúng ta gọi hàm sau : raw = qr.qy(qr(X), z), kết quả có thể được sao chép "thủ công" bằng hai thao tác: 1. Biến dạng rút gọn của , tức là thành Q , một phép biến đổi có thể đạt được và 2. Thực hiện nhân ma trận Q z , như trong .Qqr(X)$qrQQ = qr.Q(qr(X))QzQ %*% z

Điều quan trọng, nhân với các giá trị riêng của R không làm thay đổi tính trực giao của các vectơ cột cấu thành, nhưng với giá trị tuyệt đối của các giá trị riêng xuất hiện theo thứ tự giảm dần từ trên trái sang dưới phải, phép nhân của Q z sẽ có xu hướng giảm các giá trị trong các cột đa thức bậc cao: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

So sánh các giá trị trong các vectơ cột sau (bậc hai và khối) trước và sau các hoạt động nhân tố và với hai cột đầu tiên không bị ảnh hưởng.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

Cuối cùng, chúng ta gọi (Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))biến ma trận rawthành một vectơ trực giao :

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

Chức năng này đơn giản là "bình thường hóa" ma trận bằng cách chia ( "/") theo cột mỗi phần tử của . Vì vậy, nó có thể được phân tách theo hai bước:(i), dẫn đến, đó là mẫu số cho mỗi cột trong(ii)trong đó mọi phần tử trong một cột được chia cho giá trị tương ứng của(i).Σcol.xTôi2(Tôi) apply(raw, 2, function(x)sqrt(sum(x^2)))2 2.236 2 1.341(ii)(Tôi)

Tại thời điểm này, các vectơ cột tạo thành một cơ sở trực giao của , cho đến khi chúng ta thoát khỏi cột đầu tiên, đó sẽ là phần chặn và chúng tôi đã sao chép kết quả của :R4contr.poly(4)

[-0,67082040,5-0.2236068-0.2236068-0,50,67082040.2236068-0,5-0,67082040,67082040,50.2236068]

(sum(Z[,3]^2))^(1/4) = 1z[,3]%*%z[,4] = 0điểm số - có nghĩa là123


2. Sự tương phản (cột) nào đóng góp đáng kể để giải thích sự khác biệt giữa các cấp độ trong biến giải thích?

Chúng ta chỉ có thể chạy ANOVA và xem tóm tắt ...

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 

... Để thấy rằng có một hiệu ứng tuyến tính readcattrên write, để các giá trị ban đầu (trong đoạn mã thứ ba ở đầu bài) có thể được sao chép thành:

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

... hoặc là...

nhập mô tả hình ảnh ở đây

... hoặc tốt hơn nhiều ...

nhập mô tả hình ảnh ở đây

ΣTôi= =1tmộtTôi= =0một1,,mộtt

nhập mô tả hình ảnh ở đây

X0,X1,.Xn

Về mặt đồ họa, điều này dễ hiểu hơn nhiều. So sánh các phương tiện thực tế của các nhóm trong các khối đen vuông lớn với các giá trị dự đoán và xem tại sao một xấp xỉ đường thẳng với sự đóng góp tối thiểu của đa thức bậc hai và bậc ba (với các đường cong chỉ xấp xỉ với hoàng thổ) là tối ưu:

nhập mô tả hình ảnh ở đây

Nếu, chỉ để có hiệu lực, các hệ số của ANOVA đã lớn bằng độ tương phản tuyến tính đối với các xấp xỉ khác (bậc hai và khối), biểu đồ vô nghĩa theo sau sẽ mô tả rõ hơn các biểu đồ đa thức của mỗi "đóng góp":

nhập mô tả hình ảnh ở đây

ở đây .


+1 Wow. Câu trả lời này (tôi chưa đọc đến cuối cho đến nay) có thể được xem như là một câu trả lời cho câu hỏi cũ, bị lãng quên của tôi quá chỉ số.stackexchange.com / q / 63939/3277 ?
ttnphns

(+1) @ttnphns: Có thể cho rằng nó thậm chí còn phù hợp hơn ở đó.
Scortchi - Tái lập Monica

Chỉ là một mẹo: Bạn có thể muốn bình luận tôi ở đó với một liên kết đến đây; hoặc đưa ra một câu trả lời ở đó - mà tôi có khả năng chấp nhận.
ttnphns

1
@ttnphns và @Scortchi Cảm ơn bạn! Tôi đã dành khá nhiều thời gian để cố gắng hiểu ý nghĩa của các khái niệm này và không mong đợi nhiều phản ứng. Vì vậy, nó là một bất ngờ rất tích cực. Tôi nghĩ rằng có một số nếp nhăn để giải thích về qr.qy()chức năng này, nhưng tôi chắc chắn sẽ cố gắng xem liệu tôi có thể nói điều gì đó tối thiểu mạch lạc về câu hỏi của bạn ngay khi tôi có thời gian không.
Antoni Parellada

1
@Elvis Tôi đã cố gắng chọn một câu tóm tắt hay và đặt nó ở đâu đó trong bài viết. Tôi nghĩ rằng đây là một điểm tốt, và kêu gọi một lời giải thích toán học tốt đẹp, nhưng nó có thể là quá nhiều vào thời điểm này để giải thích thêm.
Antoni Parellada

5

Tôi sẽ sử dụng ví dụ của bạn để giải thích cách nó hoạt động. Sử dụng tương phản đa thức với bốn nhóm sản lượng sau.

EwrTôite1= =μ-0,67L+0,5Q-0,22CEwrTôite2= =μ-0,22L-0,5Q+0,67CEwrTôite3= =μ+0,22L-0,5Q-0,67CEwrTôite4= =μ+0,67L+0,5Q+0,22C

remộtdTôi

EwrTôiteTôi= =μ+remộtdTôiL+remộtdTôi2Q+remộtdTôi3C

L,Q,Cβ1,β2,β3L,Q,CremộtdTôi,remộtdTôi2,remộtdTôi3LQC

μ,L,Q,C

μ^= =52,79,L^= =14,26,Q^= =-0,97,C^= =-0,16
μ^= =14ΣTôi= =14EwrTôiteTôiμ^,L^,Q^,C^

L^

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.