Este script es un ejemplo de uso del procedimiento FMM (Finite Mixture Models). Demuestra cómo modelar datos de conteo ('count') que tienen más ceros de los que predeciría un modelo de Poisson estándar. El script comienza creando un conjunto de datos, luego aplica progresivamente modelos más complejos: un modelo de Poisson básico, un modelo de mezcla de dos componentes (Poisson y una constante para los ceros excedentes), y finalmente una versión bayesiana de este modelo de mezcla. Las opciones ODS se utilizan para generar gráficos de diagnóstico para el análisis bayesiano.
Análisis de datos
Type : CREATION_INTERNE
Los datos se crean directamente en el script a través de un paso DATA y la instrucción DATALINES. La tabla 'catch' contiene el género, la edad y un número ('count'). El operador ' @@' se utiliza para leer múltiples observaciones de una sola línea de datos.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque de código crea la tabla de trabajo 'catch'. Lee las variables 'gender', 'age' y 'count' a partir de datos integrados directamente en el programa a través de la instrucción 'datalines'. El indicador ' @@' en la instrucción 'input' permite leer múltiples observaciones de la misma línea de datos brutos.
¡Copiado!
data catch;
input gender $ age count @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
datalines;
F 54 18 M 37 0 F 48 12 M 27 0
M 55 0 M 32 0 F 49 12 F 45 11
M 39 0 F 34 1 F 50 0 M 52 4
M 33 0 M 32 0 F 23 1 F 17 0
F 44 5 M 44 0 F 26 0 F 30 0
F 38 0 F 38 0 F 52 18 M 23 1
F 23 0 M 32 0 F 33 3 M 26 0
F 46 8 M 45 5 M 51 10 F 48 5
F 31 2 F 25 1 M 22 0 M 41 0
M 19 0 M 23 0 M 31 1 M 17 0
F 21 0 F 44 7 M 28 0 M 47 3
M 23 0 F 29 3 F 24 0 M 34 1
F 19 0 F 35 2 M 39 0 M 43 6
;
1
DATA catch;
2
INPUT gender $ age count @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
3
DATALINES;
4
F 5418 M 37 0 F 4812 M 27 0
5
M 55 0 M 32 0 F 4912 F 4511
6
M 39 0 F 341 F 50 0 M 524
7
M 33 0 M 32 0 F 231 F 17 0
8
F 445 M 44 0 F 26 0 F 30 0
9
F 38 0 F 38 0 F 5218 M 231
10
F 23 0 M 32 0 F 333 M 26 0
11
F 468 M 455 M 5110 F 485
12
F 312 F 251 M 22 0 M 41 0
13
M 19 0 M 23 0 M 311 M 17 0
14
F 21 0 F 447 M 28 0 M 473
15
M 23 0 F 293 F 24 0 M 341
16
F 19 0 F 352 M 39 0 M 436
17
;
2 Bloque de código
PROC FMM
Explicación : Este bloque ejecuta un primer modelo de regresión de Poisson simple. La variable de respuesta 'count' se modela en función de la interacción entre 'gender' y 'age'. El procedimiento FMM se utiliza aquí con un solo componente, lo que equivale a un Modelo Lineal Generalizado (GLM) estándar con una distribución de Poisson.
¡Copiado!
proc fmm data=catch;
class gender;
model count = gender*age / dist=Poisson;
run;
1
PROC FMMDATA=catch;
2
class gender;
3
model count = gender*age / dist=Poisson;
4
RUN;
3 Bloque de código
PROC FMM
Explicación : Este bloque define un modelo de mezcla de dos componentes, típico de una regresión con 'inflación de ceros'. La primera instrucción 'model' especifica el componente de Poisson. La segunda instrucción 'model +' añade un segundo componente, aquí una distribución 'Constant', que modela la probabilidad de tener un cero excedente (un cero que no proviene del proceso de Poisson).
¡Copiado!
proc fmm data=catch;
class gender;
model count = gender*age / dist=Poisson ;
model + / dist=Constant;
run;
1
PROC FMMDATA=catch;
2
class gender;
3
model count = gender*age / dist=Poisson ;
4
model + / dist=Constant;
5
RUN;
4 Bloque de código
PROC FMM
Explicación : Este bloque ejecuta el mismo modelo con 'inflación de ceros' que el anterior, pero utilizando un enfoque de inferencia bayesiana, activado por la instrucción 'BAYES'. Se define una semilla ('seed') para asegurar la reproducibilidad de los resultados. La opción 'performance' se utiliza para sugerir el uso de dos procesadores para acelerar los cálculos.
¡Copiado!
proc fmm data=catch seed=12345;
class gender;
model count = gender*age / dist=Poisson;
model + / dist=constant;
performance cpucount=2;
bayes;
run;
1
PROC FMMDATA=catch seed=12345;
2
class gender;
3
model count = gender*age / dist=Poisson;
4
model + / dist=constant;
5
performance cpucount=2;
6
bayes;
7
RUN;
5 Bloque de código
PROC FMM
Explicación : Este último bloque re-ejecuta el análisis bayesiano, pero activando la salida gráfica ODS ('ods graphics on'). La instrucción 'ods select TADPanel' restringe la salida gráfica a un panel específico que contiene los gráficos de diagnóstico de la convergencia de las cadenas MCMC (Trace, Autocorrelation, Density), que son esenciales para validar los resultados de un análisis bayesiano.
¡Copiado!
ods graphics on;
ods select TADPanel;
proc fmm data=catch seed=12345;
class gender;
model count = gender*age / dist=Poisson;
model + / dist=constant;
performance cpucount=2;
bayes;
run;
ods graphics off;
1
ods graphics on;
2
ods select TADPanel;
3
PROC FMMDATA=catch seed=12345;
4
class gender;
5
model count = gender*age / dist=Poisson;
6
model + / dist=constant;
7
performance cpucount=2;
8
bayes;
9
RUN;
10
ods graphics off;
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.