2013-07-12 235 views
1

我想從包RMS使用lrm首先運行邏輯迴歸。 我的模型適用於glm,但不適用於lrm邏輯迴歸和引導

model1 <- lrm(Outcome30Days ~ ISS1 + ISS2 + as.factor(GCSgr)+ 
as.factor(Gender)*as.factor(agegr),data=sub2, x=T, y=T, se.fit=T) 

如果ISS1ISS2被刪除模型運行,但與這些兩個變量不會。 錯誤消息:

Unable to fit model using 「lrm.fit」 

我需要與lrm運行,由於採用引導工程(顯然)封裝validate只有lrm。 任何幫助,將不勝感激。

+0

它只是告訴你,_mathematically_它不適合模型,因爲你已經指定它。具體而言,它似乎基於底層Fortran代碼返回的失敗代碼。診斷確切的問題需要詳細瞭解您的數據和用於擬合模型的精確數學程序。 – joran

+0

謝謝Joran,如果這個模型和glm一起工作的模型不正確? lrm有些令人費解。 – Omar

+0

我認爲我通過使用懲罰= 5來實現它,在5以下它不起作用。 – Omar

回答

0

lrm對自變量之間的相關性的容忍度低於glm。如果你的模型運行glm並且在移除一些變量時運行lrm,這可能是問題。幸運的是,您可以使用tol參數調整容差。默認情況下,tol = 1e-7。嘗試將其更改爲tol = 1e-9。該代碼是這樣的:

model1 <- lrm(Outcome30Days ~ ISS1 + ISS2 + as.factor(GCSgr)+ 
as.factor(Gender)*as.factor(agegr),data=sub2, x=T, y=T, se.fit=T, tol=1e-9) 

這比罰搞亂因爲改變判罰會改變你對數似然,並可能影響到你的業績好。

+0

另一種方法是通過'maxit ='選項增加最大迭代次數 - lrm()中lrm.fit() '是12次迭代,而'glm.fit()'中的默認值是25,根據幫助文件。 –