1. 程式人生 > 實用技巧 >R語言非引數模型釐定保險費率:區域性迴歸、廣義相加模型GAM、樣條迴歸

R語言非引數模型釐定保險費率:區域性迴歸、廣義相加模型GAM、樣條迴歸

原文連結:http://tecdat.cn/?p=14121

本文將分析了幾種用於制定保險費率的平滑技術。

  • 保費沒有細分

該價格應與純溢價相關,而純溢價與頻率成正比,因為

沒有協變數,預期頻率應為

  1. Deviance Residuals:
  2. Min 1Q Median 3Q Max
  3. -0.5033 -0.3719 -0.2588 -0.1376 13.2700
  4. Coefficients:
  5. Estimate Std. Error z value Pr(>|z|)
  6. (Intercept) -2.6201 0.0228 -114.9 <2e-16 ***
  7. ---
  8. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  9. (Dispersion parameter for poisson family taken to be 1)
  10. Null deviance: 12680 on 49999 degrees of freedom
  11. Residual deviance: 12680 on 49999 degrees of freedom
  12. AIC: 16353
  13. Number of Fisher Scoring iterations: 6
  14. > exp(coefficients(regglm0))
  15. (Intercept)
  16. 0.07279295

因此,如果我們不想考慮到潛在的異質性,通常將其視為百分比,即概率,因為

即可以解釋為沒有索賠的可能性。讓我們將其視覺化為駕駛員年齡的函式,

  1. > plot(a,yp0,type="l",ylim=c(.03,.12))
  2. > segments(a[k],yp1[k],a[k],yp2[k],col="red",lwd=3)

我們確實會為所有駕駛員預測相同的頻率,例如對於40歲的駕駛員,

  1. > cat("Frequency =",yp0[k]," confidence interval",yp1[k],yp2[k])
  2. Frequency = 0.07279295 confidence interval 0.07611196 0.06947393

現在我們考慮一種情況,其中我們嘗試考慮異質性,例如按年齡,

  • (標準)泊松迴歸

在(對數)泊松迴歸的想法是假設而不是的,我們應該有,其中

在這裡,讓我們只考慮一個解釋變數,即

我們有

  1. > plot(a,yp0,type="l",ylim=c(.03,.12))
  2. > abline(v=40,col="grey")
  3. > lines(a,yp1,lty=2)
  4. > lines(a,yp2,lty=2)
  5. > points(a[k],yp0[k],pch=3,lwd=3,col="red")
  6. > segments(a[k],yp1[k],a[k],yp2[k],col="red",lwd=3)

對於我們40歲的駕駛員的年化索賠頻率的預測現在為7.74%(比我們之前的7.28%略高)

  1. > cat("Frequency =",yp0[k]," confidence interval",yp1[k],yp2[k])
  2. Frequency = 0.07740574 confidence interval 0.08117512 0.07363636

不計算預期頻率,而是計算比率。

在水平藍線上方,溢價將高於未分段的溢價,而低於此水平。在這裡,年齡小於44歲的駕駛員將支付更多的費用,而年齡大於44歲的駕駛員將支付較少的費用。在引言中,我們討論了分段的必要性。如果我們考慮兩家公司,一個細分市場,而另一個細分市場持平,那麼年長的司機將去第一家公司(因為保險更便宜),而年輕的司機將去第二家公司(同樣,它更便宜)。問題在於,第二家公司暗中希望老司機能彌補這一風險。但是由於它們已經不存在了,所以保險價格會太便宜了,公司也會放寬資金(如果沒有破產的話)。因此,公司必須使用細分技術才能生存。現在,問題在於,我們不能確定溢價的這種指數衰減是溢價隨年齡變化的正確方法。一種替代方法是使用非引數技術來視覺化年齡對索賠頻率的真實影響。

  • 純非引數模型

第一個模型可以是考慮每個年齡的保費。可以考慮將駕駛員的年齡作為迴歸因素

  1. > plot(a0,yp0,type="l",ylim=c(.03,.12))
  2. > abline(v=40,col="grey")

在這裡,我們40歲司機的預測略低於前一個,但置信區間要大得多(因為我們關注的是投資組合中很小的一類:年齡恰好在40歲的司機)

Frequency = 0.06686658  confidence interval 0.08750205 0.0462311

在這裡,我們認為類別太小,溢價也太不穩定了:溢價將從40歲到41歲下降20%,然後從41歲到42歲上升50%。

  1. > diff(log(yp0[23:25]))
  2. 24 25
  3. -0.2330241 0.5223478

公司沒有機會採用這種策略來確保被保險人。保費的這種不連續性是這裡的重要問題。

  • 使用年齡段

