Le script initialise un jeu de données nommé 'surgery' en utilisant des `datalines` pour simuler des résultats d'études cliniques (succès 'y' sur 'n' essais). Il crée des variables auxiliaires 'treat2' et 'no', et transforme la variable 'treat'. Ensuite, deux procédures `NLMIXED` sont exécutées. La première ajuste un modèle logistique binomial avec un effet aléatoire non corrélé ('a') par étude ('subject=study'). La seconde procède à un ajustement plus complexe, intégrant deux effets aléatoires corrélés ('a' et 'b') et une interaction entre 'b' et 'treat', en spécifiant un nombre de points de quadrature (`qpoints=50`) et en générant un jeu de données de prédictions 'new2'.
Analyse des données
Type : CREATION_INTERNE
Les données sont créées directement dans le script via une étape DATA et des `datalines`, formant le dataset 'surgery'. Bien qu'une chaîne de caractères ressemblant à un chemin de fichier JSON soit présente dans l'instruction `input`, elle n'est pas interprétée comme une source de données externe pour cette étape DATA spécifique, les données étant fournies directement après `cards;`.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP crée le jeu de données 'surgery' en utilisant des `datalines`. Il lit les variables 'study', 'treat', 'y' (nombre de succès) et 'n' (nombre total d'essais). La chaîne '@code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json' est présente dans l'instruction `input` mais n'est pas une syntaxe standard pour lire des données externes dans ce contexte et est interprétée littéralement. Le bloc calcule ensuite 'no' (nombre d'échecs) et transforme la variable 'treat' de 1 en 0.5 et de 0 en -0.5, préparant ainsi les données pour les analyses subséquentes.
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 Bloc de code
PROC NLMIXED
Explication : Ce premier bloc `PROC NLMIXED` ajuste un modèle linéaire mixte non linéaire. Il modélise la probabilité 'pi' de succès 'y' à partir de 'n' essais en utilisant une fonction logistique avec un effet aléatoire 'a' pour chaque 'study'. L'effet aléatoire 'a' suit une distribution normale avec une moyenne 'alpha' et une variance 'sig*sig', sans interaction spécifiée avec d'autres variables.
Copié !
/* (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 Bloc de code
PROC NLMIXED Data
Explication : Ce second bloc `PROC NLMIXED` ajuste un modèle plus complexe avec des effets aléatoires corrélés. Il inclut deux effets aléatoires, 'a' et 'b', qui sont supposés suivre une distribution normale multivariée corrélée. La probabilité 'pi' intègre une interaction de 'b' avec 'treat'. L'option `qpoints=50` est utilisée pour le calcul des intégrales par quadrature. De plus, la clause `predict` est utilisée pour prédire les valeurs de 'beta + b' et les enregistrer dans un nouveau jeu de données nommé 'new2'.
Copié !
/* (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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.