bart bartScore

Gestion des données manquantes lors du scoring de risque de crédit (Cas Limite)

Scénario de test & Cas d'usage

Contexte Métier

Un organisme de crédit évalue le score de risque d'un demandeur de prêt. Les données d'entrée sont souvent incomplètes (revenu non déclaré, etc.). Ce scénario teste la robustesse de `bartScore` lorsque la table à scorer contient des valeurs manquantes, ce que les modèles BART peuvent gérer nativement.
À propos du Set : bart

Modèles d'arbres de régression additive bayésienne.

Découvrir toutes les actions de bart
Préparation des Données

Création d'une table d'entraînement `credit_train` sans valeurs manquantes pour entraîner un modèle `bartGauss`. Création d'une table `demandes_credit_score` contenant des valeurs manquantes (`.`) pour des prédicteurs clés comme `revenu_mensuel` et `ratio_endettement`.

Copié !
1DATA credit_train;
2 call streaminit(333);
3 DO id_demande = 1 to 3000;
4 age_demandeur = 22 + rand('integer', 40);
5 revenu_mensuel = 1500 + rand('integer', 5000);
6 ratio_endettement = rand('uniform') * 0.6;
7 montant_demande = 5000 + rand('integer', 25000);
8 score_risque = 300 + (ratio_endettement * 200) - (revenu_mensuel / 100) + (age_demandeur / 2) + rand('normal', 20);
9 OUTPUT;
10 END;
11RUN;
12DATA demandes_credit_score;
13 call streaminit(444);
14 DO id_demande = 3001 to 3100;
15 age_demandeur = 22 + rand('integer', 40);
16 revenu_mensuel = 1500 + rand('integer', 5000);
17 ratio_endettement = rand('uniform') * 0.6;
18 montant_demande = 5000 + rand('integer', 25000);
19 score_risque_reel = 300 + (ratio_endettement * 200) - (revenu_mensuel / 100) + (age_demandeur / 2);
20 IF mod(_n_, 7) = 0 THEN call missing(revenu_mensuel);
21 IF mod(_n_, 10) = 0 THEN call missing(ratio_endettement);
22 OUTPUT;
23 END;
24RUN;
25PROC CAS;
26 load DATA=CASUSER.credit_train outcaslib="casuser" casout="credit_train" replace;
27 load DATA=CASUSER.demandes_credit_score outcaslib="casuser" casout="demandes_credit_score" replace;
28 bart.bartGauss TABLE={name='credit_train'},
29 model={depVars={{name='score_risque'}}, effects={{vars={'age_demandeur', 'revenu_mensuel', 'ratio_endettement', 'montant_demande'}}}},
30 store={name='risk_model', replace=true};
31RUN;
32QUIT;

Étapes de réalisation

1
Scoring de la table `demandes_credit_score` contenant des valeurs manquantes pour vérifier la robustesse de l'action.
Copié !
1PROC CAS;
2 bart.bartScore TABLE={name='demandes_credit_score'},
3 restore={name='risk_model'},
4 pred='Score_Risque_Predit',
5 resid='Residu',
6 copyVars={'id_demande', 'revenu_mensuel', 'ratio_endettement', 'score_risque_reel'},
7 casOut={name='credit_scores_output', replace=true};
8RUN;
9QUIT;

Résultat Attendu


L'action `bartScore` doit s'exécuter avec succès sans rejeter les lignes avec des valeurs manquantes. La table de sortie `credit_scores_output` doit contenir une prédiction (`Score_Risque_Predit`) pour chaque demande, y compris celles avec des données incomplètes. Les variables copiées permettront de confirmer que les lignes avec des valeurs manquantes ont bien été scorées.