Diberikan \(n\) pemegang polis dalam periode waktu \(D1\) sampai \(D2\).
n=983
D1=as.Date("01/01/1993",'%d/%m/%Y')
D2=as.Date("31/12/2013",'%d/%m/%Y')
# Tanggal-tanggal yang ada dalam kurun waktu [D1,D2]
L=D1+0:(D2-D1)
# Tetapkan himpunan random
set.seed(1)
# Ambil sampel sebanyak n dengan pengembalian. Sampel ini menggambarkan waktu kedatangan klaim pertama dalam periode [D1,D2].
arrival=sample(L,size=n,replace=TRUE)
# Pesan vektor exposure dan depature
exposure=N=rep(NA,n)
depature=rep(D2,n)
set.seed(2)
# Pembentukkan kedatangan klaim beserta exposurenya untuk pemegang polis yang loyal
for(i in 1:n){
expo=D2-arrival[i]
w=0
while(max(w)<expo){
w=c(w,max(w)+1+trunc(rexp(1,1/1000)))} # trunc untuk membulatkan waktu antar klaim harapannya 1000 hari
exposure[i]=depature[i]-arrival[i]
N[i]=max(0,length(w)-2) # banyaknya klaim orang ke i, kita kurangi 2 untuk menghilangkan klaim pertama dan klaim akhir yang di luar D2.
}
# Tabel banyaknya Klaim dan eksposur yang dihasilkan
df=data.frame(N=N,E=exposure/365)
head(df)
## N E
## 1 6 15.432877
## 2 4 13.191781
## 3 2 8.975342
## 4 0 1.928767
## 5 2 16.775342
## 6 1 2.134247
i1=which(df$N>0) # kumpulan pemegang polis yang klaimnya >0
i0=which(df$N==0) # kumpulan pemegang polis yang klaimnya=0
h1=hist(df$E[i1],probability = TRUE, main="Histogram Eksposur dengan Klaim >0")
h0=hist(df$E[i0],probability = TRUE,main="Histogram Eksposur dengan Klaim =0")
plot(h1$mids,h1$density,type='s',lwd=2,col='red')
lines(h0$mids,h0$density,type='s',lwd=2,col='blue')
n=983
D1=as.Date("01/01/1993",'%d/%m/%Y')
D2=as.Date("31/12/2013",'%d/%m/%Y')
# Tanggal-tanggal yang ada dalam kurun waktu [D1,D2]
L=D1+0:(D2-D1)
# Tetapkan himpunan random
set.seed(1)
# Ambil sampel sebanyak n dengan pengembalian. Sampel ini menggambarkan waktu kedatangan klaim pertama dalam periode [D1,D2].
arrival=sample(L,size=n,replace=TRUE)
# Pesan vektor exposure dan depature
exposure=N=rep(NA,n)
depature=rep(D2,n)
set.seed(2)
# Pembentukkan kedatangan klaim beserta exposurenya untuk pemegang polis yang loyal
for(i in 1:n){
expo=D2-arrival[i]
w=c(0,0)
while((max(w)<expo)&(max(diff(w))<1500)){
w=c(w,max(w)+1+trunc(rexp(1,1/1000)))} # trunc untuk membulatkan waktu antar klaim harapannya 1000 hari
if(max(diff(w))>1500){
depature[i]=arrival[i]+max(w[-length(w)])+1500
}
exposure[i]=depature[i]-arrival[i]
N[i]=max(0,length(w)-3) # banyaknya klaim orang ke i, kita kurangi 2 untuk menghilangkan klaim pertama dan klaim akhir yang di luar D2.
}
# Tabel banyaknya Klaim dan eksposur yang dihasilkan
df=data.frame(N=N,E=exposure/365)
head(df)
## N E
## 1 0 4.109589
## 2 2 5.621918
## 3 3 9.128767
## 4 0 1.928767
## 5 4 11.838356
## 6 0 2.134247
i1=which(df$N>0) # kumpulan pemegang polis yang klaimnya >0
i0=which(df$N==0) # kumpulan pemegang polis yang klaimnya=0
h1=hist(df$E[i1],probability = TRUE, main="Histogram Eksposur dengan Klaim >0")
h0=hist(df$E[i0],probability = TRUE,main="Histogram Eksposur dengan Klaim =0")
plot(h1$mids,h1$density,type='s',lwd=2,col='red')
lines(h0$mids,h0$density,type='s',lwd=2,col='blue')
Kadang pemegang polis tidak puas dengan pelayanan pembayaran klaim. Misalkan setelah proses pembayaran klaim pertama terdapat peluang 50% pemegang polis keluar dari asuransi ini. Tetapi bisa juga dikarenakan klaim pertama ini menyebabkan mobilnya rusak sehingga tidak dapat dikendarai lagi, sehingga tidak ada keuntungan membeli asuransi bermotor lagi.
n=983
D1=as.Date("01/01/1993",'%d/%m/%Y')
D2=as.Date("31/12/2013",'%d/%m/%Y')
# Tanggal-tanggal yang ada dalam kurun waktu [D1,D2]
L=D1+0:(D2-D1)
# Tetapkan himpunan random
set.seed(1)
# Ambil sampel sebanyak n dengan pengembalian. Sampel ini menggambarkan waktu kedatangan klaim pertama dalam periode [D1,D2].
arrival=sample(L,size=n,replace=TRUE)
# Pesan vektor exposure dan depature
exposure=N=rep(NA,n)
depature=rep(D2,n)
set.seed(2)
# Pembentukkan kedatangan klaim beserta exposurenya untuk pemegang polis yang loyal
for(i in 1:n){
expo=D2-arrival[i]
w=0
stay=TRUE
while((max(w)<expo)&(stay==TRUE)){
w=c(w,max(w)+1+trunc(rexp(1,1/1000))) # trunc untuk membulatkan waktu antar klaim harapannya 1000 hari
stay=sample(c(TRUE,FALSE),prob=c(0.5,0.5),size=1)}
N[i]=length(w)-2
if(stay==FALSE){
depature[i]=arrival[i]+max(w)
}
exposure[i]=depature[i]-arrival[i]
N[i]=max(0,length(w)-2) # banyaknya klaim orang ke i, kita kurangi 2 untuk menghilangkan klaim pertama dan klaim akhir yang di luar D2.
}
# Tabel banyaknya Klaim dan eksposur yang dihasilkan
df=data.frame(N=N,E=exposure/365)
head(df)
## N E
## 1 1 5.515068
## 2 1 3.191781
## 3 0 1.430137
## 4 0 1.928767
## 5 2 7.909589
## 6 0 2.183562
i1=which(df$N>0) # kumpulan pemegang polis yang klaimnya >0
i0=which(df$N==0) # kumpulan pemegang polis yang klaimnya=0
h1=hist(df$E[i1],probability = TRUE, main="Histogram Eksposur dengan Klaim >0")
h0=hist(df$E[i0],probability = TRUE,main="Histogram Eksposur dengan Klaim =0")
plot(h1$mids,h1$density,type='s',lwd=2,col='red')
lines(h0$mids,h0$density,type='s',lwd=2,col='blue')
reg=glm(N~1+offset(log(E)), data=df, family=poisson)
summary(reg)
##
## Call:
## glm(formula = N ~ 1 + offset(log(E)), family = poisson, data = df)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.5003 -0.8623 -0.4449 0.3851 3.4103
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.73600 0.03594 -48.3 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 924.93 on 982 degrees of freedom
## Residual deviance: 924.93 on 982 degrees of freedom
## AIC: 1956.7
##
## Number of Fisher Scoring iterations: 5
data1<- read.csv("datapolismotor.csv")
str(data1)
## 'data.frame': 413169 obs. of 11 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ PolicyID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ClaimNb : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Exposure : num 0.09 0.84 0.52 0.45 0.15 0.75 0.81 0.05 0.76 0.34 ...
## $ Power : Factor w/ 12 levels "d","e","f","g",..: 4 4 3 3 4 4 1 1 1 6 ...
## $ CarAge : int 0 0 2 2 0 0 1 0 9 0 ...
## $ DriverAge: int 46 46 38 38 41 41 27 27 23 44 ...
## $ Brand : Factor w/ 7 levels "Fiat","Japanese (except Nissan) or Korean",..: 2 2 2 2 2 2 2 2 1 2 ...
## $ Gas : Factor w/ 2 levels "Diesel","Regular": 1 1 2 2 1 1 2 2 2 2 ...
## $ Region : Factor w/ 10 levels "R11","R23","R24",..: 9 9 5 5 6 6 9 9 5 1 ...
## $ Density : int 76 76 3003 3003 60 60 695 695 7887 27000 ...
i1=which(data1$ClaimNb>0)
i0=which(data1$ClaimNb==0)
h1=hist(data1$Exposure[i1],probability = TRUE)
h0=hist(data1$Exposure[i0],probability = TRUE)
plot(h1$mids,h1$density,type='s',lwd=2,col='red')
lines(h0$mids,h0$density,type='s',lwd=2,col='blue')