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.
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 = 1THEN treat = .5; ELSE treat = -.5;
6
CARDS;
7
117151 0 1113
8
218192 0 816
9
315343 0 439
10
417364 0 431
11
513125 0 0 12
12
61476 0 44
13
714177 0 1324
14
811168 0 1316
15
913149 0 722
16
10123810 0 1232
17
11161211 0 88
18
1212712 0 79
19
13192113 0 724
20
14172114 0 525
21
15132515 0 1132
22
16141116 0 610
23
17121017 0 810
24
18113118 0 427
25
19142819 0 1531
26
20174320 0 1643
27
21164021 0 1321
28
22141822 0 539
29
231146823 0 1374
30
24162124 0 821
31
251 0 625 0 66
32
26111026 0 515
33
27151727 0 515
34
281 0 1028 0 1214
35
291 0 2229 0 824
36
30121830 0 1021
37
31111531 0 713
38
32182432 0 1527
39
33161233 0 79
40
341 0 2034 0 523
41
35141735 0 216
42
361104036 0 1220
43
37131637 0 216
44
38143438 0 519
45
39173839 0 1537
46
401 0 3440 0 3434
47
411 0 941 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!
/* (11.7) */
proc nlmixed; * random effects, no interaction;
pi = exp(a + beta*treat)/(1+exp(a + beta*treat)); * logistic formula for prob;
model y ~ binomial(n, pi);
random a ~ normal(alpha, sig*sig) subject=study;
1
/* (11.7) */
2
PROC NLMIXED; * random effects, no interaction;
3
pi = exp(a + beta*treat)/(1+exp(a + beta*treat)); * logistic formula for prob;
4
model y ~ binomial(n, pi);
5
random 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!
/* (11.8) */
proc nlmixed qpoints=50; * correlated random effects, interaction;
pi = exp(alpha + a + beta*treat + b*treat)/(1+exp(alpha + a + beta*treat + b*treat));
model y ~ binomial(n, pi);
random a b ~ normal([0,0], [sig_a*sig_a, rho ,sig_b*sig_b]) subject=study;
predict beta + b out=new2;
run;
1
/* (11.8) */
2
PROC NLMIXED qpoints=50; * correlated random effects, interaction;
3
pi = exp(alpha + a + beta*treat + b*treat)/(1+exp(alpha + a + beta*treat + b*treat));
4
model y ~ binomial(n, pi);
5
random a b ~ normal([0,0], [sig_a*sig_a, rho ,sig_b*sig_b]) subject=study;
6
predict beta + b out=new2;
7
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.
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.