Devoir Libre 1
Devoir Libre 1
Devoir Libre 1
BIDAOUI MOUHSSINE
2eme année Actuariat-Finance
N:7
Exercice 1 :
Résumé :
Afin de modéliser notre base de données des montants des sinistres, on va
proposer des modèles mathématiques pertinents. Puis, on va essayer de
calibrer ces modèles, en estimant ses paramètres. Ainsi, il faut valider les
modèles à l’aide des tests statistiques et finalement choisir le meilleur modèle
selon les critères établis en cours.
1ere étape : Importer la base de données.
> montant=read.csv("montantssinistre7.csv",sep=';',stringsAsFactors
= FALSE);
> montant$x=sub(",",".",montant$x)
> montant$x=as.numeric(as.character(montant$x))
> ks.test(x,pexp,fitexpo[1]);
One-sample Kolmogorov-Smirnov test
data: x
D = 0.1392, p-value < 2.2e-16
alternative hypothesis: two-sided
> ks.test(x,pgamma,fitgamma[1],fitgamma[2]);
One-sample Kolmogorov-Smirnov test
data: x
D = 0.010794, p-value = 0.9515
alternative hypothesis: two-sided
> # p-value > 5% On accepte H0
> ks.test(x,plnorm,fitlognormal[1],fitlognormal[2]);
Le seul modèle ou on a trouvé une p-value > 5% est effectivement celui de la loi
gamma. Donc, cette dernière est la seule loi qui modélise notre base de
données.
Utiliser le AIC dans ce cas n’a pas d’intérêt :
> aiclog=4-fitdistr(x,"lognormal")$loglik;
> aiclog;
[1] 5904.687
> aicgamma=4-fitdistr(x,"gamma")$loglik;
Warning messages:
1: In densfun(x, parm[1], parm[2], ...) : production de NaN
2: In densfun(x, parm[1], parm[2], ...) : production de NaN
3: In densfun(x, parm[1], parm[2], ...) : production de NaN
4: In densfun(x, parm[1], parm[2], ...) : production de NaN
5: In densfun(x, parm[1], parm[2], ...) : production de NaN
> aicgamma;
[1] 5775.839
> aicexp=2-fitdistr(x,"exponential")$loglik;
> aicexp;
[1] 6019.132
> #Si on a le choix entre plusieurs modèles on choisit celui qui a
Le plus petit AIC.
Exercice 2 :
Résumé :
La modélisation des nombres de sinistres n’est pas différente de la
modélisation précédente. En effet, on va procéder de la même manière.
Commençons par une analyse exploratoire des données et proposons quelques
modèles adéquats. Ensuite, on va estimer les paramètres de chaque modèle et
faire un ajustement. Et enfin valider ou non le modèle concerné à travers le
test de KHI DEUX.
1ere étape : Importer, visualiser et analyser la base de données :
> getwd()
[1] "C:/Users/By_the_way/Documents"
> library(MASS)
> Mouhssine=read.csv("nombresinistre7.csv",sep=";")
> x=Mouhssine$x
> y=table(x)
data: k
X-squared = 1366.1, df = 5, p-value < 2.2e-16
> qchisq(0.95,4)
[1] 9.487729
> pvalue=1-pchisq(chisq.test(k,p=nn)$statistic,4)
> pvalue
X-squared
0
P-value < 5%, ce qui explique les résultats précédents (La loi binomiale négative
ne modélise la base de données).
Loi binomiale :
> length(x)*dbinom(0:5,size=parmbino$size,prob=parmbino$prob)<5;
[1] FALSE FALSE FALSE FALSE FALSE FALSE
> k=rep(0,length(y))
> k
[1] 0 0 0 0 0 0
> # k=0 0 0 0 0 0 0
> k[1:length(y)]=y[1:length(y)]
> k
[1] 9 130 392 806 697 266
> pp=c(dbinom(0:4,size=parmbino$size,prob=parmbino$prob),1-sum(dbinom
(0:4,size=parmbino$size,prob=parmbino$prob)));
> pp
[1] 0.005417338 0.049826131 0.183310952 0.337201628 0.310142238 0.114
101712
> length(x)*pp
[1] 12.45988 114.60010 421.61519 775.56374 713.32715 262.43394
> chisq.test(k,p=pp);
Code R :
> #Exercice 2 : (nombres sinistres)
> x=montant$x >
plot(ecdf(x))
> library(MASS)
> fitlognormal=fitdistr(x,"lognormal")$estimate
> fitlognormal
> fitexpo=fitdistr(x,"exponential")$estimate;
> fitexpo
> fitgamma=fitdistr(x,"gamma")$estimate;
> fitgamma
> curve(plnorm(x, fitlognormal[1], fitlognormal[2]), add=TRUE ,lwd= 2, col
="blue")
>curve(pexp(x, fitexpo[1]), add=TRUE ,lwd=2, col="red")
> curve(pgamma(x, fitgamma[1],fitgamma[2]), add=TRUE ,lwd=2, col=" green"
);
> ks.test(x,pexp,fitexpo[1])
> ks.test(x,pgamma,fitgamma[1],fitgamma[2])
> # p-value > 5% On accepte H0
> ks.test(x,plnorm,fitlognormal[1],fitlognormal[2])
> aiclog=4-fitdistr(x,"lognormal")$loglik
> aiclog
> aicgamma=4-fitdistr(x,"gamma")$loglik
> aicgamma;
> aicexp=2-fitdistr(x,"exponential")$loglik
> aicexp
#Si on a le choix entre plusieurs modèles on choisit celui qui a Le plu
s petit AIC.
> #Binomiale :
> parmbino=goodfit(x,"binom",par=list(size=5))$par
> parmbino
> plot(goodfit(x,"binom",par=list(size=5)),main="ajustement loi binomiale")
> length(x)*dbinom(0:5,size=parmbino$size,prob=parmbino$prob)<5;> goodfit(x
,"binom",par=list(size=5))
> k=rep(0,length(y))
> k[1:length(y)]=y[1:length(y)]
> k
> pp=c(dbinom(0:4,size=parmbino$size,prob=parmbino$prob),1-sum(dbinom(0:4,s
ize=parmbino$size,prob=parmbino$prob)))
> pp
> length(x)*pp
> chisq.test(k,p=pp)
> qchisq(0.95,4)
> pvalue=1-pchisq(chisq.test(k,p=pp)$statistic,4)
> pvalue