Mã hóa biến định tính trong hồi quy dẫn đến số ít


17

Tôi có một biến độc lập gọi là "chất lượng"; biến này có 3 phương thức phản hồi (chất lượng kém; chất lượng trung bình; chất lượng cao). Tôi muốn giới thiệu biến độc lập này vào hồi quy tuyến tính đa biến của mình. Khi tôi có một biến độc lập nhị phân (biến giả, tôi có thể mã 0/ 1), thật dễ dàng để đưa nó vào một mô hình hồi quy tuyến tính đa biến.

Nhưng với 3 phương thức phản hồi, tôi đã thử mã hóa biến này như thế này:

Bad quality      Medium quality      High quality

     0                1                  0
     1                0                  0
     0                0                  1
     0                1                  0

Nhưng có một vấn đề khi tôi cố gắng thực hiện hồi quy tuyến tính đa biến của mình: phương thức Medium qualitymang lại cho tôi NA:

Coefficients: (1 not defined because of singularities) 

Làm thế nào tôi có thể mã hóa biến "chất lượng" này với 3 phương thức? Tôi có phải tạo một biến là một yếu tố ( factortrong R) nhưng sau đó tôi có thể giới thiệu yếu tố này trong hồi quy tuyến tính bội không?


2
Có lẽ tôi đang hiểu nhầm câu hỏi, nhưng bạn không thể bao gồm tất cả các cấp của biến phân loại thành hồi quy tuyến tính vì cộng tuyến hoàn hảo. Một trong những danh mục của bạn sẽ bị loại bỏ để cung cấp một nhóm cơ sở mà các nhóm khác được so sánh.
RickyB

1
Có một lời giải thích nổi bật trong bối cảnh thống kê về những gì tạo nên một ma trận số ít ở đây: what-tương quan-make-a-matrix-singular?
gung - Phục hồi Monica

Câu trả lời:


23

Vấn đề bạn đang gặp phải (tức là "điểm kỳ dị") có thể được coi là một ví dụ của đa cộng đồng . Đa sắc thái thường được định nghĩa là:

Một hoặc nhiều biến dự đoán là sự kết hợp tuyến tính của các biến dự đoán khác.

Trên thực tế, đây là một định nghĩa khá nghiêm ngặt; nó là đa cộng tuyến hoàn hảo và bạn có thể dễ dàng gặp vấn đề với đa cộng tuyến mà không có bất kỳ biến nào của bạn là kết hợp tuyến tính hoàn hảo của các biến khác. Hơn nữa, đa hình hoàn hảo hiếm khi xảy ra. Tuy nhiên, bạn đã tình cờ phát hiện ra một trường hợp có thể xảy ra. Hãy để chúng tôi xem làm thế nào chúng ta có thể hoàn toàn dự đoán medium qualitytừ sự hiểu biết của chúng ta về hai loại khác (chúng tôi sẽ làm điều này với một mô hình hồi quy ở đâu medium qualitylà , và & là & , tương ứng): Lưu ý rằng không có thuật ngữ lỗi,X 1 X 2 Y = β 0 + β 1 X 1 + β 2 X 2 ε β 0 = 1 β 1 = - 1 β 2 = - 1 X 1 = 1 β 0 1Ybad qualityhigh qualityX1X2

Y=β0+β1X1+β2X2
ε, được chỉ định, bởi vì chúng ta có thể dự đoán điều này một cách hoàn hảo. Để làm như vậy, chúng tôi đặt , và . Bây giờ, khi bạn có , thì , sẽ hủy ( ) và để thuật ngữ đó cũng bị hủy ( ). Do đó, chúng ta còn lại một giá trị dự đoán là cho ( ), điều này hoàn toàn chính xác. Tôi sẽ để nó cho bạn để tìm ra các khả năng khác (nó luôn hoạt động, trong trường hợp của bạn). β0=1β1=1β2=1bad qualityX1=1β0X 2 = 0 - 1 × 0 0 Y1+1×1X2=01×00Ymedium quality

Vậy bạn nên làm gì? Khi biểu diễn một biến phân loại, chúng ta thường sử dụng mã hóa ô tham chiếu (thường được gọi là 'mã hóa giả'). Để làm điều này, chúng tôi chọn một cấp của biến phân loại của chúng tôi làm cấp độ tham chiếu; mức đó không nhận được mã giả của riêng nó, nhưng được biểu thị đơn giản bằng cách có tất cả trong mã giả cho tất cả các cấp khác. Các cấp độ khác của biến phân loại của bạn được thể hiện bằng mã giả giống như bạn đã làm. (Để biết thêm thông tin về điều này, bạn có thể xem câu trả lời của tôi ở đây: Hồi quy dựa trên các ngày trong tuần .) Nếu bạn đang sử dụng , bạn có thể sử dụng một và0RfactorR sẽ làm tất cả điều này cho bạn - nó sẽ được thực hiện một cách chính xác, và nó thuận tiện hơn nhiều - dù sao, cũng đáng để hiểu rằng đây là những gì đang xảy ra 'đằng sau hậu trường'.


Cảm ơn tât cả lơi binh luận của bạn ! Tôi đang sử dụng R vì vậy nếu tôi hiểu rõ, với yếu tố R sẽ làm mọi thứ, tôi không cần phải làm gì cả! Hoàn hảo ! Xe tăng một lần nữa!
varin sacha

Nếu bạn đặt chặn thành 0 trong lmcông thức ( + 0) thì nó có hoạt động không?
Firebug

1
@Fireorms, nếu bạn đang sử dụng cấp có nghĩa là mã hóa (nghĩa là bạn có một biến riêng cho mỗi cấp), thì bạn có thể đặt chặn chặn thành 0 và nó sẽ hoạt động tốt. Mặc dù ý nghĩa của các hệ số biến đổi & các bài kiểm tra giả thuyết sẽ khác nhau.
gung - Phục hồi Monica

10

@gung đã giải thích lý thuyết rõ ràng. Đây là một ví dụ thực tế để minh họa:

set.seed(1)
pred1 <- factor(c("bad", "med", "high"), levels=c("bad", "med", "high"))
df1 <- data.frame(y=20*abs(runif(6)),
                  x=rnorm(6),
                  q=sample(pred1, 6, replace=TRUE)
                  )
l1 <- lm(y ~ x, data=df1)
### add variable q    
l2 <- lm(y ~ x + q, data=df1)
### look at dummy variables generated in creating model
model.matrix(l2)

Điều này cho chúng ta thấy mức tham chiếu (tất cả giây) như được thấy ở đây trong hàng 4:0bad

  (Intercept)          x qmed qhigh
1           1  1.5952808    1     0
2           1  0.3295078    0     1
3           1 -0.8204684    0     1
4           1  0.4874291    0     0
5           1  0.7383247    1     0
6           1  0.5757814    0     0

Bây giờ nếu chúng ta tự viết mã các biến giả và cố gắng khớp với một mô hình bằng cách sử dụng tất cả chúng:

df1 <- within(df1, {
       qbad <- ifelse(q=="bad", 1, 0)
       qmed <- ifelse(q=="med", 1, 0)
       qhigh <- ifelse(q=="high", 1, 0)
       })    
lm(y ~ x + qbad + qmed + qhigh, data=df1, singular.ok=FALSE)

Chúng tôi nhận được lỗi dự kiến: singular fit encountered


1
Vui lòng. Hy vọng tất cả đã rõ ràng. factornói chung sẽ chăm sóc mã hóa biến giả cho bạn nhưng tốt để biết những gì đang diễn ra 'dưới mui xe'.
dardisco
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.