countreg countregFitModel

Modelado de Frecuencia de Siniestros de Seguros

Scénario de test & Cas d'usage

Contexto empresarial

Una compañía de seguros desea predecir el número de siniestros anuales por cliente para ajustar las primas. Dado que los datos de siniestros suelen tener una varianza mayor que la media (sobredispersión), se requiere un modelo Binomial Negativo en lugar de una Poisson estándar.
Preparación de datos

Simulación de una cartera de 2000 clientes con variables demográficas y conteo de siniestros con sobredispersión.

¡Copiado!
1 
2DATA casuser.cartera_seguros;
3call streaminit(12345);
4DO id=1 to 2000;
5edad = floor(40 + rand('Normal', 0, 10));
6IF edad < 18 THEN edad=18;
7valor_auto = 15000 + rand('Normal', 5000, 2000);
8zona_riesgo = rand('Bernoulli', 0.3);
9mu = exp(-2 + 0.01*edad + 0.5*zona_riesgo);
10/* Generar sobredispersión */ n_siniestros = rand('NegBin', 1/(1+mu), 1);
11OUTPUT;
12END;
13 
14RUN;
15 

Étapes de réalisation

1
Verificación de la carga de datos y estadísticas simples.
¡Copiado!
1 
2PROC CAS;
3 
4SIMPLE.summary / TABLE={name='cartera_seguros', caslib='casuser'};
5 
6RUN;
7 
2
Ajuste de un modelo Binomial Negativo (NEGBIN2) para manejar la sobredispersión.
¡Copiado!
1PROC CAS;
2 countreg.countregFitModel /
3 TABLE={name='cartera_seguros', caslib='casuser'},
4 model={depVars={{name='n_siniestros'}},
5 effects={{vars={'edad', 'valor_auto', 'zona_riesgo'}}},
6 modeloptions={modeltype='NEGBIN2'}},
7 outputTables={names={parameterEstimates='est_params_seguros'}};
8RUN;

Resultado esperado


La acción debe ejecutarse sin errores, produciendo una tabla 'est_params_seguros'. Los coeficientes para 'zona_riesgo' deben ser positivos y significativos, reflejando el mayor riesgo simulado.