En tarification, il est possible d’utiliser d’autres logiciels que R, en particulier, il semble que l’on puisse faire deux ou trois choses avec SAS…. J’en parle un peu car il semble que, paradoxalement, les asssureurs préfèrent encore SAS à R (par exemple). Et comme plusieurs étudiants m’avaient demandé “et comment on fait avec SAS ?“. Bon, par contre je ne mets que les choses de base, parce que SAS est assez limité sur ce qu’il peut faire….
Pour suivre un peu le plan du cours, la première étape est de définir une variable d’exposition dans la table,
DATA contrats; SET lib.contrats; lnexpo = log(expo); run;
Pour faire une régression de Poisson, ce n’est pas forcément compliqué,
PROC GENMOD DATA = base; ODS OUTPUT ParameterEstimates=Genmod1_Param Type3=Genmod1_Var Modelfit=Genmod1_InfoModele; MODEL nbsin = ageconducteur / dist = poisson link = log offset = lnexpo type3; RUN; QUIT;
La sortie SAS a alors l’allure suivante
The GENMOD Procedure Critère pour évaluer la qualité de l'ajustement Critère DF Valeur Valeur/DF Deviance 63E3 26872.5334 0.4237 Scaled Deviance 63E3 26872.5334 0.4237 Pearson Chi-Square 63E3 73275.5362 1.1553 Scaled Pearson X2 63E3 73275.5362 1.1553 Log Likelihood -18474.2667 Algorithm converged. Analyse des résultats estimés de paramètres Erreur Wald 95Limites Paramètre DF Estimation standard de confiance % Khi 2 Pr > Khi 2 Intercept 1 -3.5164 0.0851 -3.6832 -3.3496 1708.02 <.0001 ageconducteur 1 0.0168 0.0014 0.0141 0.0195 146.73 <.0001 Scale 0 1.0000 0.0000 1.0000 1.0000 NOTE: The scale parameter was held fixed. Statistiques LR pour Analyse de Type 3 Source DF Khi 2 Pr > Khi 2 ageconducteur 1 148.72 <.0001
Il est aussi possible de faire des GAM (i.e. du lissage de la variable explicative – continue – avec des fonctions splines)
PROC GAM DATA = base; MODEL nbsin = spline(ageconducteur) / dist = Poisson; OUTPUT OUT=gam PREDICTED; RUN; QUIT; PROC SORT DATA = gam NODUPKEY; BY age_cond; RUN; QUIT;
et on peut faire des prédictions avec ce modèle (la sortie n’apporte pas grand chose, en pratique),
DATA gam; SET gam; pred_nbsin_gam = exp(P_nbsin); KEEP ageconducteur pred_nbsin_gam; RUN;
Enfin, on peut tenter de faire un joli graphique. Pour cela, on calcule les prédictions de trois modèles, le premier étant des nombres moyens de sinistres par âge
PROC SORT DATA = base; BY ageconducteur; RUN; QUIT; PROC MEANS DATA = base NOPRINT; BY ageconducteur; VAR nbsin; WEIGHT expo; OUTPUT OUT = nbsin_age (DROP = _TYPE_ _FREQ_) MEAN=mo y_uni_nbsin; RUN; QUIT;
ensuite, on fait un modèle GLM, et un modèle GAM, et on récupère les sorties
PROC SORT DATA = nbsin_age; BY age_cond; RUN; QUIT; PROC SORT DATA = gam; BY age_cond; RUN; QUIT; DATA nbsin_age; MERGE nbsin_age gam; BY age_cond; RUN;
On essaye de faire le dessin (je passe les lignes de commande, il y en a une vingtaine)
Pour faire une régression quasiPoisson, le code a l’allure suivante,s
PROC GENMOD DATA = base; ODS OUTPUT ParameterEstimates=Genmod1bis_Param Type3=Genmod1bis_Var Modelfit=Genmod1bis_InfoModele; MODEL nbsin = ageconducteur / dist = poisson link = log offset = lnexpo type3 scale = deviance; RUN; QUIT;
La sortie donne alors l’estimation du paramètre de surdispersion (ou sur cet exemple de sousdispersion)
Analyse des résultats estimés de paramètres Erreur Wald 95Limites Paramètre DF Estimation standard de confiance % Khi 2 Pr > Khi 2 Intercept 1 -3.5164 0.0554 -3.6249 -3.4078 4031.29 <.0001 ageconducteur 1 0.0168 0.0009 0.0150 0.0186 346.32 <.0001 Scale 0 0.6509 0.0000 0.6509 0.6509
On notera que pour calculer le critère d’Akaike, ça n’est pas forcément trivial,
%MACRO CALCUL_AIC_BIC(infomodel=, param=); DATA _null_; SET &infomodel.; IF Criterion = "Log Likelihood" THEN CALL SYMPUT("Loglike", Value); IF Criterion = "Deviance" THEN CALL SYMPUT("n_etoile", Df); RUN; DATA _null_; SET ¶m. end=fin; RETAIN nb_df 0; nb_df = nb_df + df; IF fin THEN CALL SYMPUT("k", nb_df); RUN; DATA genmod_aic_bic; SET ¶m.; FORMAT Loglike 12.2 K 10. N 10. AIC_CALC 12.2 BIC_CALC 12.2; Loglike = 0; K = 0; N = 0; AIC_CALC = 0; BIC_CALC = 0; IF Parameter = "Intercept"; KEEP Loglike K N AIC_CALC BIC_CALC; RUN; DATA genmod_aic_bic; SET genmod_aic_bic; Loglike = &loglike.; K = &k.; N = %eval(&n_etoile. + &k.); AIC_CALC = 2 * Loglike + 2 * K; BIC_CALC = 2 * Loglike + K * log(N); RUN; PROC PRINT DATA = genmod_aic_bic; RUN; QUIT; %MEND CALCUL_AIC_BIC; %CALCUL_AIC_BIC(infomodel=Genmod2_InfoModele, param=Genmod2_Param);
OpenEdition suggests that you cite this post as follows:
Arthur Charpentier (September 22, 2010). La tarification avec SAS. Freakonometrics. Retrieved February 17, 2025 from https://doi.org/10.58079/ouev
puis-je télécharger le logiciel (sas) ? et comment? merci
oui, je pense qu’il n’y a pas de disquettes ou de CD d’installation ? par contre, il faut au préalable donner un numéro de carte bancaire, et le donner dans un an pour continuer à l’utiliser, car la licence n’est valide que pour une durée limitée ! comme je le rappelle dans http://freakonometrics.hypotheses.org/5279, SAS est un logiciel payant. Sur http://fr.wikipedia.org/wiki/Comparaison_de_logiciels_de_statistiques, le prix n’est plus indiqué, mais c’est parce que le prix dépend de l’utilisation, si c’est en tant que professionnel ou en tant que particulier, et si c’est pour un serveur ou un poste unique. Sur des sites genre http://www.developpez.net/forums/ il y a pas mal de discussions sur les prix. J’en parlais un peu dans un vieux billet aussi, http://freakonometrics.hypotheses.org/1173. Je citais une licence à 6000$ pour un PC, ou 28000$ par processeur, quand installé sur un serveur. Malheureusement, la page wikipedia mentionnée ne fait plus mention de ces informations. En fait, une recherche rapide sur google montre qu’il n’existe plus aucune mention du prix d’une licence SAS… Au risque de me répéter (http://freakonometrics.hypotheses.org/5279) il existe du libre et du gratuit qui permet de faire beaucoup de choses.
Bonjour Arthur,
Y a t il moyen de recuperer la base de donnees sur laquelle tu as travaille? Je suis interesse le survenance des sinistres et non pas le montant,
En te remerciant,
De mémoire (qui parfois me joue des tours) il s’agit de la base utilisée dans http://freakonometrics.hypotheses.org/2311
Bonjour Arthur,
Pour la petite histoire, j’ai eu une discussion avec un X-Ensae qui a travaillé sur les premières versions de SAS.
Et il m’a rappelé quelques éléments historiques qui en font son succès auprès des compagnies d’assurances, banques, voir l’INSEE :
1) Le mainframe (ou AS400) est la principale plateforme de stockage des données des compagnies d’assurance (implantation historique),
2) SAS a été le premier logiciel de traitement statistiques à apparaitre sur le marché et il a été développé sur mainframe,
3) Il n’a pas de problème avec les volumétries de données des gros assureurs (manipulation, traitements préparatoires, calculs, etc…) contrairement à ses concurrents qui ont été développé sur PC.
Avec ces éléments, on comprend l’adoption générale de SAS auprès des grosses boites…
REPONSE: merci pour ces rappels historiques, j’adore ça… et je suis conscient de l’inertie énorme qui peut exister !