Actuariat de l’Assurance Non-Vie #3

Pour le troisème cours d’actuariat de l’assurance non-vie à l’ENSAE (oui, j’ai pris un peu d’avance), on abordera la modélisation de la fréquence de sinistres. Les slides sont en ligne,

Les données utilisées sont accessibles avec le code suivant
> sinistre=read.table(
"http://freakonometrics.free.fr/sinistreACT2040.txt",header=TRUE,sep=";")
> contrat=read.table(
"http://freakonometrics.free.fr/contractACT2040.txt",header=TRUE,sep=";")
> contrat=contrat[,1:10]
> names(contrat)[10]="region"
 
> sinistre_RC=sinistre[(sinistre$garantie=="1RC")
&(sinistre$cout>0),]
> T_RC=table(sinistre_RC$nocontrat)
> T1_RC=as.numeric(names(T_RC))
> T2_RC=as.numeric(T_RC)
> nombre_1_RC = data.frame(nocontrat=T1_RC,nb_RC=T2_RC)
> I_RC = contrat$nocontrat%in%T1_RC
> T1_RC= contrat$nocontrat[I_RC==FALSE]
> nombre_2_RC = data.frame(nocontrat=T1_RC,nb_RC=0)
> nombre_RC=rbind(nombre_1_RC,nombre_2_RC)
 
> sinistre_DO=sinistre[(sinistre$garantie=="2DO")
&(sinistre$cout>0),]
> T_DO=table(sinistre_DO$nocontrat)
> T1_DO=as.numeric(names(T_DO))
> T2_DO=as.numeric(T_DO)
> nombre_1_DO = data.frame(nocontrat=T1_DO,nb_DO=T2_DO)
> I_DO = contrat$nocontrat%in%T1_DO
> T1_DO= contrat$nocontrat[I_DO==FALSE]
> nombre_2_DO = data.frame(nocontrat=T1_DO,nb_DO=0)
> nombre_DO=rbind(nombre_1_DO,nombre_2_DO)
> freq = merge(contrat,nombre_RC)
> freq = merge(freq,nombre_DO)

Et je met aussi en ligne une petite fonction pour obtenir des tableaux de contingence (on parlera des méthodes de biais minimal)

> freq_sin = function(nom="nb_DO"){
+ N = freq[,nom]
+ E= freq$exposition
+ X1=freq$carburant
+ X2=cut(freq$agevehicule,c(0,3,10,101),right=FALSE)
+ N_polices = table(X1,X2)
+ E_agg=aggregate(E, by = list(X1 = X1, X2 = X2), sum)
+ N_exposition=N_polices
+ N_exposition[1:nrow(N_exposition),1:ncol(N_exposition)]=
+ matrix(E_agg$x,nrow(N_exposition),ncol(N_exposition))
+ N_agg=aggregate(N, by = list(X1 = X1, X2 = X2), sum)
+ N_sinistres=N_polices
+ N_sinistres[1:nrow(N_sinistres),1:ncol(N_sinistres)]=
+ matrix(N_agg$x,nrow(N_sinistres),ncol(N_sinistres))
+ N_sinistres
+ Freq_sinistres = N_sinistres/N_exposition
+ return(list(Exp=N_exposition,Sin=N_sinistres,Freq=Freq_sinistres))}

Leave a Reply

Your email address will not be published. Required fields are marked *