Veröffentlicht am :
Statistik CREATION_INTERNE

CAEFFECT Prozedur: Schätzung mittels Regressionsanpassung

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Beispiel untersucht die CAEFFECT-Prozedur zur Schätzung des kausalen Effekts von Rauchen (Smoking) auf die Kindersterblichkeit (Death). Ein Gradient-Boosting-Modell (PROC GRADBOOST) wird zunächst an einem synthetischen Datensatz (inspiriert von SASHELP.BIRTHWGT) angepasst, um das Outcome 'Death' basierend auf dem Rauchen und mehreren Störvariablen (AgeGroup, Drinking, Married, SomeCollege) vorherzusagen. Das vorhergesagte Modell wird dann von PROC CAEFFECT verwendet, um die potenziellen Outcome-Mittelwerte für jede Behandlungsebene ('Yes' und 'No') zu schätzen. Das Beispiel zeigt auch, wie vorhergesagte kontrafaktische Outcome-Werte direkt an PROC CAEFFECT übergeben werden können, indem PROC ASTORE für das Scoring des wiederhergestellten GRADBOOST-Modells verwendet wird, sowie eine alternative Methode (IPW) mit PROC LOGSELECT für die Propensity-Modellierung.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden synthetische Daten, die mittels DATA STEP generiert und vom SASHELP.BIRTHWGT-Datensatz inspiriert wurden, um die Autonomie und Reproduzierbarkeit jedes Codeblocks zu gewährleisten.

