Publicado el :
Estadística CREACION_INTERNA

Ejemplo 3 Documentación PROC NLMIXED: Modelo Probit-Normal

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script es el ejemplo 3 de la documentación de SAS© para PROC NLMIXED. Analiza datos de inhaladores (Ezzet y Whitehead, 1991) ajustando un modelo de probabilidades proporcionales (proportional odds model) con efectos aleatorios. Define límites para los parámetros de umbral y usa la función `probnorm` para construir manualmente la función de log-verosimilitud.
Análisis de datos

Type : CREACION_INTERNA


Los datos 'inhaler' se crean a través de un step DATA con DATALINES. La sintaxis original sugiere el uso de ' @@' para leer múltiples observaciones por línea.

1 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos 'inhaler'. La instrucción INPUT utiliza el modificador ' @@' para leer datos de forma continua (varias observaciones por línea física). Se calculan las variables 'gt' (interacción) y 'sub' (identificador de sujeto).
¡Copiado!
1DATA inhaler;
2 INPUT clarity group time freq @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
3 gt = group*time;
4 sub = floor((_n_+1)/2);
5 DATALINES;
61 0 0 59 1 0 1 59 1 0 0 35 2 0 1 35 1 0 0 3 3 0 1 3 1 0 0 2
74 0 1 2 2 0 0 11 1 0 1 11 2 0 0 27 2 0 1 27 2 0 0 2 3 0 1 2
82 0 0 1 4 0 1 1 4 0 0 1 1 0 1 1 4 0 0 1 2 0 1 1 1 1 0 63
91 1 1 63 1 1 0 13 2 1 1 13 2 1 0 40 1 1 1 40 2 1 0 15 2 1 1 15
103 1 0 7 1 1 1 7 3 1 0 2 2 1 1 2 3 1 0 1 3 1 1 1 4 1 0 2
111 1 1 2 4 1 0 1 3 1 1 1
12;
2 Bloque de código
PROC NLMIXED
Explicación :
Estimación del modelo mixto no lineal. La distribución 'general' se utiliza para especificar una log-verosimilitud personalizada ('ll') basada en la función de distribución normal acumulativa (probnorm). El modelo incluye un efecto aleatorio 'u' distribuido normalmente a nivel de sujeto 'sub'. 'REPLICATE' considera la variable de frecuencia.
¡Copiado!
1PROC NLMIXED DATA=inhaler corr ecorr;
2 parms b0=0 b1=0 b2=0 b3=0 sd=1 i1=1 i2=1;
3 bounds i1 > 0, i2 > 0;
4 eta = b0 + b1*group + b2*time + b3*gt + u;
5 IF (clarity=1) THEN p = probnorm(-eta);
6 ELSE IF (clarity=2) THEN
7 p = probnorm(i1-eta) - probnorm(-eta);
8 ELSE IF (clarity=3) THEN
9 p = probnorm(i1+i2-eta) - probnorm(i1-eta);
10 ELSE p = 1 - probnorm(i1+i2-eta);
11 IF (p > 1e-8) THEN ll = log(p);
12 ELSE ll = -1e20;
13 model clarity ~ general(ll);
14 random u ~ normal(0,sd*sd) subject=sub;
15 replicate freq;
16 estimate 'thresh2' i1;
17 estimate 'thresh3' i1 + i2;
18 estimate 'icc' sd*sd/(1+sd*sd);
19RUN;
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 : SAS SAMPLE LIBRARY