Scénario de test & Cas d'usage
Präzise Berechnung von Perzentilen und Quantilen.
Entdecken Sie alle Aktionen von percentileErstellt eine große Tabelle `KREDIT_PORTFOLIO` mit einer Ausfall-Variable `DEFAULT_FLAG`, zwei Modell-Scores und einer Gruppierungsvariable `PRODUKT_TYP`.
| 1 | DATA mycas.KREDIT_PORTFOLIO; |
| 2 | call streaminit(456); |
| 3 | array produkttypen[2] $10 ('HYPOTHEK', 'AUTOKREDIT'); |
| 4 | DO i = 1 to 5000000; |
| 5 | PRODUKT_TYP = produkttypen[rand('INTEGER', 1, 2)]; |
| 6 | P_DEFAULT_CHAMPION = rand('UNIFORM'); |
| 7 | P_DEFAULT_CHALLENGER = P_DEFAULT_CHAMPION * (0.9 + rand('UNIFORM')*0.2); /* Leicht korreliert */ |
| 8 | IF P_DEFAULT_CHAMPION > 0.9 THEN DEFAULT_FLAG = 1; |
| 9 | ELSE DEFAULT_FLAG = 0; |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | drop i; |
| 13 | RUN; |
| 1 | PROC CAS; |
| 2 | percentile.assess / |
| 3 | TABLE={name='KREDIT_PORTFOLIO', groupBy={'PRODUKT_TYP'}}, |
| 4 | response='DEFAULT_FLAG', |
| 5 | inputs={{name='P_DEFAULT_CHAMPION'}, {name='P_DEFAULT_CHALLENGER'}}, |
| 6 | event='1', |
| 7 | method='ITERATIVE', /* Für bessere Performance bei großen Daten */ |
| 8 | fitStatOut={name='risiko_vergleich_stats', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |
Die Aktion erzeugt die Tabelle `risiko_vergleich_stats`. Diese Tabelle enthält Anpassungsstatistiken (Gini, KS, ASE etc.) für beide Modelle ('_INPUTVAR_'-Spalte) und für jeden `PRODUKT_TYP`. Die Bank kann so direkt vergleichen, welches Modell für Hypotheken- im Vergleich zu Autokrediten besser geeignet ist. Die Ausführung sollte aufgrund der `ITERATIVE`-Methode auch bei 5 Millionen Datensätzen performant sein.