Scénario de test & Cas d'usage
Erstellung eines Datensatzes 'versicherungsdaten' mit 5000 Kunden. Simuliert wird eine Poisson-Verteilung mit Null-Inflation.
| 1 | |
| 2 | DATA casuser.versicherungsdaten; |
| 3 | call streaminit(12345); |
| 4 | DO i = 1 to 5000; |
| 5 | age = 18 + int(rand('UNIFORM') * 60); |
| 6 | IF rand('UNIFORM') < 0.3 THEN car_type = 'Sport'; |
| 7 | ELSE car_type = 'Standard'; |
| 8 | bonus_malus = rand('NORMAL', 0.5, 0.1); |
| 9 | mu = exp(-2 + 0.01*age + 0.5*(car_type='Sport')); |
| 10 | prob_zero = 1 / (1 + exp(-(-1 + 2*bonus_malus))); |
| 11 | IF rand('UNIFORM') < prob_zero THEN claims = 0; |
| 12 | ELSE claims = rand('POISSON', mu); |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | |
| 16 | RUN; |
| 17 |
| 1 | |
| 2 | PROC CAS; |
| 3 | SIMPLE.freq / TABLE={name='versicherungsdaten'} inputs={'claims'}; |
| 4 | |
| 5 | RUN; |
| 6 |
| 1 | |
| 2 | PROC CAS; |
| 3 | countreg.countregFitModel / TABLE={name='versicherungsdaten'}, model={depVars={{name='claims'}}, effects={{vars={'age', 'car_type'}}}, modelOptions={modelType='ZIP'}}, zeromodel={effects={{vars={'bonus_malus'}}}}; |
| 4 | |
| 5 | RUN; |
| 6 |
Das Modell konvergiert erfolgreich. Die Ergebnistabellen zeigen signifikante Parameter für 'age' und 'car_type' im Poisson-Teil sowie für 'bonus_malus' im Zero-Model-Teil. Das System bestätigt, dass ein ZIP-Modell verwendet wurde.