Este script realiza una prueba de aleatorización (prueba de permutación) para evaluar la diferencia de edad entre los empleados despedidos (Fired) y no despedidos. Primero, calcula la diferencia observada mediante PROC TTEST. Luego, utiliza PROC IML para generar 1000 permutaciones aleatorias de los datos. Estos conjuntos de datos permutados son analizados masivamente por PROC TTEST para construir la distribución nula de la diferencia de las medias. Finalmente, se estima un p-valor empírico comparando la estadística observada con la distribución generada.
Análisis de datos
Type : CREATION_INTERNE
Los datos se crean directamente en el script mediante un paso DATA con la instrucción DATALINES (variables Status y Age).
1 Bloque de código
DATA STEP Data
Explicación : Creación del conjunto de datos inicial 'discriminate' que contiene el estado y la edad de los individuos a través de datos internos (datalines).
¡Copiado!
data discriminate;
input Status Age;
/* Status = 0 = Fired
Status = 1 = Not Fired */
datalines;
0 34
0 37
...
1 54
;
run;
1
DATA discriminate;
2
INPUTSTATUS Age;
3
4
/* Status = 0 = Fired
5
Status = 1 = Not Fired */
6
7
DATALINES;
8
0 34
9
0 37
10
...
11
154
12
;
13
RUN;
2 Bloque de código
PROC TTEST
Explicación : Ejecución de la prueba T de Student sobre los datos reales para obtener la diferencia de media observada (referencia).
¡Copiado!
proc ttest data=discriminate;
class Status;
*may need to convert School to numeric;
var Age;
run;
1
PROC TTESTDATA=discriminate;
2
class STATUS;
3
*may need to convert School to numeric;
4
var Age;
5
RUN;
3 Bloque de código
PROC IML Data
Explicación : Uso del lenguaje matricial IML para generar 1000 permutaciones aleatorias de la variable 'Age'. Creación de una tabla ancha 'newds' donde la primera columna es el estado y las siguientes son las permutaciones.
¡Copiado!
ods output off;
ods exclude all;
proc iml ;
use discriminate;
read all var{Status Age} into x;
p=t(ranperm(x[, 2], 1000));
paf=x[, 1]||p;
create newds from paf;
append from paf;
quit;
1
ods OUTPUT off;
2
ods exclude all;
3
PROC IML ;
4
use discriminate;
5
read all var{STATUS Age} into x;
6
p=t(ranperm(x[, 2], 1000));
7
paf=x[, 1]||p;
8
create newds from paf;
9
append from paf;
10
QUIT;
4 Bloque de código
PROC TTEST Data
Explicación : Ejecución masiva de pruebas T sobre las 1000 columnas permutadas (col2 a col1001) contra el estado (col1). Las salidas ODS se suprimen por rendimiento, excepto la tabla 'conflimits' que se guarda en 'diff'.
¡Copiado!
ods output conflimits=diff;
proc ttest data=newds plots=none;
class col1;
var col2 - col1001;
run;
ods output on;
ods exclude none;
1
ods OUTPUT conflimits=diff;
2
3
PROC TTESTDATA=newds plots=none;
4
class col1;
5
var col2 - col1001;
6
RUN;
7
8
ods OUTPUT on;
9
ods exclude none;
5 Bloque de código
PROC UNIVARIATE
Explicación : Análisis de la distribución de las diferencias de medias generadas aleatoriamente (método Pooled) y visualización de un histograma.
¡Copiado!
proc univariate data=diff;
where method="Pooled";
var mean;
histogram mean;
run;
1
PROC UNIVARIATEDATA=diff;
2
where method="Pooled";
3
var mean;
4
histogram mean;
5
RUN;
6 Bloque de código
DATA STEP Data
Explicación : Filtrado de los resultados para contar cuántas permutaciones produjeron una diferencia absoluta mayor o igual al valor observado (aquí codificado a 1.9238, que debería corresponder al resultado del primer PROC TTEST).
¡Copiado!
data numdiffs;
set diff;
where method="Pooled";
if abs(mean) >=1.9238;
run;
1
DATA numdiffs;
2
SET diff;
3
where method="Pooled";
4
5
IF abs(mean) >=1.9238;
6
RUN;
7 Bloque de código
PROC PRINT
Explicación : Visualización de las permutaciones extremas para permitir el cálculo manual del p-valor (número de observaciones extremas / 1000).
¡Copiado!
proc print data=numdiffs;
where method="Pooled";
run;
1
2
PROC PRINT
3
DATA=numdiffs;
4
where method="Pooled";
5
RUN;
6
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 : Mención 'borrowed code from internet' presente en los comentarios.
Documentación relacionada
Aucune documentation spécifique pour cette catégorie.
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.