Tôi đã sử dụng hàm 'polr' trong gói MASS để chạy hồi quy logistic thứ tự cho một biến phản ứng phân loại thứ tự với 15 biến giải thích liên tục.
Tôi đã sử dụng mã (hiển thị bên dưới) để kiểm tra xem mô hình của tôi có đáp ứng giả định tỷ lệ cược theo tỷ lệ theo lời khuyên được cung cấp trong hướng dẫn của UCLA không . Tuy nhiên, tôi hơi lo lắng về đầu ra ngụ ý rằng không chỉ các hệ số trên các điểm cắt khác nhau giống nhau, mà chúng giống hệt nhau (xem hình bên dưới).
FGV1b <- data.frame(FG1_val_cat=factor(FGV1b[,"FG1_val_cat"]),
scale(FGV1[,c("X","Y","Slope","Ele","Aspect","Prox_to_for_FG",
"Prox_to_for_mL", "Prox_to_nat_border", "Prox_to_village",
"Prox_to_roads", "Prox_to_rivers", "Prox_to_waterFG",
"Prox_to_watermL", "Prox_to_core", "Prox_to_NR", "PCA1",
"PCA2", "PCA3")]))
b <- polr(FG1_val_cat ~ X + Y + Slope + Ele + Aspect + Prox_to_for_FG +
Prox_to_for_mL + Prox_to_nat_border + Prox_to_village +
Prox_to_roads + Prox_to_rivers + Prox_to_waterFG +
Prox_to_watermL + Prox_to_core + Prox_to_NR,
data=FGV1b, Hess=TRUE)
Xem tóm tắt của mô hình:
summary(b)
(ctableb <- coef(summary(b)))
q <- pnorm(abs(ctableb[, "t value"]), lower.tail=FALSE) * 2
(ctableb <- cbind(ctableb, "p value"=q))
Và bây giờ chúng ta có thể xem xét các khoảng tin cậy cho các ước tính tham số:
(cib <- confint(b))
confint.default(b)
Nhưng những kết quả này vẫn còn khá khó diễn giải, vì vậy hãy chuyển đổi các hệ số thành tỷ lệ cược
exp(cbind(OR=coef(b), cib))
Kiểm tra giả định. Vì vậy, đoạn mã sau sẽ ước tính các giá trị được biểu đồ. Đầu tiên, nó cho chúng ta thấy các phép biến đổi logit của xác suất lớn hơn hoặc bằng với mỗi giá trị của biến mục tiêu
FG1_val_cat <- as.numeric(FG1_val_cat)
sf <- function(y) {
c('VC>=1' = qlogis(mean(FG1_val_cat >= 1)),
'VC>=2' = qlogis(mean(FG1_val_cat >= 2)),
'VC>=3' = qlogis(mean(FG1_val_cat >= 3)),
'VC>=4' = qlogis(mean(FG1_val_cat >= 4)),
'VC>=5' = qlogis(mean(FG1_val_cat >= 5)),
'VC>=6' = qlogis(mean(FG1_val_cat >= 6)),
'VC>=7' = qlogis(mean(FG1_val_cat >= 7)),
'VC>=8' = qlogis(mean(FG1_val_cat >= 8)))
}
(t <- with(FGV1b, summary(as.numeric(FG1_val_cat) ~ X + Y + Slope + Ele + Aspect +
Prox_to_for_FG + Prox_to_for_mL + Prox_to_nat_border +
Prox_to_village + Prox_to_roads + Prox_to_rivers +
Prox_to_waterFG + Prox_to_watermL + Prox_to_core +
Prox_to_NR, fun=sf)))
Bảng trên hiển thị các giá trị dự đoán (tuyến tính) mà chúng ta sẽ nhận được nếu chúng ta hồi quy biến phụ thuộc vào các biến dự đoán của chúng ta tại một thời điểm, mà không có giả định độ dốc song song. Vì vậy, bây giờ, chúng ta có thể chạy một loạt các hồi quy logistic nhị phân với các điểm cắt khác nhau trên biến phụ thuộc để kiểm tra sự bằng nhau của các hệ số trên các điểm cắt
par(mfrow=c(1,1))
plot(t, which=1:8, pch=1:8, xlab='logit', main=' ', xlim=range(s[,7:8]))
Xin lỗi rằng tôi không phải là chuyên gia thống kê và có lẽ tôi đang thiếu một cái gì đó rõ ràng ở đây. Tuy nhiên, tôi đã mất một thời gian dài để tìm hiểu xem có vấn đề gì trong cách tôi kiểm tra giả định mô hình hay không và cũng cố gắng tìm ra các cách khác để chạy cùng một mô hình.
Ví dụ, tôi đọc trong nhiều danh sách gửi thư trợ giúp rằng những người khác sử dụng hàm vglm (trong gói VGAM) và hàm lrm (trong gói rms) (ví dụ xem tại đây: Giả định tỷ lệ cược theo tỷ lệ hồi quy logistic trong R với các gói VGAM và rms ). Tôi đã cố gắng chạy các mô hình tương tự nhưng liên tục đưa ra các cảnh báo và lỗi.
Ví dụ: khi tôi cố gắng khớp mô hình vglm với đối số'allel = FALSE '(vì liên kết trước đó đề cập rất quan trọng để kiểm tra giả định tỷ lệ cược tỷ lệ), tôi gặp phải lỗi sau:
Lỗi trong lm.fit (X.vlm, y = z.vlm, ...): NA / NaN / Inf trong 'y'
Ngoài ra: Thông báo cảnh báo:
Trong Deviance.c sortical.data.vgam (mu = mu, y = y, w = w, Residuals = Residuals ,: giá trị được trang bị gần bằng 0 hoặc 1
Tôi muốn hỏi xin vui lòng nếu có bất cứ ai có thể hiểu và có thể giải thích cho tôi tại sao đồ thị tôi sản xuất ở trên trông giống như nó. Nếu thực sự nó có nghĩa là một cái gì đó không đúng, bạn có thể vui lòng giúp tôi tìm cách kiểm tra giả định tỷ lệ cược tỷ lệ khi chỉ sử dụng hàm polr. Hoặc nếu điều đó là không thể, thì tôi sẽ dùng đến chức năng vglm, nhưng sau đó sẽ cần một số trợ giúp để giải thích lý do tại sao tôi tiếp tục nhận được lỗi ở trên.
LƯU Ý: Làm nền, có 1000 điểm dữ liệu ở đây, đây thực sự là các điểm vị trí trên toàn khu vực nghiên cứu. Tôi đang tìm kiếm để xem liệu có bất kỳ mối quan hệ giữa biến trả lời phân loại và 15 biến giải thích này. Tất cả 15 biến giải thích đó là các đặc điểm không gian (ví dụ: độ cao, tọa độ xy, khoảng cách gần với rừng, v.v.). 1000 điểm dữ liệu được phân bổ ngẫu nhiên bằng cách sử dụng một hệ thống GIS, nhưng tôi đã sử dụng phương pháp lấy mẫu phân tầng. Tôi chắc chắn rằng 125 điểm được chọn ngẫu nhiên trong mỗi 8 mức phản ứng phân loại khác nhau. Tôi hy vọng thông tin này cũng hữu ích.