Análisis de Poder y Simulación Monte Carlo para Prueba de Dos Medias

Este código también está disponible en: Deutsch English Français
Nivel de dificultad
Principiante
Publicado el :
El script comienza utilizando PROC POWER para calcular el poder teórico para varias combinaciones de parámetros de una prueba de dos medias. Luego genera gráficos para visualizar estas relaciones. También se incluye una implementación manual del cálculo de poder para comparación. La segunda parte del script implementa una simulación de Monte Carlo para estimar empíricamente el poder: genera miles de conjuntos de datos bajo diferentes condiciones, realiza pruebas t en cada uno, y luego calcula la proporción de pruebas significativas, proporcionando así una estimación simulada del poder.
Análisis de datos

Type : CREATION_INTERNE


Todos los datos utilizados en este script se generan internamente, ya sea por PROC POWER (cálculos de poder) o por pasos DATA STEP (generación de datos simulados para la prueba t y cálculo manual de poder).

1 Bloque de código
PROC POWER
Explicación :
Este bloque utiliza el procedimiento PROC POWER para calcular el poder estadístico para una prueba de comparación de dos medias independientes (test=diff). Explora diferentes combinaciones de la diferencia de medias (meandiff), la desviación estándar (stddev), el nivel de significancia (alpha) y el tamaño total de la muestra (ntotal). El valor `power = .` indica que el poder es el valor a calcular.
¡Copiado!
1PROC POWER;
2 twosamplemeans test=diff
3 meandiff = 5 6
4 stddev = 12 18
5 alpha = 0.05 0.1
6 ntotal = 100 200
7 power = .;
8RUN;
2 Bloque de código
PROC POWER
¡Copiado!
1ods graphics on;
2 
3PROC POWER plotonly;
4 twosamplemeans test=diff
5 meandiff = 5 6
6 stddev = 12 18
7 alpha = 0.05 0.1
8 ntotal = 100 200
9 power = .;
10 plot;
11RUN;
12 
13ods graphics off;
14 
15 plot
16 min=60
17 yopts=(ref=0.9 crossref=yes)
18 vary(color BY stddev, linestyle BY meandiff, symbol BY alpha);
19 
20 ods OUTPUT OUTPUT=powdata;
3 Bloque de código
DATA STEP Data
¡Copiado!
1DATA tpow;
2 DO meandiff = 5, 6;
3 DO stddev = 12, 18;
4 DO alpha = 0.05, 0.1;
5 DO ntotal = 100, 200;
6 ncp = ntotal * 0.5 * 0.5 * meandiff**2 / stddev**2;
7 critval = finv(1-alpha, 1, ntotal-2, 0);
8 power = sdf('f', critval, 1, ntotal-2, ncp);
9 OUTPUT;
10 END;
11 END;
12 END;
13 END;
14RUN;
4 Bloque de código
PROC PRINT
¡Copiado!
1PROC PRINT DATA=tpow;
2RUN;
5 Bloque de código
DATA STEP Data
¡Copiado!
1%let meandiff = 5;
2%let stddev = 12;
3%let alpha = 0.05;
4%let ntotal = 100;
5%let nsim = 10000;
6 
7DATA simdata;
8 call streaminit(123);
9 DO isim = 1 to ≁
10 DO i = 1 to floor(&ntotal/2);
11 group = 1;
12 y = rand('normal', 0 , &stddev);
13 OUTPUT;
14 group = 2;
15 y = rand('normal', &meandiff, &stddev);
16 OUTPUT;
17 END;
18 END;
19RUN;
6 Bloque de código
PROC TTEST
¡Copiado!
1ods exclude all;
2PROC TTEST DATA=simdata;
3 ods OUTPUT ttests=tests;
4 BY isim;
5 class group;
6 var y;
7RUN;
8ods exclude none;
7 Bloque de código
DATA STEP Data
¡Copiado!
1DATA tests;
2 SET tests;
3 where method="Pooled";
4 issig = probt < α
5RUN;
8 Bloque de código
PROC FREQ
¡Copiado!
1PROC FREQ DATA=tests;
2 ods select binomial;
3 tables issig / binomial(level='1');
4RUN;
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.