Làm thế nào để thực hiện biến giả bằng biến n-1?


9

Nếu tôi có một biến với 4 cấp độ, theo lý thuyết tôi cần sử dụng 3 biến giả. Trong thực tế, điều này thực sự được thực hiện như thế nào? Tôi có sử dụng 0-3 không, tôi có sử dụng 1-3 và để trống 4 không? Bất kỳ đề xuất?

LƯU Ý: Tôi sẽ làm việc tại R.

CẬP NHẬT: Điều gì sẽ xảy ra nếu tôi chỉ sử dụng một cột sử dụng 1-4 tương ứng với AD? Điều đó sẽ làm việc hoặc giới thiệu vấn đề?


3
Tôi nghĩ rằng trang này từ UCLA ATS giải thích nó khá tốt.
caracal

4
Để rõ ràng, lưu ý rằng mã hóa biến này là số nguyên 0-3 hoặc 1-4 hoặc 1-3 không phải là mã hóa giả và sẽ không có tác dụng tương tự như ba biến giả. Tuy nhiên, một mã hóa không chính xác như vậy sẽ hoạt động trong các công thức và phần mềm hồi quy và sẽ có đầu ra hợp lý: nó sẽ không tương ứng với mô hình dự định. (NB: điều này trả lời bản cập nhật gần đây cho câu hỏi. )
whuber

Câu trả lời:


11

Trong thực tế, người ta thường cho phép một phần mềm lựa chọn xử lý việc tạo và thao tác các biến giả. Có một số cách nó có thể được xử lý; Dưới đây là một số khả năng phổ biến cho một tập dữ liệu với bốn quan sát, một ở mỗi cấp độ A, B, C và D. Đây là các tham số hóa khác nhau; chúng dẫn đến kết quả chính xác cùng một mô hình, nhưng với các cách hiểu khác nhau về các tham số. Người ta có thể dễ dàng chuyển đổi từ người này sang người khác bằng cách sử dụng đại số cơ bản; lưu ý rằng tất cả chúng là sự kết hợp tuyến tính của nhau; trong thực tế, bất kỳ sự kết hợp tuyến tính có thể được sử dụng.

Sử dụng sự khác biệt từ cấp độ đầu tiên (mặc định trong R):

A 0 0 0
B 1 0 0
C 0 1 0
D 0 0 1

Sử dụng sự khác biệt từ cấp độ cuối cùng (mặc định trong SAS):

A 1 0 0
B 0 1 0
C 0 0 1
D 0 0 0

Sử dụng tương phản "tổng":

A    1    0    0
B    0    1    0
C    0    0    1
D   -1   -1   -1

Sử dụng độ tương phản "helmert":

A   -1   -1   -1
B    1   -1   -1
C    0    2   -1
D    0    0    3

1
Tôi muốn nói, vì sự thuần khiết, các biến giả , trong trường hợp nghiêm ngặt, chỉ là ví dụ thứ 1 và thứ 2 của bạn. Biến giả cũng được gọi là biến tương phản chỉ báo . Đối với tôi , Helmert , độ lệch và các loại biến tương phản khác không nên được gọi là giả .
ttnphns

1
@ttnphns Tôi đồng ý rằng Helmert tương phản không cấu thành mã hóa giả từ quan điểm kỹ thuật, nhưng tôi nghĩ rằng dù sao chúng cũng được đưa vào đây là hoàn toàn hợp lý. Tôi không thể biết nếu bạn đang chỉ ra điều này vì mục đích rõ ràng hoặc gợi ý rằng câu trả lời sẽ được thay đổi. @ Aaron +1, câu trả lời này sẽ còn tốt hơn nếu bạn giải thích ngắn gọn cách giải thích của các sơ đồ mã hóa khác nhau này sẽ khác nhau như thế nào.
gung - Phục hồi Monica

7

Giả sử mức biến của bạn là A, B, C và D. Nếu bạn có một thuật ngữ không đổi trong hồi quy, bạn cần sử dụng ba biến giả, nếu không, bạn cần phải có cả bốn biến.

Có nhiều cách tương đương về mặt toán học mà bạn có thể thực hiện các biến giả. Nếu bạn có một thuật ngữ không đổi trong hồi quy, một cách là chọn một trong các mức làm mức "đường cơ sở" và so sánh ba mức còn lại với nó. Để chúng tôi nói, để cụ thể, mức cơ sở là A. Sau đó, biến giả đầu tiên của bạn nhận giá trị 1 bất cứ khi nào mức B là 0 và khác; thứ hai nhận giá trị 1 bất cứ khi nào mức là C và 0, và thứ ba nhận giá trị 1 bất cứ khi nào cấp là D và 0 khác. Bởi vì thuật ngữ không đổi của bạn bằng 1 mọi lúc, hệ số ước tính của biến giả đầu tiên sẽ là ước tính của sự khác biệt giữa cấp B và A, và tương tự cho các biến giả khác.

