La acción `cdm` en el conjunto de acciones `cdm` (Compound Distribution Model) se utiliza para simular una muestra de una distribución de pérdida agregada, que se construye a partir de distribuciones de frecuencia y severidad. Es una herramienta fundamental en el modelado de riesgos para estimar la distribución de pérdidas totales en un período determinado.
| Parámetro | Descripción |
|---|---|
| adjustedSeverity | Especifica los símbolos de severidad ajustados y un programa SAS para calcularlos. Se estima una distribución agregada para cada símbolo de severidad ajustado. |
| aggLossModelType | Especifica el tipo de modelo a utilizar para la pérdida agregada. |
| countDistributions | Especifica las distribuciones de conteo y los valores de sus parámetros. |
| countStore | Especifica una tabla de almacén de ítems para leer las estimaciones del modelo de conteo. Debe ser una tabla creada por la acción `countregFitModel`. |
| countVariable | Especifica la variable de conteo. |
| display | Especifica una lista de tablas de resultados para enviar al cliente para su visualización. |
| idVariable | Especifica el nombre de la variable de ID de replicación. |
| ignoreParmCovariance | Si es `TRUE`, ignora las estimaciones de covarianza de los parámetros y utiliza solo sus errores estándar para perturbarlos. |
| maxCountDraw | Especifica un límite superior en el número de eventos de pérdida (conteo) que se utiliza para simular un punto de muestra de pérdida agregada. |
| nPerturbedSamples | Especifica el número de muestras perturbadas a producir para realizar el análisis de perturbación de parámetros. |
| nReplicates | Especifica un número que controla el tamaño de la muestra de la distribución compuesta que la acción simula. |
| outDraw | Especifica los detalles de la tabla de salida para escribir los sorteos de severidad. |
| output | Especifica los detalles de la tabla de salida para escribir las muestras. |
| outputTables | Lista los nombres de las tablas de resultados para guardar como tablas CAS en el servidor. |
| outsum | Especifica los detalles de la tabla de salida para escribir estadísticas de resumen. |
| percentileMethod | Especifica el método para calcular los percentiles de la distribución compuesta. |
| perturbMode | Especifica cómo organizar las muestras perturbadas cuando las simulaciones utilizan más de un nodo de trabajo. |
| plotTable | Especifica la información que controla la creación y el contenido de la tabla de resultados PlotData. |
| seed | Especifica la semilla para el generador de números aleatorios. |
| severityDefinitions | Especifica el nombre de la tabla CAS que contiene las definiciones de la distribución de severidad. |
| severityDistributions | Especifica la lista de nombres de distribuciones de severidad a analizar. |
| severityEst | Especifica una tabla para leer las estimaciones del modelo de severidad desde una tabla `OUTEST`. |
| severityStore | Especifica una tabla de almacén de ítems para leer las estimaciones del modelo de severidad. |
| severityTruncationLeft | Especifica el umbral de truncamiento izquierdo a aplicar a cada valor de severidad. |
| severityTruncationRight | Especifica el límite de truncamiento derecho a aplicar a cada valor de severidad. |
| simulatedSymbols | Especifica los símbolos simulados y sus distribuciones de probabilidad. |
| table | Especifica la tabla de datos de entrada. |
| truncateZeros | Si es `TRUE`, trunca (elimina) las pérdidas agregadas con valor cero de la muestra agregada. |
| varianceDivisor | Especifica el divisor a utilizar en el cálculo de la varianza, desviación estándar, curtosis y asimetría de la muestra de la distribución compuesta. |
Para usar la acción `cdm`, primero se necesita una tabla que defina los modelos de severidad. El siguiente código crea una tabla `sevdefs` en la caslib `casuser`. Esta tabla especifica una distribución Lognormal (`Lognormal`) con sus parámetros `mu` y `sigma`.
| 1 | DATA casuser.sevdefs; |
| 2 | LENGTH model $20 distribution $20; |
| 3 | model='sev1'; distribution='Lognormal'; |
| 4 | OUTPUT; |
| 5 | RUN; |
| 6 | |
| 7 | DATA casuser.sevest; |
| 8 | LENGTH _model_ $20 _name_ $20; |
| 9 | _model_='sev1'; _name_='mu'; estimate=1.5; OUTPUT; |
| 10 | _model_='sev1'; _name_='sigma'; estimate=0.5; OUTPUT; |
| 11 | RUN; |
Este ejemplo realiza una simulación básica de un modelo de riesgo colectivo. Utiliza una distribución de Poisson para la frecuencia (número de siniestros) y la distribución Lognormal definida en `casuser.sevdefs` y `casuser.sevest` para la severidad (monto de cada siniestro). Se generan 100,000 réplicas de la pérdida agregada.
| 1 | PROC CAS; |
| 2 | cdm.cdm |
| 3 | nReplicates=100000, |
| 4 | seed=1234, |
| 5 | countDistributions={{name='Poisson', parmValues={{value=2}}}}, |
| 6 | severityEst={name='sevest', caslib='casuser'}, |
| 7 | severityDefinitions={name='sevdefs', caslib='casuser'}, |
| 8 | OUTPUT={outSample={name='myaggloss', caslib='casuser', replace=true}}; |
| 9 | RUN; |
Este ejemplo más detallado simula un modelo de pérdida agregada utilizando dos distribuciones de severidad diferentes (Lognormal y Gamma). Se especifica la tabla `severityEst` para los parámetros. Además, se utiliza el parámetro `outsum` para calcular y guardar estadísticas descriptivas (media, desviación estándar) y percentiles específicos (95, 97.5, 99, 99.5) de la muestra de pérdida agregada en una nueva tabla llamada `myaggsummary`.
| 1 | PROC CAS; |
| 2 | cdm.cdm |
| 3 | nReplicates=200000, |
| 4 | seed=5678, |
| 5 | countDistributions={{name='NegativeBinomial', parmValues={{value=3},{value=0.5}}}}, |
| 6 | severityEst={name='sevest', caslib='casuser'}, |
| 7 | severityDefinitions={name='sevdefs', caslib='casuser'}, |
| 8 | OUTPUT={outSample={name='myaggloss_detailed', caslib='casuser', replace=true}}, |
| 9 | outsum={ |
| 10 | outSummary={name='myaggsummary', caslib='casuser', replace=true}, |
| 11 | percentiles={{percentile=95},{percentile=97.5},{percentile=99},{percentile=99.5}}, |
| 12 | summaryStatistics={{statistic='mean'},{statistic='stddev'}} |
| 13 | }; |
| 14 | RUN; |
Este ejemplo demuestra cómo realizar un análisis de sensibilidad o perturbación de parámetros. Se generan 500 muestras perturbadas (`nPerturbedSamples=500`). Para cada muestra perturbada, los parámetros de las distribuciones de conteo y severidad se extraen de una distribución normal multivariante definida por sus estimaciones y la matriz de covarianza (si está disponible en `countStore` o `severityEst`). Esto permite evaluar el impacto de la incertidumbre de los parámetros en la distribución de la pérdida agregada.
| 1 | /* Se asume que se ha creado un almacén de ítems 'mycountstore' con la acción countreg.fitModel */ |
| 2 | /* y un almacén 'mysevstore' con la acción severity.severity */ |
| 3 | PROC CAS; |
| 4 | cdm.cdm |
| 5 | nReplicates=10000, |
| 6 | nPerturbedSamples=500, |
| 7 | seed=123, |
| 8 | countStore={name='mycountstore', caslib='casuser'}, |
| 9 | severityStore={name='mysevstore', caslib='casuser'}, |
| 10 | OUTPUT={ |
| 11 | outSample={name='aggperturbsample', caslib='casuser', replace=true}, |
| 12 | perturbOut=true |
| 13 | }, |
| 14 | outsum={ |
| 15 | outSummary={name='aggperturbsummary', caslib='casuser', replace=true}, |
| 16 | percentiles={{percentile=99.5}} |
| 17 | }; |
| 18 | RUN; |
Una compañía de seguros necesita estimar el capital de reserva necesario para cubrir siniestros de automóviles el próximo año. Utilizan datos históricos que indican una frecuenc...
Un banco internacional está realizando pruebas de estrés (CCAR) para riesgos operativos. Necesitan no solo la pérdida esperada, sino entender qué tan sensible es su modelo a peq...
Una reaseguradora quiere modelar el riesgo de una cartera donde solo pagan si el siniestro supera un deducible de $5,000. Si el siniestro es menor, la pérdida para ellos es cero...