## Triangle des montants cumulés des donnees de Partrat: triangle.cumule <- matrix(c(3209,4372,4411,4428,4435,4456,3367,4659,4696,4720,4730,NA,3871,5345,5398,5420,NA,NA,4239,5917,6020,NA,NA,NA,4929,6794,NA,NA,NA,NA,5217,NA,NA,NA,NA,NA), nrow=6, ncol=6, byrow=T, dimnames = list(origin=c("1988","1989","1990","1991","1992","1993"), dev=c("0","1","2","3","4","5"))) class(triangle.cumule) <- vector(mode = "character", length = 2) class(triangle.cumule)[1] <- "triangle" class(triangle.cumule)[2] <- "matrix" triangle.cumule ## Calcul du triangle des increments a la main: triangle.increments <- cbind(triangle.cumule[ ,1], t(apply(triangle.cumule, 1, diff)) ) triangle.increments ## et pour passer du triangle des paiements incrémentaux au triangle des paiements cumulés triangle.cumule <- t( apply(triangle.increments, 1, cumsum) ) ############################################################# ############ PROVISIONNEMENT PAR UN MODELE GLM ############## ############################################################# donnees.increments <- as.vector(triangle.increments[is.na(as.vector(triangle.increments)) == FALSE]) donnees.cumules <- as.vector(triangle.cumule[is.na(as.vector(triangle.cumule)) == FALSE]) vect.anneesDev <- NULL for (j in 1:nrow(triangle.increments)) { vect.anneesDev <- c(vect.anneesDev, rep(dimnames(triangle.increments)$dev[j], times = nrow(triangle.increments)-j+1)) } vect.anneesDev <- as.factor(vect.anneesDev) vect.anneesSurv <- NULL for (i in 1:nrow(triangle.increments)) { vect.anneesSurv <- c(vect.anneesSurv, dimnames(triangle.increments)$origin[1:(length(dimnames(triangle.increments)$origin)-i+1)]) } vect.anneesSurv <- as.factor(vect.anneesSurv) donnees <- data.frame(Survenance = vect.anneesSurv, Developpement = vect.anneesDev, Increments = donnees.increments) donnees ## On estime un modèle de Poisson (fonction lien log) Poisson.glm <- glm(Increments ~ Survenance + Developpement, data = donnees, family = poisson(link=log)) summary(Poisson.glm) exp(predict(Poisson.glm)) predict(Poisson.glm, type = "response") ## On construit le triangle (complet) des \hat{mu}_ij triangle.increments annees.origin <- gl(n=nrow(triangle.increments), k=1, length=nrow(triangle.increments)*ncol(triangle.increments), labels=dimnames(triangle.increments)$origin) delais.reglement <- gl(n=ncol(triangle.increments), k=nrow(triangle.increments), length=nrow(triangle.increments)*ncol(triangle.increments), labels=dimnames(triangle.increments)$dev) (donnees.a.predire <- data.frame(Survenance = annees.origin, Developpement = delais.reglement)) Previsions.increments <- predict(Poisson.glm, newdata = donnees.a.predire, type = "response") (rectangle.previsions <- matrix(data = Previsions.increments, nrow = nrow(triangle.increments), ncol = ncol(triangle.increments), byrow = FALSE)) Provisions.parExercice.glm <- numeric(length = nrow(triangle.increments)) Provisions.parExercice.glm[1] <- 0 for (i in 2:nrow(triangle.increments)) { indices.incrementsAcompter <- (ncol(rectangle.previsions)-i+2):ncol(rectangle.previsions) Provisions.parExercice.glm[i] <- sum(rectangle.previsions[i,indices.incrementsAcompter]) } Provisions.parExercice.glm Provision.totale.glm <- sum(Provisions.parExercice.glm) Provision.totale.glm ######################### ####### BOOTSTRAP ####### #########################