Publicado el :
Estadística CREATION_INTERNE

Simulación de variables Bernoulli correlacionadas y análisis Monte Carlo

Este código también está disponible en: Deutsch English Français
En espera de validación
El programa genera primero un conjunto de datos de 20 000 clústeres, cada uno conteniendo 5 unidades elementales con una probabilidad de éxito de 0.6 y una correlación intra-clúster de 0.3. Transpone los datos para verificar la estructura de correlación. Luego, realiza agregaciones por clúster y analiza la varianza. Finalmente, se realiza una simulación de Monte Carlo para estimar la tasa de error de tipo I en datos sobredispersos.
Análisis de datos

Type : CREATION_INTERNE


Todos los datos se generan algorítmicamente a través de pasos DATA utilizando la función aleatoria 'uniform'.

1 Bloque de código
DATA STEP Data
Explicación :
Generación de 20.000 observaciones simuladas estructuradas en clústeres (m=5) con una correlación intra-clase definida (rho2=0.3).
¡Copiado!
1DATA correlated_bernoullis;
2 n = 20000; *--- Number of clusters;
3 m = 5; *--- Number of elemental units within the cluster;
4 pi = 0.6; *--- Probability of success of each elemental unit;
5 rho2 = 0.3; *--- Intra-cluster correlation;
6 seed = 16670;
7 rho = sqrt( rho2 );
8 DO subjid = 1 to n;
9 yy = 0; *--- Variable yy plays the role of y of eq. (1.7);
10 u = uniform( seed );
11 IF u < pi THEN yy = 1;
12 DO i=1 to m;
13 y = 0;
14 u = uniform( seed );
15 IF u < rho THEN y = yy;
16 ELSE DO;
17 uu = uniform( seed );
18 IF uu < pi THEN y = 1;
19 END;
20 OUTPUT;
21 END;
22 END;
23 keep subjid i y;
24RUN;
2 Bloque de código
PROC TRANSPOSE Data
Explicación :
Pivote de los datos para transformar las observaciones intra-clúster en columnas distintas (_1 a _5) con el fin de calcular las correlaciones.
¡Copiado!
1PROC TRANSPOSE DATA=correlated_bernoullis out=new;
2 BY subjid;
3 id i;
4 var y;
5RUN;
3 Bloque de código
PROC CORR
Explicación :
Cálculo de la matriz de correlación entre las unidades del clúster para verificar si la simulación respeta los parámetros definidos.
¡Copiado!
1ods html;
2PROC CORR DATA=new;
3 var _1 - _5;
4RUN;
5ods html close;
4 Bloque de código
PROC MEANS Data
¡Copiado!
1PROC MEANS DATA=correlated_bernoullis sum noprint;
2 class subjid;
3 var y;
4 OUTPUT out=out1 sum=t;
5RUN;
6 
7DATA out1;
8 SET out1;
9 IF _type_ = 1;
10 drop _type _freq_;
11RUN;
5 Bloque de código
PROC MEANS
¡Copiado!
1ods html;
2PROC MEANS DATA=out1 mean var maxdec=2;
3 var t;
4RUN;
5ods html close;
6 Bloque de código
DATA STEP Data
¡Copiado!
1DATA correlated_bernoullis; *--- This data set was created in Program 1.1;
2 SET correlated_bernoullis;
3 reps = ceil( subjid / 20 ); *--- Creates 1000 reps of n=20 clusters of size m=5 each;
4RUN;
7 Bloque de código
PROC MEANS Data
¡Copiado!
1PROC MEANS DATA=correlated_bernoullis mean noprint;
2 class reps;
3 var y;
4 OUTPUT out=test mean=Pi_hat;
5RUN;
8 Bloque de código
DATA STEP Data
¡Copiado!
1DATA test;
2SET test;
3 IF _type_ = 1;
4 z = (Pi_hat - 0.6) / sqrt( Pi_hat*(1-Pi_hat) / 100 );
5 P_val = 0;
6 IF z > 1.6449 THEN P_val = 1;
7RUN;
9 Bloque de código
PROC MEANS
¡Copiado!
1title "Monte Carlo Estimate of Type I Error Rate";
2PROC MEANS DATA=test n mean maxdec=3;
3 var P_val;
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.