Nếu bạn không có một thuật ngữ không đổi, bạn chỉ có thể sử dụng bốn biến giả, được xây dựng như trong ví dụ trước, chỉ cần thêm một biến cho cấp độ A.


Lưu ý tốt đẹp về làm thế nào có một thuật ngữ liên tục trong các vấn đề hồi quy.
Aaron rời Stack Overflow

5

Trong R, xác định biến là một yếu tố và nó sẽ triển khai nó cho bạn:

x <- as.factor(sample(LETTERS[1:4], 20, replace = TRUE))
y <- rnorm(20)
lm (y ~ x)

trả về

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)           xB           xC           xD  
     1.0236      -0.6462      -0.9466      -0.4234  

Tài liệu về 'lm', 'yếu tố' và 'công thức' trong R điền vào một số chi tiết.


1
+1 Đây là một bổ sung tốt cho các câu trả lời đã được liệt kê. Chúng tôi cũng có thể lưu ý rằng nếu bạn đã có một biến với tên nhóm (chẳng hạn như AD), điều này có thể được thực hiện trong lệnh gọi hàm phân tích mà không cần thêm bước: lm(y ~ as.factor(x))
gung - Phục hồi Monica

Lý do chính tôi đang xem xét sử dụng các biến giả là tôi đang làm việc với một tập dữ liệu lớn với nhiều cấp độ yếu tố (> 32) và một số gói trong R (cụ thể là ngẫu nhiên) không thể xử lý các yếu tố với nhiều cấp độ, vì vậy tôi đã thử để xem nếu hình nộm là một công việc xung quanh.
screechOwl

1
Bạn có thể xây dựng ma trận thiết kế hồi quy bằng cách sử dụng 'model.matrix': model.matrix (y ~ x) (x vẫn là một yếu tố) sẽ cung cấp cho bạn một ma trận với các biến giả. Tôi không quen thuộc với gói ngẫu nhiên, nhưng tôi nghi ngờ rằng bạn có thể cung cấp cho bất kỳ chức năng nào một ma trận thiết kế rõ ràng mà bạn nhận được từ model.matrix và model.matrix dường như hoạt động với nhiều (ví dụ hàng trăm) cấp độ.
Xám

ps: bạn có thể muốn chỉnh sửa câu hỏi để làm rõ rằng bạn quan tâm đến các giải pháp hoạt động với nhiều cấp độ. Câu hỏi hỏi về 4.
Xám

4

whuber nói với bạn trong các ý kiến ​​rằng mã hóa mã 0-3 hoặc 1-4 thay vì tạo các biến giả không phải là điều bạn muốn. Đây là thử - tôi hy vọng sẽ giải thích những gì bạn sẽ làm với mô hình đó và tại sao nó sai.

Nếu bạn viết mã một biến X sao cho nếu A thì X = 1, nếu B thì X = 2, nếu C thì X = 3, nếu D thì X = 4 thì khi bạn thực hiện hồi quy, bạn sẽ chỉ nhận được một tham số. Giả sử kết quả là tham số ước tính liên quan đến X là 2. Điều này sẽ cho bạn biết rằng sự khác biệt dự kiến ​​giữa giá trị trung bình của B và giá trị trung bình của A là 2. Nó cũng cho bạn biết rằng sự khác biệt dự kiến ​​giữa giá trị trung bình của C và giá trị trung bình của B là 2. Một số cho D và C. Bạn sẽ buộc các khác biệt về phương tiện cho các nhóm này tuân theo mô hình rất nghiêm ngặt này. Đó là một tham số cho bạn biết chính xác tất cả các nhóm của bạn có liên quan như thế nào với nhau.

Vì vậy, nếu bạn đã thực hiện loại mã hóa này, bạn sẽ cần phải giả định rằng không chỉ bạn đã đặt hàng đúng (vì trong trường hợp này nếu bạn mong đợi tăng từ A đến B thì bạn cần phải tăng từ B lên C và từ C đến D) nhưng bạn cũng cần cho rằng sự khác biệt đó là như nhau!

Thay vào đó, nếu bạn thực hiện mã hóa giả đã được đề xuất, bạn cho phép mỗi nhóm có ý nghĩa riêng - không hạn chế. Mô hình này hợp lý hơn nhiều và trả lời các câu hỏi bạn muốn.

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.