R語言邏輯迴歸和泊松迴歸模型對發生交通事故概率建模
阿新 • • 發佈:2020-07-21
原文連結http://tecdat.cn/?p=14139
我們已經看到了如何考慮風險敞口,計算包含風險敞口的多個數量(經驗均值和經驗方差)的非引數估計量。讓我們看看如果要對二項式變數建模。
這裡的模型如下:
- 未觀察到
- 索償的數量
考慮一種情況,其中關注變數不是索償的數量,而僅僅是索償發生的標誌。然後,我們希望將事件模型
這意味著在一年的前六個月中沒有索賠的概率是一年中沒有索賠的平方根。假設可以
現在,因為我們確實觀察到
我們有
我們將使用的資料集
> T1= contrat$nocontrat[I==FALSE]
> nombre2 = data.frame(nocontrat=T1,nbre=0)
> sinistres = merge(contrat,nombre)
> sinistres$nonsin = (sinistres$nbre==0)
我們可以考慮的第一個模型基於標準的邏輯迴歸方法,即
很好,但是很難用標準函式處理。儘管如此,始終有可能通過數值計算給定的最大似然估計量
> optim(fn=logL,par=c(-0.0001,-.001), + method="BFGS") $par [1] 2.14420560 0.01040707 $value [1] 7604.073 $counts function gradient 42 10 $convergence [1] 0 $message NULL
現在,讓我們看看基於標準迴歸模型的替代方案。例如對數線性模型(Logistic迴歸演算法)。因為暴露數是年概率的冪,所以如果
現在,我們對其進行編碼,
Error: no valid set of coefficients has been found: please supply starting values
嘗試了所有可能的方法,但是無法解決該錯誤訊息,
> reg=glm(nonsin~ageconducteur+offset(exposition), + data=sinistresI,family=binomial(link="log"), + control = glm.control(epsilon=1e-5,trace=TRUE,maxit=50), + start=startglm, + etastart=etaglm,mustart=muglm) Deviance = NaN Iterations - 1 Error: no valid set of coefficients has been found: please supply starting values
所以我決定放棄。實際上,問題出在
其中
在這裡,暴露數不再顯示為概率的冪,而是相乘。如果我們考慮對數連結函式,那麼我們可以合併暴露數的對數。
現在可以完美運行了。
現在,要檢視最終模型,我們回到Poisson迴歸模型,因為我們確實有概率模型
現在我們可以比較這三個模型。我們還應該包括沒有任何解釋變數的預測。對於第二個模型(實際上,它執行時沒有任何解釋變數),我們執行
> regreff=glm((1-nonsin)~1+offset(log(exposition)),
+ data=sinistres,family=binomial(link="log"))
預測
> exp(coefficients(regreff))
(Intercept)
0.06776376
可與邏輯迴歸比較,
> 1-exp(param)/(1+exp(param))
[1] 0.06747777
但是與泊松模型有很大的不同,
(Intercept)
0.07279295
我們產生一個圖表比較那些模型,
> lines(age,1-yml1,type="l",col="purple")
> abline(h=exp(coefficients(regreff)),lty=2)
在這裡觀察到這三個模型是完全不同的。實際上,使用兩個模型,可以進行更復雜的迴歸分析(例如使用樣條曲線),以視覺化年齡對發生或不發生交通事故概率的影響。如果將泊松迴歸(仍為紅色)和對數二項式模型與泰勒展開進行比較,我們得到
參考文獻
3.matlab中的偏最小二乘迴歸(PLSR)和主成分迴歸(PCR)
5.R語言迴歸中的Hosmer-Lemeshow擬合優度檢驗