Kesalahan dalam menyesuaikan model regresi kuantil yang disensor

8

Saya memiliki hasil dengan sensor yang benar seperti ini:

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)) 

di mana y=10.5nilai sensor benar. Kemudian, saya akan mencoba menggunakan quantreg::crqagar sesuai dengan model regresi kuantil yang disensor dan mulai dengan variabel intervensi biner:

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))

model1

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'

model2

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'

Bolehkah seseorang di sini tahu apa yang salah dari model? Apakah karena ikatan di dalam kamu? Apakah ada solusinya?

David Z
sumber

Jawaban:

15

Dalam masalah data buatan seperti itu nilai awal default untuk metode Powell tidak terlalu menguntungkan. Inilah yang terjadi: secara crq.fit.pownaif dimulai dengan mencoba menemukan rqsolusi dengan mengabaikan sensor. Dalam kasus Anda, karena kovariat Anda tidak tergantung pada respons dan salah satu kovariatnya adalah biner, ini kemungkinan akan menghasilkan solusi dengan koefisien perlakuan nol yang keras. Kemudian algoritma mencoba untuk memulai pada solusi ini dan menemukan bahwa solusi dasar ini (pasangan pengamatan yang mencirikan fit awal) keduanya memiliki indikator perlakuan 0, (atau 1), dan pada saat itu, mencoba untuk menyelesaikan untuk hasil nilai awal. sistem linear tunggal dan Anda mendapatkan kesalahan Anda.

Jadi masalahnya muncul dari konspirasi masalah yang agak buruk yang harus dilakukan dengan data replikasi Anda kurangnya sinyal model, dan, terus terang, pilihan protokol yang agak naif untuk memilih nilai awal. Jika Anda benar-benar ingin memaksa R untuk menghasilkan jawaban, Anda dapat menggunakan start = "global" - dan (setidaknya untuk masalah kecil seperti ini) crqakan menghasilkan solusi yang optimal secara global. Tapi saya curiga bahwa jalan yang lebih baik adalah mengubah modelnya.

R. Koenker
sumber
10
Terima kasih banyak telah bergabung dengan kami untuk menjawab pertanyaan ini! Kami bersyukur memiliki saran otoritatif seperti itu.
whuber