Prueba de Permutación Monte Carlo con PROC IML

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
El script comienza creando un conjunto de datos interno. Realiza una primera prueba T para observar la diferencia real. Luego, utiliza PROC IML para generar 1000 permutaciones aleatorias de la variable objetivo 'Money'. Estas permutaciones son analizadas por PROC TTEST para generar una distribución empírica de las diferencias de medias bajo la hipótesis nula. Finalmente, PROC UNIVARIATE y un paso DATA calculan el valor p empírico comparando la estadística observada con la distribución simulada.
Análisis de datos

Type : CREATION_INTERNE


Los datos se definen directamente en el script a través de la instrucción datalines en el conjunto de datos 'cash'.

1 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos inicial 'cash' que contiene las variables 'School' y 'Money' con datos integrados.
¡Copiado!
1DATA cash;
2 INPUT School Money;
3 
4DATALINES;
50 34
60 1200
7...
81 3
91 0
10;
2 Bloque de código
PROC TTEST
¡Copiado!
1PROC TTEST DATA=cash;
2 class School;
3 var Money;
4RUN;
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' (variable x[,2]) manteniendo 'School' fija, y guardar el resultado en 'newds'.
¡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
¡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 Bloque de código
PROC PRINT
¡Copiado!
1 
2PROC PRINT
3DATA=numdiffs;
4where method="Pooled";
5RUN;
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.

Documentación relacionada

Aucune documentation spécifique pour cette catégorie.