bartScoreMargin
Description
L'action bartScoreMargin est l'outil de prédilection pour effectuer des analyses de type 'What-If' sur des modèles de régression bayésiens (BART). Elle permet de calculer des marges prédictives en fixant certaines variables à des valeurs précises tout en laissant les autres varier selon leur distribution observée. C'est un excellent moyen de mesurer l'effet marginal d'une variable (comme le sexe ou un traitement) sur la réponse prédite, sans les biais habituels. Parce que soyons honnêtes, prédire l'avenir c'est bien, mais comprendre pourquoi on le prédit ainsi, c'est encore mieux (et ça évite de blâmer le hasard) !
Paramètres Clés
Préparation des données
Préparation d'un modèle BART pour l'analyse des marges
Nous utilisons les données 'Heart' pour créer un modèle prédisant le cholestérol en fonction de l'âge et du poids, afin de pouvoir ensuite analyser l'impact du sexe.
| 1 | DATA mycas.heart; SET sashelp.heart; RUN; |
| 2 | PROC CAS; |
| 3 | bart.bartGauss / |
| 4 | TABLE="heart", |
| 5 | target="Cholesterol", |
| 6 | inputs={"AgeAtStart", "Weight", "Sex"}, |
| 7 | casOut={name="heart_model", replace=true}; |
| 8 | RUN; |
Exemples d'utilisation
Calcul d'une marge prédictive simple
Calcule la moyenne prédite du cholestérol si tout le monde dans l'échantillon était considéré comme une femme.
| 1 | PROC CAS; |
| 2 | bart.bartScoreMargin / |
| 3 | TABLE="heart", |
| 4 | model="heart_model", |
| 5 | margins={{name="Femmes", at={{var="Sex", value="Female"}}}}; |
| 6 | RUN; |
Résultat Attendu :
Comparaison de marges (Différence Homme vs Femme)
On définit deux marges (Homme et Femme) et on demande explicitement le calcul de la différence entre les deux pour voir l'effet statistiquement significatif du sexe sur le cholestérol selon le modèle.
| 1 | PROC CAS; |
| 2 | bart.bartScoreMargin / |
| 3 | TABLE="heart", |
| 4 | model="heart_model", |
| 5 | margins={ |
| 6 | {name="Marge_Femme", at={{var="Sex", value="Female"}}}, |
| 7 | {name="Marge_Homme", at={{var="Sex", value="Male"}}} |
| 8 | }, |
| 9 | differences={ |
| 10 | {evtMargin="Marge_Femme", refMargin="Marge_Homme", name="Diff_F_H"} |
| 11 | }, |
| 12 | marginInfo=true, |
| 13 | display={names={"PredictiveMargins", "MarginDiffs"}}; |
| 14 | RUN; |