Publicado el :
Estadística CREATION_INTERNE

Análisis Estadístico Avanzado: GLIMMIX y NLMIXED

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script primero genera un conjunto de datos simulados ('hair'). Luego, realiza una serie de análisis utilizando PROC GLIMMIX para comparar modelos lineales y logísticos con diferentes tipos de efectos aleatorios (G-side vs R-side). Finalmente, agrega los datos para ajustar un modelo complejo a través de PROC NLMIXED. Nota técnica: Una inconsistencia de variable ('id' vs 'subj_id') está presente en la sección de clasificación y agregación.
Análisis de datos

Type : CREATION_INTERNE


Todos los datos son generados por el primer DATA STEP usando funciones aleatorias (normal, uniform).

1 Bloque de código
DATA STEP Data
Explicación :
Generación del conjunto de datos de trabajo 'hair' que contiene medidas repetidas simuladas (1000 sujetos, 8 semanas).
¡Copiado!
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 Bloque de código
PROC GLIMMIX
Explicación :
Modelo mixto lineal con intercepto aleatorio por sujeto (G-side).
¡Copiado!
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 Bloque de código
PROC GLIMMIX
Explicación :
Modelo mixto lineal que modela la estructura de covarianza residual (R-side, tipo Compound Symmetry).
¡Copiado!
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 Bloque de código
PROC GLIMMIX
Explicación :
Modelo logístico mixto con efectos aleatorios G-side.
¡Copiado!
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 Bloque de código
PROC GLIMMIX
Explicación :
Modelo logístico mixto con efectos aleatorios R-side.
¡Copiado!
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 Bloque de código
PROC SORT
Explicación :
Clasificación de datos para la agregación. (Atención: la variable 'id' parece incorrecta en comparación con el 'subj_id' creado).
¡Copiado!
1PROC SORT DATA=hair;
2 BY id;
3RUN;
7 Bloque de código
PROC MEANS Data
Explicación :
Agregación de datos: suma de la variable respuesta 'y' por identificador.
¡Copiado!
1PROC MEANS DATA=hair sum noprint;
2 BY id;
3 var y;
4 OUTPUT out=sum_hair sum=t;
5RUN;
8 Bloque de código
DATA STEP Data
Explicación :
Preparación de datos agregados para PROC NLMIXED (cálculo de frecuencias y renombramiento).
¡Copiado!
1DATA sum_hair;
2 SET sum_hair;
3 m_t = _freq_ - t;
4 rename _freq_ = m;
5 drop _type_;
6RUN;
9 Bloque de código
PROC NLMIXED
Explicación :
Modelado no lineal mixto que define una función de verosimilitud logarítmica personalizada (ll).
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.