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