Statistique de l'assurance STT6705V, partie 8
By arthur charpentier on Monday, October 25 2010, 15:35 - actuariat 10/11 STT6705V - Permalink
Les vidéos du dernier cours sont en ligne ici et là (désolé pour le retard). La semaine étant une semaine de relâche à Montréal, il n'y aura pas de cours cette semaine...
Pour reprendre les simulations qui n'ont pas marché au tableau (j'avais oublié restreindre un vecteur de paramètres et j'avais un problème sur le nom d'un paramètre), je mets ci-dessous des lignes de code qui tournent. Pour commencer, on importe le triangle, et on fait une simple régression log-Poisson,
> source("http://perso.univ-rennes1.fr/arthur.charpentier/bases.R")
> an <- 6; ligne = rep(1:an, each=an);
> colonne = rep(1:an, an)
> passe = (ligne + colonne - 1)<=an;
> n = sum(passe)
> INC=PAID
> INC[,2:6]=PAID[,2:6]-PAID[,1:5]
> Y = as.vector(INC)
> lig = as.factor(colonne)
> col = as.factor(ligne)
> base=data.frame(Y,lig,col,passe)
> reg=glm(Y~lig+col,data=base, family=poisson("log"))
> YP=predict(reg,newdata=base, type="response")
ensuite, on fait un peut de bootstrap pour générer des pseudo-triangles, et on les utilise pour quantifier l'erreur d'estimation du montant de provision,
> set.seed(1)
> R1=rep(NA,2000)
> R2=rep(NA,2000)
> R3=rep(NA,2000)
> for(s in 1:2000){
+ erreursim=sample(erreur,
+ size=36,replace=TRUE)
+ Ysim=YP+erreursim*sqrt(YP)
+ Ysim[passe==FALSE]=NA
+ basesim=data.frame(Ysim,lig,col)
+ if(min(Ysim[passe==TRUE])>0){
+ reg=glm(Ysim~lig+col,data=basesim, family=quasipoisson("log"))
+ YPs=predict(reg,newdata=base, type="response")
+ nsim=sum(passe==FALSE)
+ phi=summary(reg)$dispersion
+ MU=YPs[passe==FALSE]
# il manquait ici la spécification des indices [passe==FALSE]
+ R1[s]=sum(rpois(nsim,lambda=MU))
+ R2[s]=sum(rnbinom(nsim,mu=MU, size=MU/(phi*MU-1)))
+ R3[s]=sum(rgamma(nsim,shape=MU/phi, scale=phi))
+ }}
.On peut alors faire des dessins pour visualiser les trois distributions du montant de provisions (ou plutôt des scénarios générés de paiements futur), avec une loi de Poisson tout d'abord, en rouge,
Pour reprendre les simulations qui n'ont pas marché au tableau (j'avais oublié restreindre un vecteur de paramètres et j'avais un problème sur le nom d'un paramètre), je mets ci-dessous des lignes de code qui tournent. Pour commencer, on importe le triangle, et on fait une simple régression log-Poisson,
> source("http://perso.univ-rennes1.fr/arthur.charpentier/bases.R")
> an <- 6; ligne = rep(1:an, each=an);
> colonne = rep(1:an, an)
> passe = (ligne + colonne - 1)<=an;
> n = sum(passe)
> INC=PAID
> INC[,2:6]=PAID[,2:6]-PAID[,1:5]
> Y = as.vector(INC)
> lig = as.factor(colonne)
> col = as.factor(ligne)
> base=data.frame(Y,lig,col,passe)
> reg=glm(Y~lig+col,data=base, family=poisson("log"))
> YP=predict(reg,newdata=base, type="response")
ensuite, on fait un peut de bootstrap pour générer des pseudo-triangles, et on les utilise pour quantifier l'erreur d'estimation du montant de provision,
> set.seed(1)
> R1=rep(NA,2000)
> R2=rep(NA,2000)
> R3=rep(NA,2000)
> for(s in 1:2000){
+ erreursim=sample(erreur,
+ size=36,replace=TRUE)
+ Ysim=YP+erreursim*sqrt(YP)
+ Ysim[passe==FALSE]=NA
+ basesim=data.frame(Ysim,lig,col)
+ if(min(Ysim[passe==TRUE])>0){
+ reg=glm(Ysim~lig+col,data=basesim, family=quasipoisson("log"))
+ YPs=predict(reg,newdata=base, type="response")
+ nsim=sum(passe==FALSE)
+ phi=summary(reg)$dispersion
+ MU=YPs[passe==FALSE]
# il manquait ici la spécification des indices [passe==FALSE]
+ R1[s]=sum(rpois(nsim,lambda=MU))
+ R2[s]=sum(rnbinom(nsim,mu=MU, size=MU/(phi*MU-1)))
+ R3[s]=sum(rgamma(nsim,shape=MU/phi, scale=phi))
+ }}
.On peut alors faire des dessins pour visualiser les trois distributions du montant de provisions (ou plutôt des scénarios générés de paiements futur), avec une loi de Poisson tout d'abord, en rouge,








