Publié le :
Statistique CREATION_INTERNE

Analyse de Modèles Linéaires Mixtes Non Linéaires (NLMIXED) pour Données Binomiales

Ce code est également disponible en : Deutsch English Español
En attente de validation
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.
Copié !
1DATA surgery;
2 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 = 1 THEN treat = .5; ELSE treat = -.5;
6CARDS;
71 1 7 15 1 0 11 13
82 1 8 19 2 0 8 16
93 1 5 34 3 0 4 39
104 1 7 36 4 0 4 31
115 1 3 12 5 0 0 12
126 1 4 7 6 0 4 4
137 1 4 17 7 0 13 24
148 1 1 16 8 0 13 16
159 1 3 14 9 0 7 22
1610 1 2 38 10 0 12 32
1711 1 6 12 11 0 8 8
1812 1 2 7 12 0 7 9
1913 1 9 21 13 0 7 24
2014 1 7 21 14 0 5 25
2115 1 3 25 15 0 11 32
2216 1 4 11 16 0 6 10
2317 1 2 10 17 0 8 10
2418 1 1 31 18 0 4 27
2519 1 4 28 19 0 15 31
2620 1 7 43 20 0 16 43
2721 1 6 40 21 0 13 21
2822 1 4 18 22 0 5 39
2923 1 14 68 23 0 13 74
3024 1 6 21 24 0 8 21
3125 1 0 6 25 0 6 6
3226 1 1 10 26 0 5 15
3327 1 5 17 27 0 5 15
3428 1 0 10 28 0 12 14
3529 1 0 22 29 0 8 24
3630 1 2 18 30 0 10 21
3731 1 1 15 31 0 7 13
3832 1 8 24 32 0 15 27
3933 1 6 12 33 0 7 9
4034 1 0 20 34 0 5 23
4135 1 4 17 35 0 2 16
4236 1 10 40 36 0 12 20
4337 1 3 16 37 0 2 16
4438 1 4 34 38 0 5 19
4539 1 7 38 39 0 15 37
4640 1 0 34 40 0 34 34
4741 1 0 9 41 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é !
1/* (11.7) */
2PROC NLMIXED; * random effects, no interaction;
3pi = exp(a + beta*treat)/(1+exp(a + beta*treat)); * logistic formula for prob;
4model y ~ binomial(n, pi);
5random 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é !
1/* (11.8) */
2PROC NLMIXED qpoints=50; * correlated random effects, interaction;
3pi = exp(alpha + a + beta*treat + b*treat)/(1+exp(alpha + a + beta*treat + b*treat));
4model y ~ binomial(n, pi);
5random a b ~ normal([0,0], [sig_a*sig_a, rho ,sig_b*sig_b]) subject=study;
6predict beta + b out=new2;
7RUN;
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.