Trong một mô hình logit, có cách nào thông minh hơn để xác định ảnh hưởng của biến thứ tự độc lập hơn là sử dụng biến giả cho mỗi cấp độ không?
Trong một mô hình logit, có cách nào thông minh hơn để xác định ảnh hưởng của biến thứ tự độc lập hơn là sử dụng biến giả cho mỗi cấp độ không?
Câu trả lời:
Để thêm vào phản hồi của @ dmk38, "bất kỳ tập hợp điểm nào cũng cho phép kiểm tra hợp lệ , miễn là chúng được xây dựng mà không tham khảo kết quả của thí nghiệm. Nếu tập hợp điểm kém, điều đó làm sai lệch một thang đo số thực sự làm nền tảng cho số phân loại theo thứ tự, bài kiểm tra sẽ không nhạy cảm. Do đó, điểm số sẽ thể hiện cái nhìn sâu sắc nhất có sẵn về cách thức phân loại được xây dựng và sử dụng. " (Cochran, 1954, được trích dẫn bởi Agresti, 2002, trang 88-89). Nói cách khác, coi một yếu tố được sắp xếp như một biến số được ghi chỉ là vấn đề mô hình hóa. Với điều kiện hợp lý, điều này sẽ chỉ tác động đến cách bạn diễn giải kết quả và không có quy tắc chính xác nào về cách chọn đại diện tốt nhất cho một biến số thứ tự.
Xem xét ví dụ sau đây về tiêu thụ rượu của mẹ và sự hiện diện hay vắng mặt của dị tật bẩm sinh (Agresti, Phân tích dữ liệu phân loại , Bảng 3.7 trang 89):
0 <1 1-2 3-5 6+
Absent 17066 14464 788 126 37
Present 48 38 5 1 1
Trong trường hợp cụ thể này, chúng ta có thể mô hình hóa kết quả bằng cách sử dụng hồi quy logistic hoặc bảng kết hợp đơn giản. Hãy làm điều đó trong R:
tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
dimnames=list(c("Absent","Present"),
c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)
Thường (12.08, p = 0,016751) hoặc LR (6.20, p = 0,184562) Thống kê (với 4 df) không chiếm các mức yêu cầu trong rượu tiêu thụ.
Đối xử với cả hai biến là thứ tự với điểm số cách đều nhau (điều này không ảnh hưởng đến các biến nhị phân, như dị tật và chúng tôi chọn đường cơ sở là 0 = vắng mặt), chúng tôi có thể kiểm tra tuyến tính bằng liên kết tuyến tính. Trước tiên chúng ta hãy xây dựng một phiên bản bùng nổ của Bảng dự phòng này:
library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1),
alcohol=gl(5,2,10,labels=colnames(tab3.7))),
c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check
Sau đó, chúng ta có thể kiểm tra một liên kết tuyến tính bằng cách sử dụng
library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)
cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)
Có thể thấy, không có nhiều bằng chứng về mối liên hệ rõ ràng giữa hai biến. Như được thực hiện bởi Agresti, nếu chúng tôi chọn mã hóa lại mức độ cồn là {0,0,5,1,5,4,7}, đó là sử dụng các giá trị trung bình cho thang đo liên tục được giả thuyết với điểm số cuối cùng hoàn toàn tùy ý, thì chúng tôi sẽ kết luận ảnh hưởng lớn hơn của việc tiêu thụ rượu của mẹ đối với sự phát triển của dị tật bẩm sinh:
lbl_test(malform ~ alcohol, data=tab3.7.df,
scores=list(alcohol=c(0,0.5,1.5,4,7)))
mang lại một thống kê thử nghiệm là 6,57 với giá trị p liên quan là 0,01037.
Sử dụng phương pháp GLM, chúng tôi sẽ tiến hành như sau. Nhưng trước tiên hãy kiểm tra cách Rượu được mã hóa trong R:
class(tab3.7.df$alcohol)
Nó là một yếu tố không có thứ tự đơn giản ( "factor"
), do đó là một yếu tố dự đoán danh nghĩa. Bây giờ, đây là ba mô hình mà chúng tôi coi Rượu như một công cụ dự đoán danh nghĩa, thứ tự hoặc liên tục.
summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df,
family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df,
family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df,
family=binomial))
. Bài kiểm tra Wald không đáng kể ở mức 5% thông thường. Trong trường hợp này, ma trận thiết kế chỉ bao gồm 2 cột: cột đầu tiên là cột không đổi 1 giây cho phần chặn, cột thứ hai là giá trị số (1 đến 5) cho bộ dự đoán, như trong hồi quy tuyến tính đơn giản. Tóm lại, mô hình này kiểm tra hiệu ứng tuyến tính của Rượu đối với kết quả (trên thang đo logit).
Tuy nhiên, trong hai trường hợp khác ( mod1
và mod2
), chúng tôi nhận được đầu ra khác nhau vì ma trận thiết kế được sử dụng để mô hình hóa bộ dự đoán khác nhau, như có thể được kiểm tra bằng cách sử dụng:
model.matrix(mod1)
model.matrix(mod2)
mod1
mod2
mod1
mod2
Bạn có thể thử gán điểm mới cho Rượu và xem nó sẽ ảnh hưởng đến xác suất dự đoán của dị tật như thế nào.
Sẽ hoàn toàn ổn khi sử dụng bộ dự báo phân loại trong mô hình hồi quy logit (hoặc OLS) nếu các mức là thứ tự. Nhưng nếu bạn có một lý do để coi mỗi cấp độ là rời rạc (hoặc trong thực tế, biến phân loại của bạn là danh nghĩa thay vì thứ tự), thì, thay thế cho mã hóa giả, bạn cũng có thể sử dụng mã hóa tương phản trực giao. Để thảo luận rất đầy đủ và có thể truy cập, xem Judd, CM, McClelland, GH & Ryan, CS Phân tích dữ liệu: phương pháp so sánh mô hình, Edn. lần 2. (Routledge / Taylor và Francis, New York, NY; 2008) hoặc chỉ google "mã hóa tương phản"