Publicado el :
Estadística CREACION_INTERNA

Análisis de Modelos Lineales Mixtos No Lineales (NLMIXED) para Datos Binomiales

Este código también está disponible en: Deutsch English Français
En espera de validación
El script inicializa un conjunto de datos llamado 'surgery' utilizando `datalines` para simular resultados de estudios clínicos (éxitos 'y' en 'n' ensayos). Crea variables auxiliares 'treat2' y 'no', y transforma la variable 'treat'. Luego, se ejecutan dos procedimientos `NLMIXED`. El primero ajusta un modelo logístico binomial con un efecto aleatorio no correlacionado ('a') por estudio ('subject=study'). El segundo procede a un ajuste más complejo, integrando dos efectos aleatorios correlacionados ('a' y 'b') y una interacción entre 'b' y 'treat', especificando un número de puntos de cuadratura (`qpoints=50`) y generando un conjunto de datos de predicciones 'new2'.
Análisis de datos

Type : CREACION_INTERNA


Los datos se crean directamente en el script a través de un paso DATA y `datalines`, formando el conjunto de datos 'surgery'. Aunque una cadena de caracteres similar a una ruta de archivo JSON está presente en la instrucción `input`, no se interpreta como una fuente de datos externa para este paso DATA específico, ya que los datos se proporcionan directamente después de `cards;`.

1 Bloque de código
DATA STEP Data
Explicación :
Este bloque DATA STEP crea el conjunto de datos 'surgery' utilizando `datalines`. Lee las variables 'study', 'treat', 'y' (número de éxitos) y 'n' (número total de ensayos). La cadena ' @code_sas_json/hsdua2304@gmail.com_SAS_Assignment_1.json' está presente en la instrucción `input` pero no es una sintaxis estándar para leer datos externos en este contexto y se interpreta literalmente. El bloque calcula luego 'no' (número de fallos) y transforma la variable 'treat' de 1 a 0.5 y de 0 a -0.5, preparando así los datos para los análisis subsiguientes.
¡Copiado!
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 Bloque de código
PROC NLMIXED
Explicación :
Este primer bloque `PROC NLMIXED` ajusta un modelo lineal mixto no lineal. Modela la probabilidad 'pi' de éxito 'y' a partir de 'n' ensayos utilizando una función logística con un efecto aleatorio 'a' para cada 'study'. El efecto aleatorio 'a' sigue una distribución normal con una media 'alpha' y una varianza 'sig*sig', sin interacción especificada con otras variables.
¡Copiado!
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 Bloque de código
PROC NLMIXED Data
Explicación :
Este segundo bloque `PROC NLMIXED` ajusta un modelo más complejo con efectos aleatorios correlacionados. Incluye dos efectos aleatorios, 'a' y 'b', que se suponen que siguen una distribución normal multivariada correlacionada. La probabilidad 'pi' integra una interacción de 'b' con 'treat'. La opción `qpoints=50` se utiliza para el cálculo de las integrales por cuadratura. Además, la cláusula `predict` se utiliza para predecir los valores de 'beta + b' y registrarlos en un nuevo conjunto de datos llamado 'new2'.
¡Copiado!
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;
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.