cdm

cdm

##set_cdm

Description

L'action cdm (Compound Distribution ModelingModélisation de la fréquence et de la sévérité des sinistres via une distribution composée (ex: Poisson-Gamma), utilisée pour estimer la charge totale des pertes et les risques extrêmes sur SAS Viya.) est l'outil ultime pour simuler des pertes agrégées. Imaginez que vous soyez un assureur : vous voulez savoir combien vous allez débourser au total cette année. Cette action combine une distribution de fréquence (le nombre de sinistres) avec une distribution de sévérité (le coût de chaque sinistre) pour générer une vue d'ensemble du risque. C'est un peu comme essayer de deviner combien de bonbons tomberont d'une piñata et quelle est la taille moyenne de chaque bonbon, mais avec des maths beaucoup plus sérieuses et moins de sucre.

Syntaxe Officielle
proc cas;
cdm.cdm /
aggLossModelType="COLLECTIVERISK" | "CUSTOM" | "PUREPREMIUM"
countDistributions={{name="dist", parmValues={{value=v, standardError=se}}}}
countStore={name="table"}
countVariable="variable"
severityDefinitions={name="table"}
severityDistributions={"dist1", "dist2"}
severityStore={name="table"}
nReplicates=nombre
seed=entier
output={outSample={name="table"}}
outsum={outSummary={name="table"}};
run;

Paramètres Clés

Nom du paramètre Description
severityDefinitions Obligatoire. Spécifie la table CAS contenant les définitions des distributions de sévérité. C'est votre bibliothèque de types de sinistres.
countDistributions Définit les distributions de fréquence (ex: Poisson, Binomiale Négative) et les valeurs de leurs paramètres.
aggLossModelType Définit le type de modèle : COLLECTIVERISK (somme de sévérités i.i.d.), PUREPREMIUM (produit fréquence x sévérité) ou CUSTOM.
severityStore Permet d'utiliser un 'item store' provenant de l'action 'severity' pour charger des modèles pré-estimés.
nReplicates Le nombre de réplications pour la simulation. Plus il y en a, plus c'est précis, mais plus votre processeur va chauffer !
seed La graine aléatoire. Utilisez la même valeur si vous voulez que vos résultats soient reproductibles lors de la prochaine réunion.

Préparation des données

Préparation des définitions de sévérité et des données d'entrée

Avant de lancer la simulation, nous créons une table de définitions de sévérité (ici une Gamma et une Lognormale) et une table de données avec des variables explicatives.

1DATA mycas.sev_defs;
2 LENGTH _dist_ $20 _var_ $20 _param_ $20;
3 INPUT _dist_ $ _var_ $ _param_ $ _value_;
4 DATALINES;
5gamma loss theta 500
6gamma loss alpha 2
7lognormal loss mu 5
8lognormal loss sigma 1.5
9;
10RUN;
11DATA mycas.policy_data;
12 INPUT policy_id $ car_type $;
13 DATALINES;
14P1 Sedan
15P2 SUV
16P3 Truck
17;
18RUN;

Exemples d'utilisation

Simulation basique de risque collectif

Une simulation simple utilisant une distribution de Poisson pour la fréquence et les définitions de sévérité précédentes.

1PROC CAS; cdm.cdm / severityDefinitions={name="sev_defs"}, countDistributions={{name="POISSON", parmValues={{value=2}}}}, nReplicates=10000, seed=123, outsum={outSummary={name="summary_loss"}}; RUN;
Résultat Attendu :
Une table CAS 'summary_loss' contenant les statistiques descriptives (moyenne, écart-type, etc.) de la perte agrégée simulée.
Modèle complexe avec ajustements et stockage de résultats

Cet exemple utilise un modèle de pure premium, génère un échantillon complet et applique une logique de calcul personnalisée via 'adjustedSeverity'.

1PROC CAS; cdm.cdm / aggLossModelType="PUREPREMIUM", severityDefinitions={name="sev_defs"}, severityDistributions={"gamma"}, countDistributions={{name="NEGBINP2", parmValues={{value=1.5}, {value=0.8}}}}, adjustedSeverity={code="_AGGADJSEV_ = min(_SEV_, 5000);", symbols={"_AGGADJSEV_"}}, nReplicates=50000, seed=999, OUTPUT={outSample={name="full_sample"}, sampleVariable="TotalLoss"}, outsum={outSummary={name="detailed_stats"}, percentiles={{percentile=95, variable="VaR_95"}, {percentile=99, variable="VaR_99"}}}; RUN;
Résultat Attendu :
Génération d'une table 'full_sample' avec 50 000 points de données et d'une table 'detailed_stats' incluant la Value-at-Risk (VaR) à 95% et 99%.