El script comienza creando un conjunto de datos `haseman_soares` a partir de datos en línea (`datalines`). Luego, transforma este conjunto de datos para tener una observación por frecuencia. Se llaman dos macros, `%GOF_BB` y `%GOF_RCB`, para realizar las pruebas de adecuación. Los residuos generados por estas macros se combinan, se ordenan y se clasifican para preparar la creación de gráficos Q-Q. Finalmente, se utiliza `PROC SGPANEL` para visualizar estos residuos en forma de gráficos Q-Q, lo que permite evaluar la distribución de los residuos.
Análisis de datos
Type : CREATION_INTERNE
El conjunto de datos inicial `haseman_soares` se crea directamente en el script a través de una instrucción `datalines`, y luego se transforma para expandir las observaciones basándose en la columna `freq`.
1 Bloque de código
DATA STEP Data
Explicación : Este bloque DATA STEP crea el conjunto de datos `haseman_soares` utilizando datos brutos proporcionados por `datalines`. Lee las variables `m` y `t1` a `t10`. Se utiliza un bucle `DO OVER` en la matriz `tt` (compuesta por `t1` a `t10`) para transformar los datos, creando filas para cada `freq` no nula, donde `t` es el índice de la columna y `freq` es el valor correspondiente.
Explicación : Este bloque DATA STEP post-procesa el conjunto de datos `haseman_soares`. Elimina las observaciones donde `freq` es un valor perdido. Para cada observación restante, genera un número de filas igual al valor de `freq`, desnormalizando así los datos para que cada fila represente una única ocurrencia del evento. Luego se eliminan las variables `i` y `freq`.
¡Copiado!
data haseman_soares;
set haseman_soares;
if freq = . then delete;
do i=1 to freq;
output;
end;
drop i freq;
run;
1
DATA haseman_soares;
2
SET haseman_soares;
3
IF freq = . THEN delete;
4
DO i=1 to freq;
5
OUTPUT;
6
END;
7
drop i freq;
8
RUN;
3 Bloque de código
ODS
Explicación : Estas instrucciones ODS (Output Delivery System) activan la salida HTML y la generación de gráficos para los procedimientos siguientes. La salida se guardará en formato HTML.
¡Copiado!
ods html;
ods graphics on;
1
ods html;
2
ods graphics on;
4 Bloque de código
MACRO
Explicación : Este bloque llama a dos macros SAS, `%GOF_BB` y `%GOF_RCB`, que se supone que realizan pruebas de adecuación (Goodness-of-Fit). Toman como entrada el conjunto de datos `haseman_soares` y utilizan las variables `t` y `m` para sus cálculos. El parámetro `title2` se usa para añadir un subtítulo a las salidas generadas por las macros.
¡Copiado!
%GOF_BB (inds=haseman_soares,t=t,m=m,title2=DataSet III -- Haseman and Soares (1976));
%GOF_RCB(inds=haseman_soares,t=t,m=m,title2=Dataset III -- Haseman and Soares (1976));
1
%GOF_BB (inds=haseman_soares,t=t,m=m,title2=DataSet III -- Haseman and Soares (1976));
2
%GOF_RCB(inds=haseman_soares,t=t,m=m,title2=Dataset III -- Haseman and Soares (1976));
3
5 Bloque de código
DATA STEP Data
Explicación : Este DATA STEP combina los conjuntos de datos `Resid_BB` y `Resid_RCB`, que contienen los residuos de las pruebas de adecuación, en un nuevo conjunto de datos único llamado `Resid_BB_RCB`. Esto prepara los datos para un análisis y visualización unificados.
¡Copiado!
*--- Construct QQ Plots;
data Resid_BB_RCB;
set Resid_BB Resid_RCB;
run;
1
*--- Construct QQ Plots;
2
DATA Resid_BB_RCB;
3
SET Resid_BB Resid_RCB;
4
RUN;
6 Bloque de código
PROC SORT
Explicación : El procedimiento `PROC SORT` ordena el conjunto de datos `Resid_BB_RCB` por la variable `Distribution`. Esta ordenación es esencial para los pasos de análisis subsiguientes, especialmente para `PROC RANK` y `PROC SGPANEL` que pueden requerir datos ordenados por grupo.
¡Copiado!
proc sort data=Resid_BB_RCB;
by Distribution;
run;
1
2
PROC SORT
3
DATA=Resid_BB_RCB;
4
BY Distribution;
5
6
RUN;
7
7 Bloque de código
PROC RANK Data
Explicación : El procedimiento `PROC RANK` se utiliza para calcular los rangos normales (cuantiles normales) de los residuos. Toma como entrada `Resid_BB_RCB` y crea un nuevo conjunto de datos `new_qqplots`. La opción `normal=blom` usa la fórmula de Blom para el cálculo de las puntuaciones normales, y `ties=mean` maneja los empates asignándoles el rango promedio. La variable `Resid` se clasifica y el resultado se almacena en la nueva variable `NQuant`, agrupada por `Distribution`.
¡Copiado!
proc rank data=Resid_BB_RCB out=new_qqplots normal=blom ties=mean;
by Distribution;
var Resid;
ranks NQuant;
run;
Explicación : Este bloque utiliza `PROC SGPANEL` para generar gráficos Q-Q (cuantil-cuantil) de los residuos. El gráfico se paneliza por `Distribution`, lo que significa que se creará un gráfico Q-Q distinto para cada valor de `Distribution`. Se definen los títulos, se personalizan las etiquetas de los ejes y se añade una línea de regresión (`reg`) al gráfico para facilitar la comparación de los residuos con una distribución normal teórica.
¡Copiado!
proc sgpanel data=new_qqplots noautolegend;
panelby Distribution;
title1 "DataSet III -- Haseman and Soares (1976)";
title2 "QQ-Plots of Residuals based on Observed and Expected Frequencies";
label Resid="Residuals" NQuant="Normal Quantiles";
reg x=Resid y=NQuant;
run;
1
PROC SGPANELDATA=new_qqplots noautolegend;
2
panelby Distribution;
3
title1 "DataSet III -- Haseman and Soares (1976)";
4
title2 "QQ-Plots of Residuals based on Observed and Expected Frequencies";
Explicación : Estas instrucciones desactivan la generación de gráficos ODS y cierran el destino HTML, finalizando así la salida de los resultados en el archivo HTML.
¡Copiado!
ods graphics off;
ods html close;
1
ods graphics off;
2
ods html close;
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 : Fuente: Haseman and Soares (1976)
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.