Bootstrap en 3 pasos!
Este post contiene algunas ideas sobre el bootstrapping y como aplicarlo en 3 simples pasos
El bootstrap o estimación de Monte Carlo es un método de remuestreo no paramétrico propuesto por Bradley Efron en 1979. La idea central de este método es simple; dada una muestra aleatoria con n observaciones dicha muestra es tratada como si fuera toda la población de las cuál extraeremos B muestras con reemplazamiento.
Para cada remuestreo se calculará el valor del estimador bootstrap que se utilizará para estimar la variabilidad muestral. Tal y como los estudios teóricos han demostrado, este enfoque proporciona una buena aproximación de la distribución de los estimadores, lo cual permitirá describir algunas de sus propiedades muestrales, así como el cálculo de intervalos de confianza y la realización de contrastes de hipótesis.
Paso 1: Nuestra muestra aleatoria de normalmente distribuida de tamaño 20 data muestra; Paso 2: Medidas de tendencia central proc means mean median std stderr range;run; Mean =49.0500000 Paso 3: Generar 100 muestras con reemplazamiento proc surveyselect data=muestra out=boot /* a */ Vamos a detenernos aquí para explicar el Proc SurveySelect. El procedimiento SurveySelect ofrece una variedad de métodos de muestreo para seleccionar muestras aleatorias basadas en simples o complejos diseños de muestras. Paso 4: Calcular la media para cada una de las B muestras proc univariate data=boot noprint;
Interesante no? A que les recuerda esa distribución? Paso 5: Aplicar el método de los percentiles para calcular un intervalo de confianza del 95% para la media. proc univariate data=outall; Con un 95% de confianza podemos decir que la media está entre (41.85, 54.6) Paso 6: Calcular un intervalo de confianza del %95 para media de una distribución normal con media=50 y dev std=15. Toda la información que necesitamos ya la hemos calculado en el paso 2 así que solo queda construir el intervalo de la siguiente manera:
- Establecer un intervalo de confianza para un parámetro estimado.
- Realizar una prueba de hipótesis respecto a uno o más parámetros poblacionales.
• Standard Bootstrap
• Bootstrap-t (“Pivotal Bootstrap”)
• Bias-corrected (BCa) Bootstrap
2- Calcular algunos estadísticos como la media, la desviación estándar, error estándar y el rango.
3- Generar B=100 muestras con reemplazamiento a partir de nuestra muestra original.
4- Calcular la media para cada una de las B muestras.
5- Aplicar el método de los percentiles para calcular un intervalo de confianza del 95% para la media
6- Comparar el IC bootstrap con el IC asumiendo que la muestra sigue una distribución normal como lo es en nuestro caso.
7- Bootstrap en 3 pasos!!!
do i=1 to 20;
x=int(RAND(‘NORMAL’,50,15));
output;
end;
drop i;
run;
Median =47.0000000
Std Dev=16.4299950
Stderr= 3.5327602
Range =67.0000000
seed=441244 /* b */
method=urs /* c */
samprate=1 /* d */
outhits /* e */
rep=100; /* f */
run;
b – definimos la semilla con que iniciaremos nuestro generador de números pseudo-aleatorios con la opción seed
c – definimos el método de muestreo, recuerden que necesitamos generar B muestras aleatorias con reemplazamiento (también llamada Unrestricted Random Sampling URS)
d – Con la opción SAMPRATE=1 obtenemos muestras del mismo tamaño que la muestra original.
e – Outhits indica cuanta veces fue seleccionada una observación para construir la muestra Bi
f – Rep nos permite seleccionar el número de muestras a generar
var x;
by Replicate;
output out=meanall mean=mean;
run;
Replicate es una variable automática generada por el SurveySelect que indica que el nro de la muestra replicada.
Nuevamente vamos a detenernos aquí y vamos a echar un vistazo al histograma de las medias. 
Para generar este intervalo solo necesitamos calcular 2.5-ésimo percentil y el 97.5-ésimo percentil, estos los podemos obtener con el Univariate.
var mean;
output out=final pctlpts=2.5, 97.5 pctlpre=ic;
run;
Media +- ( t ( 1 – alfa / 2 ) ) * STDERR
DATA Normal_IC ;
LI = 50 – ( TINV ( 0.95 , 20-1 ) * 3.5327602 ) ;
LU = 50 + ( TINV ( 0.95 , 20-1 ) * 3.5327602 ) ;
output;
RUN ;
Nuestro intervalo del 95% es (43.89,56.10) el cual es muy semejante al que calculamos usando bootstrapping.
Paso 7: Solo en 3 Pasos!!!
*Paso 1;
proc surveyselect data=muestra out=boot
seed=441244
method=urs
samprate=1
outhits
rep=100;
run;
*Paso 2;
proc univariate data=boot noprint;
var x;
by Replicate;
output out=meanall mean=mean;
run;
*Paso 3;
proc univariate data=meanall;
var mean;
output out=interval pctlpts=2.5, 97.5 pctlpre=ic;
run;
Para descargar el programa completo hagan clic aquí.
Un comentario final, esto es solo una breve intro al bootstrapping, este tema tiene mucho bemoles y les recomiendo leer un texto más avanzados sobre este tema.
SASludos,
Alberto
ta bueno
Que compilador uso?
SAS?
muy bueno!! bien por tu comentario de muestras representativas! me canso de decirlo!