{"word_count": 451, "character_count": 3744}
Un billet rapide pour mettre en ligne des parties du code tapé en cours, mercredi dernier. On avait commencé par convertir la feuille du classeur excel en un fichier texte, pour faciliter la lecture,&#62; setwd("C:\\Users\\savsalledecours\\Desktop")&#62; triangle=read.table("exACT2040.csv",header=TRUE,sep=";")&#62; triangle  ANNEE   X0   X1   X2   X3   X4   X51  2000 3209 4372 4411 4428 4435 44562  2001 3367 4659 4696 4720 4730   NA3  2002 3871 5345 5398 5420   NA   NA4  2003 4239 5917 6020   NA   NA   NA5  2004 4929 6794   NA   NA   NA   NA6  2005 5217   NA   NA   NA   NA   NAL'idée - quand on importe un triangle - est de récupérer une base sous la forme précédente, avec des valeurs manquantes dans la partie inférieure du triangle (on verra l’intérêt quand on fait une régression). On avait ensuite calculé les facteurs de transition, et en même temps complété le triangle,&#62; T=triangle[,2:7]&#62; rownames(T)=triangle$ANNEE&#62; T2=T&#62; n=ncol(T)&#62; L=rep(NA,n-1)&#62; for(j in 1:(n-1)){+ L[j]=sum(T[1:(n-j),j+1])/sum(T[1:(n-j),j])+ T2[(n-j+1):n,j+1]=L[j]*T2[(n-j+1):n,j]+ }Les facteurs de transition sont ici,&#62; L[1] 1.380933 1.011433 1.004343 1.001858 1.004735et le triangle complété&#62; T2       X0       X1       X2       X3       X4       X52000 3209 4372.000 4411.000 4428.000 4435.000 4456.0002001 3367 4659.000 4696.000 4720.000 4730.000 4752.3972002 3871 5345.000 5398.000 5420.000 5430.072 5455.7842003 4239 5917.000 6020.000 6046.147 6057.383 6086.0652004 4929 6794.000 6871.672 6901.518 6914.344 6947.0842005 5217 7204.327 7286.691 7318.339 7331.939 7366.656Le montant de provision est ici en faisant la différence entre la charge ultime (dans la dernière colonne) et les derniers paiements observés (sur la seconde diagonale)&#62; CU=T2[,n]&#62; Pat=diag(as.matrix(T2[,n:1]))&#62; Ri=CU-Pat&#62; R=sum(Ri)soit, numériquement&#62; R[1] 2426.985On avait alors vu que l'on pouvait calculer un tail factor, en supposant une décroissance exponentielle des facteurs de transition, et on rajoutait alors une colonne correspondant au montant ultime, par année d'accident,&#62; logL=log(L-1)&#62; t=1:5&#62; b=data.frame(logL,t)&#62; reg=lm(logL~t,data=b)&#62; logLp=predict(reg,newdata=data.frame(t=6:100))&#62; Lp=exp(logLp)+1&#62; Linf=prod(Lp)&#62; T3=T2&#62; T3$Xinf=T3$X5*LinfOn a ici&#62; T3       X0       X1       X2       X3       X4       X5     Xinf2000 3209 4372.000 4411.000 4428.000 4435.000 4456.000 4459.1492001 3367 4659.000 4696.000 4720.000 4730.000 4752.397 4755.7552002 3871 5345.000 5398.000 5420.000 5430.072 5455.784 5459.6392003 4239 5917.000 6020.000 6046.147 6057.383 6086.065 6090.3662004 4929 6794.000 6871.672 6901.518 6914.344 6947.084 6951.9932005 5217 7204.327 7286.691 7318.339 7331.939 7366.656 7371.862(je laisse reprendre le code pour calculer le montant de provisions). Enfin, on avait montré comment utiliser une régression pondérée, pour calculer les facteurs de transition,&#62; T4=as.matrix(T$X0,n,1)&#62; for(j in 1:(n-1)){+ Y=T[,j+1]+ X=T[,j]+ base=data.frame(X,Y)+ reg=lm(Y~0+X,weights=1/X)+ T4=cbind(T4,+ predict(reg,+ newdata=data.frame(X=T4[,j]+ )))+ }Ce qui donnait la même projection que la méthode Chain Ladder&#62; T4  [,1]     [,2]     [,3]     [,4]     [,5]     [,6]1 3209 4431.414 4482.076 4501.543 4509.909 4531.2632 3367 4649.601 4702.758 4723.184 4731.961 4754.3673 3871 5345.591 5406.705 5430.188 5440.279 5466.0394 4239 5853.775 5920.698 5946.414 5957.464 5985.6735 4929 6806.619 6884.435 6914.337 6927.186 6959.9866 5217 7204.327 7286.691 7318.339 7331.939 7366.656La suite mercredi prochain, même si on risque d'aller très vite sur la méthode de Mack (et les calculs d'erreur quadratique moyenne pour arriver à la régression de Poisson). A suivre donc...