另一種選擇是考慮年齡段,從非常年輕的駕駛員到高階駕駛員。

  1. > summary(regglmc1)
  2. Coefficients:
  3. Estimate Std. Error z value Pr(>|z|)
  4. (Intercept) -1.6036 0.1741 -9.212 < 2e-16 ***
  5. cut(ageconducteur, level1)(20,25] -0.4200 0.1948 -2.157 0.0310 *
  6. cut(ageconducteur, level1)(25,30] -0.9378 0.1903 -4.927 8.33e-07 ***
  7. cut(ageconducteur, level1)(30,35] -1.0030 0.1869 -5.367 8.02e-08 ***
  8. cut(ageconducteur, level1)(35,40] -1.0779 0.1866 -5.776 7.65e-09 ***
  9. cut(ageconducteur, level1)(40,45] -1.0264 0.1858 -5.526 3.28e-08 ***
  10. cut(ageconducteur, level1)(45,50] -0.9978 0.1856 -5.377 7.58e-08 ***
  11. cut(ageconducteur, level1)(50,55] -1.0137 0.1855 -5.464 4.65e-08 ***
  12. cut(ageconducteur, level1)(55,60] -1.2036 0.1939 -6.207 5.40e-10 ***
  13. cut(ageconducteur, level1)(60,65] -1.1411 0.2008 -5.684 1.31e-08 ***
  14. cut(ageconducteur, level1)(65,70] -1.2114 0.2085 -5.811 6.22e-09 ***
  15. cut(ageconducteur, level1)(70,75] -1.3285 0.2210 -6.012 1.83e-09 ***
  16. cut(ageconducteur, level1)(75,80] -0.9814 0.2271 -4.321 1.55e-05 ***
  17. cut(ageconducteur, level1)(80,85] -1.4782 0.3371 -4.385 1.16e-05 ***
  18. cut(ageconducteur, level1)(85,90] -1.2120 0.5294 -2.289 0.0221 *
  19. cut(ageconducteur, level1)(90,95] -0.9728 1.0150 -0.958 0.3379
  20. cut(ageconducteur, level1)(95,100] -11.4694 144.2817 -0.079 0.9366
  21. ---
  22. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  23. > lines(a,yp1,lty=2,type="s")
  24. > lines(a,yp2,lty=2,type="s")

在這裡,我們獲得以下預測,

對於我們40歲的駕駛員來說,現在的頻率為6.84%。

Frequency = 0.0684573  confidence interval 0.07766717 0.05924742

我們應該考慮其他類別,以檢視預測是否對值敏感,

對於我們40歲的司機來說,得出以下值:

Frequency = 0.07050614  confidence interval 0.07980422 0.06120807

所以在這裡,我們沒有消除不連續性問題。這裡的一個想法是考慮移動區域:如果目標是預測40歲駕駛員的頻率,則應該以40為中心。而對於35歲的駕駛員,間隔應該以35為中心。

  • 移動平均

因此,考慮一些區域性迴歸是很自然的,只應考慮年齡接近40歲的駕駛員。這幾乎頻寬有關。例如,介於35和45之間的驅動程式可以被認為接近40。在實踐中,我們可以考慮子集函式,也可以在迴歸中使用權重

  1. > value=40
  2. > h=5

要檢視發生了什麼,讓我們考慮一個動畫,感興趣的年齡在不斷變化,

在這裡,對於我們40歲的人來說,

Frequency = 0.06913391  confidence interval 0.07535564 0.06291218

我們獲得了可以解釋為區域性迴歸的曲線。但是在這裡,我們沒有考慮到35沒有像39那樣接近40。這裡的34假設與40距離很遠。顯然,我們可以改進該技術:可以考慮核心函式,即,越接近40,權重就越大。

  1. > value=40
  2. > h=5

在下面繪製

在這裡,我們對40的預測是

Frequency = 0.07040464  confidence interval 0.07981521 0.06099408

這就是核迴歸技術的思想。但是,如幻燈片中所述,可以考慮其他非引數技術,例如樣條函式。

  • 用樣條平滑

在R中,使用樣條函式很簡單(某種程度上比核心平滑器簡單得多)

  1. > library(splines)

現在對我們40歲司機的預測是

Frequency = 0.06928169  confidence interval 0.07397124 0.06459215

請注意,此技術與另一類模型有關,即所謂的廣義相加模型,即GAM。

該預測與我們上面獲得的預測非常接近(主要區別在於非常老的駕駛員)

Frequency = 0.06912683  confidence interval 0.07501663 0.06323702
  • 不同模型的比較

無論哪種方式,所有這些模型都是有效的。所以也許我們應該比較它們,

在上圖中,我們可以視覺化這9個模型的預測上限和下限。水平線是不考慮異質性的預測值。

參考文獻

1.用SPSS估計HLM層次線性模型模型

2.R語言線性判別分析(LDA),二次判別分析(QDA)和正則判別分析(RDA)

3.基於R語言的lmer混合線性迴歸模型

4.R語言Gibbs抽樣的貝葉斯簡單線性迴歸模擬分析

5.在r語言中使用GAM(廣義相加模型)進行電力負荷時間序列分析

6.使用SAS,Stata,HLM,R,SPSS和Mplus的分層線性模型HLM

7.R語言中的嶺迴歸、套索迴歸、主成分迴歸:線性模型選擇和正則化

8.R語言用線性迴歸模型預測空氣質量臭氧資料

9.R語言分層線性模型案例