El script simula datos de rendimiento escolar ('grade') para estudiantes ('student') agrupados por clase ('class') dentro de escuelas ('school'). También se simula un efecto de programa ('program'). El procedimiento GLIMMIX se utiliza luego para ajustar un modelo mixto generalizado con una distribución binomial y una función de enlace logit, integrando efectos aleatorios para la escuela y la clase anidada dentro de la escuela. El script presenta dos ejecuciones similares, la segunda ajustando el modelo con una ligera variación en la generación de datos y la adición de la opción `fastquad`.
Análisis de datos
Type : CREATION_INTERNE
Los datos 'test' se crean completamente en el script usando pasos DATA, simulando una estructura jerárquica (estudiantes en clases en escuelas) y efectos aleatorios.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA step genera un conjunto de datos llamado 'test'. Simula una estructura jerárquica con 10 escuelas, 5 clases por escuela y 10 estudiantes por clase. Se añaden efectos aleatorios 'schef' (escuela) y 'clsef' (clase). Se genera una variable binaria 'program'. La variable 'grade' se simula según una distribución binomial, dependiendo de una probabilidad 'p' calculada a partir de una combinación lineal de efectos fijos y aleatorios.
¡Copiado!
data test;
do school = 1 to 10;
schef = rannor(1234)*4;
do class = 1 to 5;
clsef = rannor(2345)*2;
program = ranbin(12345,1,.5);
do student = 1 to 10;
eta = 3 + program + schef + clsef ;
p = 1/(1+exp(-eta));
grade = ranbin(23456,1,p);
output;
end;
end;
end;
run;
1
DATA test;
2
DO school = 1 to 10;
3
schef = rannor(1234)*4;
4
DO class = 1 to 5;
5
clsef = rannor(2345)*2;
6
program = ranbin(12345,1,.5);
7
DO student = 1 to 10;
8
eta = 3 + program + schef + clsef ;
9
p = 1/(1+exp(-eta));
10
grade = ranbin(23456,1,p);
11
OUTPUT;
12
END;
13
END;
14
END;
15
RUN;
2 Bloque de código
PROC GLIMMIX
Explicación : Este procedimiento GLIMMIX ajusta un modelo mixto generalizado a los datos 'test'. Se utiliza el método de cuadratura (quad(qpoints=3)). Las variables 'school', 'class' y 'program' se declaran como variables de clasificación. El modelo especifica 'grade' como variable dependiente, 'program' como efecto fijo, con una distribución binomial y un enlace logit. Se incluyen efectos aleatorios ('random int') para 'school' y 'class' anidada dentro de 'school'.
¡Copiado!
proc glimmix data=test method = quad(qpoints=3);
class school class program;
model grade = program/s dist=binomial link=logit solution;
random int /subject = school;
random int /subject = class(school);
run;
1
PROC GLIMMIXDATA=test method = quad(qpoints=3);
2
class school class program;
3
model grade = program/s dist=binomial link=logit solution;
4
random int /subject = school;
5
random int /subject = class(school);
6
RUN;
3 Bloque de código
DATA STEP Data
Explicación : Este segundo bloque DATA step es similar al primero pero genera datos con 10 clases por escuela (en lugar de 5). Simula nuevamente una estructura jerárquica con efectos aleatorios y la variable 'grade' según los mismos principios que el primer bloque.
¡Copiado!
data test;
do school = 1 to 10;
schef = rannor(1234)*4;
do class = 1 to 10;
clsef = rannor(2345)*2;
program = ranbin(12345,1,.5);
do student = 1 to 10;
eta = 3 + program + schef + clsef ;
p = 1/(1+exp(-eta));
grade = ranbin(23456,1,p);
output;
end;
end;
end;
run;
1
DATA test;
2
DO school = 1 to 10;
3
schef = rannor(1234)*4;
4
DO class = 1 to 10;
5
clsef = rannor(2345)*2;
6
program = ranbin(12345,1,.5);
7
DO student = 1 to 10;
8
eta = 3 + program + schef + clsef ;
9
p = 1/(1+exp(-eta));
10
grade = ranbin(23456,1,p);
11
OUTPUT;
12
END;
13
END;
14
END;
15
RUN;
4 Bloque de código
PROC GLIMMIX
Explicación : Este segundo procedimiento GLIMMIX ajusta un modelo idéntico al primero, pero sobre los datos 'test' recién generados. Se añade la opción 'fastquad' al método de cuadratura, lo que puede acelerar el cálculo utilizando una aproximación diferente de las integrales.
¡Copiado!
proc glimmix data=test method = quad(qpoints=3 fastquad);
class school class program;
model grade = program/s dist=binomial link=logit solution;
random int /subject = school;
random int /subject = class(school);
run;
model grade = program/s dist=binomial link=logit solution;
4
random int /subject = school;
5
random int /subject = class(school);
6
RUN;
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.
Información de copyright : S A S S A M P L E L I B R A R Y
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.