Beispiel 17 für PROC MI: Multiple Imputation mit MNAR-Anpassung

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Dieses Skript erstellt zunächst einen synthetischen Datensatz namens 'Mono2' mit bedingt simulierten fehlenden Werten. Anschließend wird das MI-Verfahren (Multiple Imputation) verwendet, um die fehlenden Daten zu imputieren. Die Besonderheit dieses Beispiels liegt in der Verwendung der MNAR-Anweisung (Missing Not At Random) in Kombination mit einer monotonen logistischen Methode (link=glogit) für die Variable 'Grade', wobei eine spezifische Verschiebung (shift) auf die imputierten Werte angewendet wird.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden vollständig innerhalb des Skripts über einen Data Step unter Verwendung von DO-Schleifen und Zufallszahlengeneratoren (ranuni, rannor) erzeugt.

1 Codeblock
DATA STEP Data
Erklärung :
Generierung des Datensatzes 'Mono2' mit demografischen und Score-Variablen, mit künstlicher Einführung fehlender Werte für die Variable 'Grade' basierend auf definierten Wahrscheinlichkeiten.
Kopiert!
1DATA Mono2;
2 DO Grd= 6 to 8;
3 DO j=1 to 50;
4 
5 Grade= Grd;
6 IF (Grd=6) THEN DO;
7 IF (ranuni(999) > .80) THEN Grade= .;
8 END;
9 ELSE IF (ranuni(99) > .95) THEN Grade= .;
10 
11 IF (j < 26) THEN Study= 1;
12 ELSE Study= 0;
13 
14 Score0= 70 + 3*rannor(1);
15 IF (Score0 >= 100) THEN Score0= 100 - 10*ranuni(99);
16 
17 Score= Score0 + 2*rannor(99) + 2;
18 IF (Study = 1) THEN DO;
19 Score= Score + 3;
20 IF (Grd = 6) THEN Score= Score + 1;
21 IF (Grd = 8) THEN Score= Score + 3;
22 END;
23 
24 OUTPUT;
25 END; END;
26 drop Grd j;
27RUN;
2 Codeblock
PROC PRINT
Erklärung :
Anzeige der ersten 10 Beobachtungen des generierten Datensatzes zur Überprüfung.
Kopiert!
1PROC PRINT DATA=Mono2(obs=10);
2 var Grade Score0 Score Study;
3 title 'First 10 Obs in the Student Test Data';
4RUN;
3 Codeblock
PROC MI Data
Erklärung :
Ausführung der multiplen Imputation. Die Option 'nimpute=20' erstellt 20 imputierte Datensätze. Die Anweisung 'mnar' passt die imputierten Werte für die Variable 'Grade' (wenn das Ereignis '6' ist) mit einer Verschiebung von 2 an, unter der Annahme eines Missing-Not-At-Random-Mechanismus.
Kopiert!
1PROC MI DATA=Mono2 seed=34857 nimpute=20 out=outex17;
2 class Study Grade;
3 monotone logistic (Grade / link=glogit);
4 mnar adjust( Grade (event='6') /shift=2);
5 var Study Score0 Score Grade;
6RUN;
4 Codeblock
PROC PRINT
Erklärung :
Anzeige der Imputationsergebnisse (Datensatz 'outex17'), insbesondere der Imputationsnummer.
Kopiert!
1PROC PRINT DATA=outex17(obs=10);
2 var _Imputation_ Grade Study Score0 Score;
3 title 'First 10 Observations of the Imputed Student Test Data Set';
4RUN;
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 : SAS-Beispielbibliothek


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.