Publié le :
Statistique CREATION_INTERNE

Analyse Statistique Avancée : GLIMMIX et NLMIXED

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script génère d'abord un jeu de données simulé ('hair'). Il effectue ensuite une série d'analyses à l'aide de PROC GLIMMIX pour comparer des modèles linéaires et logistiques avec différents types d'effets aléatoires (G-side vs R-side). Enfin, il agrège les données pour ajuster un modèle complexe via PROC NLMIXED. Note technique : Une incohérence de variable ('id' vs 'subj_id') est présente dans la section de tri et d'agrégation.
Analyse des données

Type : CREATION_INTERNE


Toutes les données sont générées par le premier DATA STEP à l'aide de fonctions aléatoires (normal, uniform).

1 Bloc de code
DATA STEP Data
Explication :
Génération du jeu de données de travail 'hair' contenant des mesures répétées simulées (1000 sujets, 8 semaines).
Copié !
1DATA hair;
2 seed = 1999;
3 beta = 1.386294; *--- P is approximately 0.8;
4 DO Subj_id=1 to 1000;
5 s1 = 2*normal(seed);
6 s2 = sqrt(1.5)*normal(seed);
7 DO week=1 to 8;
8 score = round(s1 + normal(seed), 0.01);
9 p = 1/(1+exp(-beta - s2));
10 y = 0;
11 u = uniform(seed);
12 IF u < p THEN y = 1;
13 OUTPUT;
14 END;
15 END;
16keep subj_id score y;
17RUN;
2 Bloc de code
PROC GLIMMIX
Explication :
Modèle mixte linéaire avec intercept aléatoire par sujet (G-side).
Copié !
1ods html;
2title "*** Linear Mixed Model with G-side Random Effects ***";
3 PROC GLIMMIX DATA=hair;
4 class subj_id;
5 model score = / s;
6 random int / subject=subj_id;
7RUN;
3 Bloc de code
PROC GLIMMIX
Explication :
Modèle mixte linéaire modélisant la structure de covariance résiduelle (R-side, type Compound Symmetry).
Copié !
1title "*** Linear Mixed Model with R-side Random Effects ***";
2PROC GLIMMIX DATA=hair;
3 class subj_id;
4 model score = / s;
5 random _residual_ / subject=subj_id type=cs;
6RUN;
4 Bloc de code
PROC GLIMMIX
Explication :
Modèle logistique mixte avec effets aléatoires G-side.
Copié !
1title "*** Logistic Model with G-side Random Effects ***";
2 PROC GLIMMIX DATA=hair;
3 class subj_id;
4 model y (ref='0') = / dist=binary link=logit s;
5 random int / subject=subj_id;
6 estimate 'P' int 1 / ilink;
7RUN;
5 Bloc de code
PROC GLIMMIX
Explication :
Modèle logistique mixte avec effets aléatoires R-side.
Copié !
1title "*** Logistic Model with R-side Random Effects ***";
2PROC GLIMMIX DATA=hair;
3 class subj_id;
4 model y (ref='0')= / dist=binary link=logit s;
5 random _residual_ / subject=subj_id type=cs;
6 estimate 'P' int 1 / ilink;
7RUN;
8ods html close;
6 Bloc de code
PROC SORT
Explication :
Tri des données pour l'agrégation. (Attention : la variable 'id' semble incorrecte par rapport au 'subj_id' créé).
Copié !
1PROC SORT DATA=hair;
2 BY id;
3RUN;
7 Bloc de code
PROC MEANS Data
Explication :
Agrégation des données : somme de la variable réponse 'y' par identifiant.
Copié !
1PROC MEANS DATA=hair sum noprint;
2 BY id;
3 var y;
4 OUTPUT out=sum_hair sum=t;
5RUN;
8 Bloc de code
DATA STEP Data
Explication :
Préparation des données agrégées pour PROC NLMIXED (calcul des fréquences et renommage).
Copié !
1DATA sum_hair;
2 SET sum_hair;
3 m_t = _freq_ - t;
4 rename _freq_ = m;
5 drop _type_;
6RUN;
9 Bloc de code
PROC NLMIXED
Explication :
Modélisation non-linéaire mixte définissant une fonction de log-vraisemblance personnalisée (ll).
Copié !
1PROC NLMIXED DATA=sum_hair;
2 parms beta=0 rho=0.1;
3 pi = 1/(1+exp(-beta));
4 pic = 1 - pi;
5 p1 = ( 1 - rho )*pi + rho;
6 p1c = 1 - p1;
7 p2 = p1 - rho;
8 p2c = 1 - p2;
9 z = lgamma(m+1) - lgamma(t+1) - lgamma(m_t+1);
10 ll = z + log( pi*p1**t*p1c**m_t + pic*p2**t*p2c**m_t );
11 model t ~ general( ll );
12 estimate 'P' 1/(1+exp(-beta));
13 estimate 'Rho*Rho' rho*Rho;
14RUN;
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.