bart bartGauss

Scénario Cas Limite : Estimation de Prix avec Données Manquantes

Scénario de test & Cas d'usage

Contexte Métier

Une agence immobilière veut créer un modèle d'estimation de prix de vente des maisons. Les données collectées sont souvent incomplètes : la surface du garage est parfois manquante, et le type de chauffage n'est pas toujours renseigné. Le modèle doit être robuste et capable de gérer ces valeurs manquantes de manière intelligente pour fournir une estimation fiable.
À 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 de biens immobiliers avec des valeurs manquantes intentionnelles dans des variables numériques et catégorielles.

Copié !
1DATA mycas.biens_immobiliers;
2 call streaminit(987);
3 LENGTH type_chauffage $ 15;
4 DO i = 1 to 2000;
5 surface_habitable = rand('NORMAL', 150, 40);
6 nb_chambres = rand('INTEGER', 2, 5);
7 IF rand('UNIFORM') < 0.7 THEN type_chauffage = 'Gaz';
8 ELSE IF rand('UNIFORM') < 0.85 THEN type_chauffage = 'Electrique';
9 ELSE type_chauffage = 'Pompe a chaleur';
10 surface_garage = rand('NORMAL', 20, 5);
11 /* Introduction des valeurs manquantes */
12 IF mod(i, 10) = 0 THEN call missing(surface_garage);
13 IF mod(i, 25) = 0 THEN call missing(type_chauffage);
14 prix_vente = 150000 + (surface_habitable * 1000) + (nb_chambres * 5000) + (surface_garage * 200) + rand('NORMAL', 0, 10000);
15 OUTPUT;
16 END;
17RUN;

Étapes de réalisation

1
Exécution de bartGauss avec la gestion par défaut des valeurs manquantes ('SEPARATE'). Les valeurs manquantes doivent être traitées comme une catégorie à part entière.
Copié !
1PROC CAS;
2 bart.bartGauss /
3 TABLE={name='biens_immobiliers'},
4 model={depVars={{name='prix_vente'}}, effects={{vars={'surface_habitable', 'nb_chambres', 'type_chauffage', 'surface_garage'}}}},
5 class={{vars={'type_chauffage'}}},
6 missing='SEPARATE',
7 outputTables={names={'MissingInfo', 'LevelInfo'}};
8RUN;
2
Vérification des tables de sortie. 'MissingInfo' doit montrer comment les manquants ont été traités. 'LevelInfo' pour 'type_chauffage' doit inclure un niveau pour les valeurs manquantes.
Copié !
1PROC CAS;
2 TABLE.fetch / TABLE={name='MissingInfo'};
3 TABLE.fetch / TABLE={name='LevelInfo', where="Class = 'type_chauffage'"};
4RUN;
3
Tentative d'exécution avec 'missing=NONE' pour vérifier que l'action génère un avertissement ou une erreur car des valeurs manquantes existent.
Copié !
1PROC CAS;
2 bart.bartGauss /
3 TABLE={name='biens_immobiliers'},
4 model={depVars={{name='prix_vente'}}, effects={{vars={'surface_habitable', 'nb_chambres', 'type_chauffage', 'surface_garage'}}}},
5 class={{vars={'type_chauffage'}}},
6 missing='NONE';
7RUN;

Résultat Attendu


Étape 1: L'action s'exécute et produit un modèle. La table 'MissingInfo' doit indiquer que des valeurs manquantes ont été trouvées et comment elles ont été gérées. La table 'LevelInfo' doit montrer un niveau supplémentaire pour la variable 'type_chauffage' correspondant aux observations manquantes. Étape 3: L'action doit s'arrêter ou émettre un avertissement clair dans le log indiquant que des valeurs manquantes ont été trouvées mais que le paramètre 'missing' est réglé sur 'NONE', et que ces observations ont été exclues de l'analyse.