Das Skript initialisiert einen Datensatz namens 'surgery' mithilfe von `datalines`, um Ergebnisse klinischer Studien (Erfolge 'y' bei 'n' Versuchen) zu simulieren. Es erstellt Hilfsvariablen 'treat2' und 'no' und transformiert die Variable 'treat'. Anschließend werden zwei `NLMIXED`-Prozeduren ausgeführt. Die erste passt ein binomial-logistisches Modell mit einem unkorrelierten Zufallseffekt ('a') pro Studie ('subject=study') an. Die zweite führt eine komplexere Anpassung durch, die zwei korrelierte Zufallseffekte ('a' und 'b') und eine Interaktion zwischen 'b' und 'treat' integriert, wobei eine Anzahl von Quadraturpunkten (`qpoints=50`) spezifiziert und ein Vorhersagedatensatz 'new2' generiert wird.
Datenanalyse
Type : CREATION_INTERNE
Die Daten werden direkt im Skript über einen DATA-Schritt und `datalines` erstellt, wodurch der Datensatz 'surgery' gebildet wird. Obwohl eine Zeichenkette, die einem JSON-Dateipfad ähnelt, in der `input`-Anweisung vorhanden ist, wird sie in diesem spezifischen DATA-Schritt nicht als externe Datenquelle interpretiert, da die Daten direkt nach `cards;` bereitgestellt werden.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block erstellt den Datensatz 'surgery' mithilfe von `datalines`. Er liest die Variablen 'study', 'treat', 'y' (Anzahl der Erfolge) und 'n' (Gesamtzahl der Versuche). Die Zeichenkette ' @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json' ist in der `input`-Anweisung vorhanden, stellt jedoch keine Standard-Syntax zum Lesen externer Daten in diesem Kontext dar und wird wörtlich interpretiert. Der Block berechnet anschließend 'no' (Anzahl der Misserfolge) und transformiert die Variable 'treat' von 1 in 0.5 und von 0 in -0.5, wodurch die Daten für nachfolgende Analysen vorbereitet werden.
INPUT study treat y n @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json ; * y successes out of n trials;
3
treat2 = treat;
4
no=n-y;
5
IF treat = 1THEN treat = .5; ELSE treat = -.5;
6
CARDS;
7
117151 0 1113
8
218192 0 816
9
315343 0 439
10
417364 0 431
11
513125 0 0 12
12
61476 0 44
13
714177 0 1324
14
811168 0 1316
15
913149 0 722
16
10123810 0 1232
17
11161211 0 88
18
1212712 0 79
19
13192113 0 724
20
14172114 0 525
21
15132515 0 1132
22
16141116 0 610
23
17121017 0 810
24
18113118 0 427
25
19142819 0 1531
26
20174320 0 1643
27
21164021 0 1321
28
22141822 0 539
29
231146823 0 1374
30
24162124 0 821
31
251 0 625 0 66
32
26111026 0 515
33
27151727 0 515
34
281 0 1028 0 1214
35
291 0 2229 0 824
36
30121830 0 1021
37
31111531 0 713
38
32182432 0 1527
39
33161233 0 79
40
341 0 2034 0 523
41
35141735 0 216
42
361104036 0 1220
43
37131637 0 216
44
38143438 0 519
45
39173839 0 1537
46
401 0 3440 0 3434
47
411 0 941 0 0 16
48
;
2 Codeblock
PROC NLMIXED
Erklärung : Dieser erste `PROC NLMIXED`-Block passt ein nichtlineares gemischtes Modell an. Er modelliert die Erfolgswahrscheinlichkeit 'pi' von 'y' aus 'n' Versuchen mithilfe einer logistischen Funktion mit einem Zufallseffekt 'a' für jede 'study'. Der Zufallseffekt 'a' folgt einer Normalverteilung mit einem Mittelwert 'alpha' und einer Varianz 'sig*sig', ohne eine spezifische Interaktion mit anderen Variablen.
Kopiert!
/* (11.7) */
proc nlmixed; * random effects, no interaction;
pi = exp(a + beta*treat)/(1+exp(a + beta*treat)); * logistic formula for prob;
model y ~ binomial(n, pi);
random a ~ normal(alpha, sig*sig) subject=study;
1
/* (11.7) */
2
PROC NLMIXED; * random effects, no interaction;
3
pi = exp(a + beta*treat)/(1+exp(a + beta*treat)); * logistic formula for prob;
4
model y ~ binomial(n, pi);
5
random a ~ normal(alpha, sig*sig) subject=study;
3 Codeblock
PROC NLMIXED Data
Erklärung : Dieser zweite `PROC NLMIXED`-Block passt ein komplexeres Modell mit korrelierten Zufallseffekten an. Er umfasst zwei Zufallseffekte, 'a' und 'b', die einer korrelierten multivariaten Normalverteilung folgen sollen. Die Wahrscheinlichkeit 'pi' enthält eine Interaktion von 'b' mit 'treat'. Die Option `qpoints=50` wird für die Berechnung der Integrale mittels Quadratur verwendet. Darüber hinaus wird die `predict`-Klausel verwendet, um die Werte von 'beta + b' vorherzusagen und in einem neuen Datensatz namens 'new2' zu speichern.
Kopiert!
/* (11.8) */
proc nlmixed qpoints=50; * correlated random effects, interaction;
pi = exp(alpha + a + beta*treat + b*treat)/(1+exp(alpha + a + beta*treat + b*treat));
model y ~ binomial(n, pi);
random a b ~ normal([0,0], [sig_a*sig_a, rho ,sig_b*sig_b]) subject=study;
predict beta + b out=new2;
run;
1
/* (11.8) */
2
PROC NLMIXED qpoints=50; * correlated random effects, interaction;
3
pi = exp(alpha + a + beta*treat + b*treat)/(1+exp(alpha + a + beta*treat + b*treat));
4
model y ~ binomial(n, pi);
5
random a b ~ normal([0,0], [sig_a*sig_a, rho ,sig_b*sig_b]) subject=study;
6
predict beta + b out=new2;
7
RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.