Lỗi trong việc điều chỉnh mô hình hồi quy lượng tử bị kiểm duyệt


8

Tôi có một kết quả với kiểm duyệt đúng như thế này:

y<-c(rep(2.83,3),
     rep(3.17,4),
     rep(3.83,4),
     rep(4.17,5),
     rep(4.83,8),
     rep(5.5,3),
     rep(7.17,5),
     rep(8.17,7),
     rep(8.83,12),
     rep(9.5, 12),
     rep(9.83,17),
     rep(10.17,30),
     rep(10.50,100)) 

nơi y=10.5có giá trị kiểm duyệt đúng. Sau đó, tôi sẽ cố gắng sử dụng quantreg::crqđể phù hợp với mô hình hồi quy lượng tử bị kiểm duyệt và bắt đầu với biến can thiệp nhị phân:

set.seed(123)
require(quantreg)
yc<-rep(10.5, length(y))
treat<-rbinom(length(y), 1, 0.5)
age<-as.integer(rnorm(length(y), 50, 2))

mô hình1

fit1<-crq(Curv(y, yc, "right")~treat, taus=(1:4)/5, , method="Powell")
Error in solve.default(x[h, ]) : 
  Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Error in crq.fit.pow(X, y, cen, tau = taus[i], weights, left = left, ...) : 
  Singular basic solution generated by 'start'

mô hình2

fit2<-crq(Curv(y, yc, "right")~treat+age, taus=(1:4)/5)
Error in solve.default(x[h, ]) : 
  Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Error in crq.fit.pow(X, y, cen, tau = taus[i], weights, left = left, ...) : 
  Singular basic solution generated by 'start'

Ai đó ở đây có thể biết những gì sai của các mô hình? Có phải vì mối quan hệ trong y? Có một giải pháp?

Câu trả lời:


15

Trong các vấn đề dữ liệu nhân tạo như vậy, các giá trị bắt đầu mặc định cho phương thức Powell không thuận tiện. Đây là những gì đang xảy ra: crq.fit.powbắt đầu một cách ngây thơ bằng cách cố gắng tìm một rqgiải pháp bằng cách bỏ qua kiểm duyệt. Trong trường hợp của bạn, vì hiệp phương sai của bạn không phụ thuộc vào đáp ứng và một trong các hiệp phương sai là nhị phân, nên điều này có khả năng mang lại một giải pháp với hệ số xử lý bằng không cứng. Sau đó, thuật toán cố gắng bắt đầu tại giải pháp này và thấy rằng giải pháp cơ bản này (cặp quan sát đặc trưng cho sự phù hợp ban đầu) cả hai đều có chỉ số xử lý 0, (hoặc 1) và tại thời điểm đó, cố gắng giải quyết các giá trị bắt đầu một hệ thống tuyến tính số ít và bạn nhận được lỗi của bạn.

Vì vậy, vấn đề nảy sinh từ một âm mưu khá khó chịu của các vấn đề liên quan đến dữ liệu được sao chép của bạn, việc thiếu tín hiệu mô hình, và, thẳng thắn, một lựa chọn khá ngây thơ của một giao thức để chọn giá trị bắt đầu. Nếu bạn thực sự muốn buộc R đưa ra câu trả lời, bạn có thể sử dụng start = "global" - và (ít nhất là đối với các vấn đề nhỏ như thế này) crqsẽ tạo ra một giải pháp tối ưu toàn cầu. Nhưng tôi nghi ngờ rằng con đường tốt hơn là thay đổi mô hình phần nào.


10
Cảm ơn bạn rất nhiều vì đã tham gia với chúng tôi để trả lời câu hỏi này! Chúng tôi rất biết ơn khi có lời khuyên có thẩm quyền như vậy.
whuber
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.