Publicado el :
Estadística CREATION_INTERNE

Prueba de permutación de Monte Carlo con PROC IML

Este código también está disponible en: Deutsch English Français
En espera de validación
Este programa primero genera un pequeño conjunto de datos 'cash'. Realiza una prueba t de Student estándar para obtener la diferencia observada. Luego, utiliza PROC IML para generar 1000 permutaciones aleatorias de la variable de respuesta ('Money'), simulando la hipótesis nula. Ejecuta pruebas t en estas 1000 iteraciones y compara la distribución de las diferencias simuladas con la diferencia observada para derivar un valor p empírico.
Análisis de datos

Type : CREATION_INTERNE


Los datos se crean manualmente mediante la instrucción DATALINES en el primer paso DATA.

1 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos 'cash' que contiene dos variables: School (grupo) y Money (valor numérico).
¡Copiado!
1DATA cash;
2 INPUT School Money;
3 
4DATALINES;
50 34
60 1200
70 23
80 50
90 60
100 50
110 0
120 0
130 30
140 89
150 0
160 300
170 400
180 20
190 10
200 0
211 20
221 10
231 5
241 0
251 30
261 50
271 0
281 100
291 110
301 0
311 40
321 10
331 3
341 0
35;
2 Bloque de código
PROC TTEST
Explicación :
Ejecución de la prueba t de Student inicial en los datos observados para calcular la diferencia de media real entre los grupos.
¡Copiado!
1PROC TTEST DATA=cash;
2 class School;
3 *may need to convert School to numeric;
4 var Money;
5RUN;
3 Bloque de código
PROC IML Data
Explicación :
Uso del lenguaje matricial IML para leer los datos, generar 1000 permutaciones aleatorias de la columna 'Money' (remuestreo sin reemplazo) y crear una tabla grande 'newds' que contiene los grupos originales y los 1000 vectores permutados.
¡Copiado!
1ods OUTPUT off;
2ods exclude all;
3 
4PROC IML ;
5 use cash;
6 read all var{School Money} into x;
7 p=t(ranperm(x[, 2], 1000));
8 paf=x[, 1]||p;
9 create newds from paf;
10 append from paf;
11 QUIT;
4 Bloque de código
PROC TTEST Data
Explicación :
Ejecución masiva de pruebas t en las 1000 columnas permutadas (col2 a col1001) en relación con el grupo (col1). Los resultados (límites de confianza/diferencias) se capturan en la tabla 'diff' a través de ODS OUTPUT.
¡Copiado!
1ods OUTPUT conflimits=diff;
2 
3PROC TTEST DATA=newds plots=none;
4 class col1;
5 var col2 - col1001;
6RUN;
7 
8ods OUTPUT on;
9ods exclude none;
5 Bloque de código
PROC UNIVARIATE
¡Copiado!
1PROC UNIVARIATE DATA=diff;
2 where method="Pooled";
3 var mean;
4 histogram mean;
5RUN;
6 Bloque de código
DATA STEP Data
¡Copiado!
1DATA numdiffs;
2 SET diff;
3 where method="Pooled";
4 
5 IF abs(mean) >=114.6;
6RUN;
7 
8PROC PRINT DATA=numdiffs;
9 where method="Pooled";
10RUN;
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.