1 Codeblock
DATA STEP / PROC CAS Data
Erklärung :
Dieser Codeblock initialisiert eine CAS-Sitzung, erstellt eine 'mylib'-Bibliothek, falls sie nicht existiert, und generiert dann einen kleinen synthetischen Datensatz 'birthwgt_synth_local' in der SAS-Arbeitsbibliothek. Dieser Datensatz wird anschließend unter dem Namen 'mylib.birthwgt_synth' in die CAS-Sitzung geladen, um von den CAS-Prozeduren verwendet zu werden.
Kopiert!
1/* --- Configuration de la session CAS et de la bibliothèque --- */
2PROC CAS;
3 SESSION casauto;
4 /* Crée une bibliothèque CAS temporaire 'mylib' si elle n'existe pas */
5 IF not caslibexists('mylib') THEN DO;
6 caslib mylib datasource=(path='/tmp/') global;
7 END;
8QUIT;
9 
10/* --- Données synthétiques pour la démonstration (SAS Data Step local) --- */
11DATA work.birthwgt_synth_local;
12 INPUT Smoking $ AgeGroup $ Married $ Drinking $ SomeCollege $ Death $;
13 DATALINES;
14Yes '1' Yes No Yes No
15No '1' No No No No
16Yes '2' Yes Yes Yes Yes
17No '2' Yes No No No
18Yes '3' No Yes No No
19No '3' No No Yes No
20Yes '1' Yes No Yes No
21No '1' No No No No
22Yes '2' Yes Yes Yes Yes
23No '2' Yes No No No
24Yes '3' No Yes No No
25No '3' No No Yes No
26;
27RUN;
28 
29PROC CAS;
30 SESSION casauto;
31 /* Charge les données synthétiques de la session SAS locale (WORK) vers la session CAS (mylib) */
32 upload caslib="mylib" DATA="work.birthwgt_synth_local" casout="birthwgt_synth" promote;
33QUIT;
34 
35/* Les exemples suivants utiliseront 'mylib.birthwgt_synth' */
2 Codeblock
PROC GRADBOOST / PROC CAEFFECT
Erklärung :
Dieses Beispiel demonstriert die minimale Verwendung von PROC CAEFFECT zur Schätzung mittels Regressionsanpassung. Ein GRADBOOST-Modell wird zunächst auf dem Datensatz 'mylib.birthwgt_synth' trainiert und in einem Analytic Store (mylib.gbOutMod_ex1) gespeichert. Anschließend verwendet PROC CAEFFECT dieses vortrainierte Modell, spezifiziert durch die Option RESTORE=, um die potenziellen Outcome-Mittelwerte (POM) für die verschiedenen Ebenen der Behandlungsvariablen 'Smoking' zu berechnen.
Kopiert!
1/* --- Étape 1 : Entraîner un modèle GRADBOOST et le sauvegarder --- */
2PROC GRADBOOST DATA=mylib.birthwgt_synth ntrees=10 seed=12345;
3 target Death / level=nominal;
4 INPUT Smoking AgeGroup Married Drinking SomeCollege / level=nominal;
5 savestate rstore=mylib.gbOutMod_ex1;
6RUN;
7 
8/* --- Étape 2 : Exécuter PROC CAEFFECT avec le modèle restauré --- */
9PROC CAEFFECT DATA=mylib.birthwgt_synth;
10 treatvar Smoking;
11 outcomevar Death(event='Yes') / type=Categorical;
12 outcomemodel restore=mylib.gbOutMod_ex1 predname=P_DeathYes;
13 pom treatlev='Yes';
14 pom treatlev='No';
15RUN;
16 
17/* --- Nettoyage de l'analytic store --- */
18PROC ASTORE;
19 delete rstore=mylib.gbOutMod_ex1;
20QUIT;
21 
3 Codeblock
PROC GRADBOOST / PROC CAEFFECT / PROC PRINT
Erklärung :
Dieses Beispiel erweitert die Verwendung von PROC CAEFFECT, indem die für die Anpassung verwendeten Kovariaten explizit über die ADJUST-Anweisung spezifiziert werden. Es zeigt auch, wie die detaillierten Ergebnisse der POM-Schätzung in einer CAS-Ausgabetabelle (mylib.caeffect_stats_ex2) mit Hilfe der OUTSTAT-Option gespeichert werden können, was eine spätere Analyse der Schätzergebnisse ermöglicht.
Kopiert!
1/* --- Étape 1 : Entraîner un modèle GRADBOOST et le sauvegarder --- */
2PROC GRADBOOST DATA=mylib.birthwgt_synth ntrees=20 seed=54321; /* Plus d'arbres pour l'exemple */
3 target Death / level=nominal;
4 INPUT Smoking AgeGroup Married Drinking SomeCollege / level=nominal;
5 savestate rstore=mylib.gbOutMod_ex2;
6RUN;
7 
8/* --- Étape 2 : Exécuter PROC CAEFFECT avec des options supplémentaires --- */
9PROC CAEFFECT DATA=mylib.birthwgt_synth;
10 treatvar Smoking;
11 outcomevar Death(event='Yes') / type=Categorical;
12 outcomemodel restore=mylib.gbOutMod_ex2 predname=P_DeathYes;
13 pom treatlev='Yes';
14 pom treatlev='No';
15 /* Spécification explicite des variables d'ajustement (confounding variables) */
16 adjust AgeGroup Married Drinking SomeCollege;
17 /* Sauvegarde des statistiques d'estimation dans une table CAS */
18 outstat mylib.caeffect_stats_ex2;
19RUN;
20 
21/* --- Afficher les résultats sauvegardés --- */
22PROC PRINT DATA=mylib.caeffect_stats_ex2; RUN;
23 
24/* --- Nettoyage --- */
25PROC ASTORE;
26 delete rstore=mylib.gbOutMod_ex2;
27QUIT;
28PROC CAS;
29 droptable "caeffect_stats_ex2" incaslib="mylib";
30QUIT;
4 Codeblock
PROC GRADBOOST / PROC ASTORE / PROC CAEFFECT
Erklärung :
Dieses fortgeschrittene Beispiel demonstriert einen Ansatz, bei dem kontrafaktische Outcome-Vorhersagen für jede Behandlungsebene zunächst separat mit PROC ASTORE berechnet werden. Das vortrainierte GRADBOOST-Modell wird verwendet, um den Datensatz zweimal zu bewerten: einmal, indem 'Smoking' auf 'Yes' gesetzt wird, und einmal, indem 'Smoking' auf 'No' gesetzt wird. Die resultierenden Vorhersagespalten werden dann direkt an PROC CAEFFECT über die Option PREDOUT= der POM-Anweisung übergeben. Diese Methode ist flexibel für komplexe Outcome-Modelle oder spezifische Datenverarbeitungsketten.
Kopiert!
1/* --- Étape 1 : Entraîner un modèle GRADBOOST et le sauvegarder --- */
2PROC GRADBOOST DATA=mylib.birthwgt_synth ntrees=15 seed=67890;
3 target Death / level=nominal;
4 INPUT Smoking AgeGroup Married Drinking SomeCollege / level=nominal;
5 savestate rstore=mylib.gbOutMod_ex3;
6RUN;
7 
8/* --- Étape 2 : Calculer les prédictions contrefactuelles pour Smoking='Yes' --- */
9DATA mylib.gbPredData_temp;
10 SET mylib.birthwgt_synth;
11 tempSmoking = Smoking; /* Sauvegarde la valeur observée de Smoking */
12 Smoking = 'Yes'; /* Impose 'Yes' pour la prédiction contrefactuelle */
13RUN;
14 
15PROC ASTORE;
16 score DATA=mylib.gbPredData_temp out=mylib.gbPredData_temp_scored_yes
17 rstore=mylib.gbOutMod_ex3
18 copyvars=(tempSmoking AgeGroup Married Drinking SomeCollege Death);
19RUN;
20 
21/* --- Étape 3 : Calculer les prédictions contrefactuelles pour Smoking='No' --- */
22DATA mylib.gbPredData_final;
23 SET mylib.gbPredData_temp_scored_yes;
24 rename P_DeathYes = Pred_DeathYes_SmokingYes; /* Renomme la première prédiction */
25 Smoking = 'No'; /* Impose 'No' pour la deuxième prédiction contrefactuelle */
26RUN;
27 
28PROC ASTORE;
29 score DATA=mylib.gbPredData_final out=mylib.gbPredData_final_scored
30 rstore=mylib.gbOutMod_ex3
31 copyvars=(tempSmoking Pred_DeathYes_SmokingYes Death);
32RUN;
33 
34/* --- Étape 4 : Nettoyage et préparation des données finales pour CAEFFECT --- */
35DATA mylib.gbPredData_final_scored;
36 SET mylib.gbPredData_final_scored;
37 rename P_DeathYes = Pred_DeathYes_SmokingNo;
38 Smoking=tempSmoking; /* Restaure la variable Smoking observée */
39 drop tempSmoking;
40RUN;
41 
42 
43/* --- Étape 5 : Exécuter PROC CAEFFECT avec les prédictions précalculées --- */
44PROC CAEFFECT DATA=mylib.gbPredData_final_scored;
45 treatvar Smoking;
46 outcomevar Death(event='Yes') / type=Categorical;
47 pom treatlev='Yes' predOut=Pred_DeathYes_SmokingYes;
48 pom treatlev='No' predOut=Pred_DeathYes_SmokingNo;
49RUN;
50 
51/* --- Nettoyage --- */
52PROC ASTORE;
53 delete rstore=mylib.gbOutMod_ex3;
54QUIT;
55PROC CAS;
56 droptable "gbPredData_temp" incaslib="mylib";
57 droptable "gbPredData_temp_scored_yes" incaslib="mylib";
58 droptable "gbPredData_final" incaslib="mylib";
59 droptable "gbPredData_final_scored" incaslib="mylib";
60QUIT;
5 Codeblock
PROC LOGSELECT / PROC CAEFFECT
Erklärung :
Dieses Beispiel illustriert die Schätzung des kausalen Effekts mittels der Inverse Probability Weighting (IPW)-Methode, einer Alternative zur Regressionsanpassung. Die IPW-Methode erfordert die Modellierung der Propensity-Scores (die Wahrscheinlichkeit, einer bestimmten Behandlung basierend auf den Kovariaten zugewiesen zu werden). Hier wird ein logistisches Modell (PROC LOGSELECT) verwendet, um diese Scores vorherzusagen, die dann über die Option PROPENSITY= in der OUTCOMEMODEL-Anweisung an PROC CAEFFECT übergeben werden, wobei METHOD IPW spezifiziert wird. Dies ist ein Beispiel für die Flexibilität von PROC CAEFFECT bei der Verwendung verschiedener Methoden zur kausalen Schätzung.
Kopiert!
1/* --- Étape 1 : Estimer les scores de propension avec PROC LOGSELECT --- */
2/* Pour la méthode IPW, nous modélisons la probabilité de recevoir le traitement (Smoking) */
3PROC LOGSELECT DATA=mylib.birthwgt_synth;
4 model Smoking = AgeGroup Married Drinking SomeCollege;
5 OUTPUT out=mylib.propensity_scores pred=Propensity;
6RUN;
7 
8/* --- Étape 2 : Exécuter PROC CAEFFECT avec la méthode IPW --- */
9PROC CAEFFECT DATA=mylib.propensity_scores;
10 treatvar Smoking;
11 outcomevar Death(event='Yes') / type=Categorical;
12 outcomemodel propensity=Propensity; /* Utilise les scores de propension prédits */
13 pom treatlev='Yes';
14 pom treatlev='No';
15 method ipw; /* Spécifie la méthode IPW */
16RUN;
17 
18/* --- Nettoyage --- */
19PROC CAS;
20 droptable "propensity_scores" incaslib="mylib";
21QUIT;
22 
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Last updated: November 25, 2025