R

擬合刪失分位數回歸模型的錯誤

  • June 27, 2014

我有這樣的正確審查結果:

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

y=10.5右刪失值在哪裡。然後,我會嘗試使用quantreg::crq一個截尾分位數回歸模型來擬合,並從一個二元干預變量開始:

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

型號1

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'

模型2

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'

這裡有人可以知道模型有什麼問題嗎?是因為 y 的關係嗎?有解決辦法嗎?

在此類人工數據問題中,Powell 方法的默認起始值不是很有利。這就是正在發生的事情:crq.fit.pow天真地開始試圖rq通過忽略審查來找到解決方案。在您的情況下,由於您的協變量獨立於響應並且協變量之一是二元的,因此這可能會產生具有硬零處理係數的解決方案。然後算法嘗試從這個解決方案開始,並發現這個基本解決方案(表徵初始擬合的一對觀測值)都具有處理指標 0(或 1),並且在那時,嘗試求解起始值產生一個奇異的線性系統,你會得到你的錯誤。

因此,問題源於與您的複制數據有關的一個相當討厭的問題,缺少模型信號,坦率地說,是一個相當幼稚的協議選擇來選擇起始值。如果你真的想強制 R 產生一個答案,你可以使用 start = “global” – 並且(至少對於像這樣的小問題)crq將產生一個全局最優解。但我懷疑更好的方法是稍微改變模型。

引用自:https://stats.stackexchange.com/questions/105031

comments powered by Disqus