BLOQUE 2 MÉTODOS DE MONTE CARLO Y TÉCNICAS DE BOOTSTRAP Preliminares Para seguir adecuadamente estos apuntes es preciso recordar los conceptos claves de inferencia estadística. Es conveniente al menos recordar con claridad los siguientes términos: Contraste de hipótesis Hipótesis nula Hipótesis alternativa Test estadístico Test de una cola; test de dos colas Error tipo I Error tipo II Tamaño y Potencia de un test Región de no-rechazo (aceptación) Región de rechazo Valor crítico P-valor (p-value) Intervalo de confianza Técnicas de Monte Carlo Los procedimientos de Monte Carlo (MC), a los que nos podemos referir como pruebas de MC, experimentos de MC, simulaciones de MC, test o contrastes de MC, tienen un peculiar nombre ‘Monte Carlo’ dado que necesariamente implican generar un gran número de números aleatorios, como se hace en los juegos de azar de los casinos. El casino más famoso cuando los ordenadores por primera vez fueron capaces de realizar simulaciones era el de Monte Carlo. Esto explica que hablemos de experimento de MC y no de experimentos de LV (Las Vegas). Precisamente la idea fundamental detrás de cualquier método de MC es podemos aprender características de un estadístico (o un test) obteniendo repetidas muestras aleatorias de la población de interés y observando el comportamiento del estadístico para dichas muestras. Los valores observados que va tomando el estadístico para las distintas muestras se utilizan para estimar la distribución de dicho estadístico. Obviamente si previamente conocemos (analíticamente) dicha distribución no es necesario implementar métodos de MC. Se observa que es necesario para los métodos de MC generar números aleatorios. Afortunadamente las secciones anteriores nos han enseñado a hacerlo. Fundamentalmente, toda simulación de MC tiene los siguientes pasos i) Determinar el modelo (población) que representa la verdadera población de interés. ii) Tomar una muestra de la misma. iii) Calcular el valor del estadístico para la muestra generada, y almacenar dicho valor. iv) Repetir los pasos ii y iii para un número B de tiradas. v) Utilizar los B valores almacenados del estadístico de interés para estudiar la distribución del estadístico. Estos pasos pueden ser útiles para estudiar, por ejemplo, la desviación estándar del estadístico. Pero también puede ser extraordinariamente útil para contrastar una hipótesis. Cuando hacemos un contraste estadístico de hipótesis, una vez que observamos el valor que toma el estadístico para una muestra (dada), debemos decidir si el valor observado es consistente con la hipótesis nula o no. Para ello podemos (en caso de no conocer la distribución teórica) utilizar la información que nos proporciona la simulación de MC. Esto requiere que estimemos la distribución del estadístico cuando la hipótesis nula es verdadera (cierta). Recordemos que cuando conocemos la distribución del estadístico, basta que fijemos un nivel de significación para el contraste de hipótesis, y entonces busquemos un valor crítico, para que podamos saber si rechazamos o no la hipótesis nula. Alternativamente (preferiblemente en mi opinión) podemos usar el p-value para realizar el contraste. En el caso de contraste de hipótesis con simulación de MC, el valor crítico y el pvalue se obtienen utilizando la distribución estimada para el test en cuestión. El siguiente ejemplo resulta ilustrativo de la técnica usando p-values. Ejemplo El conjunto de dato MCdata contiene 25 observaciones, y sabemos tiene una desviación típica de 7,8. Usemos esos datos para contrastar la siguiente hipótesis nula (Ho) y alternativa (Ha): Ho: versus Ha: Podemos pensar, inicialmente, que los datos provienen de una distribución normal. Visualmente, y a modo sólo del ejemplo, podemos utilizar la función normplot para ver si la distribución normal es apropiada como la población de donde muestrear. normplot(MCdata) Si asumimos que proviene de una normal, entonces % Calcular el valor del estadístico deseado. En este caso la %media muestral. Tobs = mean(MCdata); % Número de muestras de MC deseadas. M = 1000; % Comienza la simulación. Tm = zeros(1,M); for i = 1:M % GEnerar una muestra aleatoria bajo Ho. sigma = 7.8; xs = sigma*randn(1,n) + 454; Tm(i) = mean(xs); end % Obtener el p-value. Es un test de una sola cola (baja). % Buscar todos los valores de la simulación que están por debajo %del valor del estadístico ind = find(Tm <= Tobs); pvalhat = length(ind)/M; Obtendremos un valor próximo a 0.007, es decir, el valor del estadístico obtenido de la muestra deja una masa de probabilidad por debajo del 5 por ciento respecto de la distribución muestral que hemos aproximado por MC. Dicho de otro modo, el estadístico toma un valor poco verosímil si la hipótesis nula Ho fuera verdadera. En conclusión, a ese nivel de significación, la Ho se rechaza. Es el momento de trabajar con el ejercicio 6. Los métodos de Monte Carlo son muy frecuentemente utilizados para estudiar el comportamiento de un contraste o estadístico en términos del Error Tipo I y la potencia (=1-Error Tipo II). Supongamos por ejemplo que tenemos un test para el que no estamos seguros de que efectivamente podamos usar una distribución límite estándar normal, y queremos saber si utilizando la aproximación estándar nos equivocamos más de los que estamos dispuestos. O por ejemplo, supongamos que tenemos un test asintóticamente distribuido de acuerdo a una función de probabilidad conocida, sin embargo queremos saber si para muestras pequeñas usar la aproximación asintótica es adecuado. En estos casos es necesario realizar unas pruebas de tamaño del test (error tipo I) para ver si estamos rechazando de acuerdo a lo previsto por la teoría. Los pasos fundamentales (que trabajaremos en el ejercicio 7) son los siguientes Método de Monte Carlo para evaluación del Error Tipo I 1. Determine the pseudo-population when the null hypothesis is true. 2. Generate a random sample of size n from this pseudo-population. 3. Perform the hypothesis test using the critical value. 4. Determine whether a Type I error has been committed. In other words, was the null hypothesis rejected? We know that it should not be rejected because we are sampling from the distribution according to the null hypothesis. Record the result for this trial as, 5. Repeat steps 2 through 4 for M trials. 6. The probability of making a Type I error is . El paso 6 es lo mismo que calcular la proporción de veces que la Ho es falsamente rechazada en las M tiradas que hemos realizado. Esto es una estimación del nivel de significatividad del test para un valor crítico determinado (por la teoría). Ahora es el momento de trabajar el ejercicio 7 es decir, el segundo de este bloque. Técnicas de bootstrapping Lo primero que nos puede llamar la atención es el nombre tan peculiar que tiene esta técnica. Es más sencillo entender el origen de la denominación una vez que entendamos en qué consisten es tipo de técnicas. El bootstrap es un método de Monte Carlo donde no haremos suposiciones paramétricas sobre la población correcta que genera la muestra aleatoria. En su lugar, usamos la muestra como una estimación de la población. Esta estimación se denomina distribución empírica donde cada xi tiene una probabilidad de 1/n. Por tanto, cada xi tiene la misma probabilidad de ser seleccionada en una nueva muestra tomada de . Cuando usamos como nuestra pseudo-población, remuestreamos con reemplazamiento de la muestra original . La nueva muestra obtenida por este procedimiento la denotamos por . Dado que el remuestreo es con reemplazamiento a partir de la muestra original, existe la posibilidad de que algunos puntos aparezcan más de una vez en ,o que no aparezcan. Tal y como lo acabamos de exponer, el método es aplicable a un proceso unidimensional, pero es obvio que también puede hacerse para el caso d-dimensional. Uno puede preguntarse por qué es necesario utilizar este procedimiento, y qué utilidad tiene. Recordemos inicialmente que se trata de un procedimiento de Monte Carlo, y por tanto, es útil cuando no podemos obtener una solución analítica para el problema que estamos tratando de resolver. Por ejemplo, supongamos que queremos conocer el error estándar de un estimador. Si este estimador fuera la media muestral, y tuviéramos datos iid, sería muy razonable utilizar dado que el Teorema Central del Límite nos permite estar seguros de que asintóticamente lo estamos haciendo perfectamente. Por otro lado, esto no sería tan sencillo si nuestro estimador fuera, digamos, la mediana o el percentil quinto. Dado que no conocemos la naturaleza del proceso generador de los datos, difícilmente podríamos construir un estimador de su error estándar o un intervalo de confianza. Toda vez que no podemos hacer supuestos sobre la naturaleza del proceso generador, el bootstrap sí nos permite generar este tipo de estimadores, y precisamente ahí está su utilidad. Veamos entonces cómo realizaría para un estimador de nuestro interés, Algoritmo Bootstrap General 1. Dada una muestra aleatoria, , calcula . 2. Toma una muestra con reemplazamiento de la muestra original para formar , donde b indica el número de muestra bootstrap. 3. Calcula el mismo estadístico usando ahora la muestra bootstrap d el paso 2 para obtener 4. Repite los pasos 2 a 3, B veces. 5. Utiliza esta estimación de la distribución de (esto es, las réplicas bootstrap) para obtener la característica deseada (por ejemplo, el error estándar, el sesgo o un intervalo de confianza) A continuación vamos a aplicar el algoritmo general a varios casos. Comenzamos por la estimación bootstrap de error estándar de un estadístico . El algoritmo particular para el error estándar sería el siguiente A modo de ejemplo supongamos que estamos interesados en obtener el error estándar del estimador del apuntamiento de una población. Vamos a estimarlo por bootstrap. Tomamos para ello nuestra muestra MCdata con la que hemos trabajado en los ejercicios previos. El código es el siguiente: load MCdata % Condiciones iniciales: tamaño de la población y número de %réplicas. n = length(MCdata); B = 100;% number of bootstrap replicates % Estimación del estadístico de interés. theta = skewness(MCdata); % Usa la function ‘unidrnd’ para obtener los índices del %remuestreo. inds = unidrnd(n,n,B); % Extrae estos de los datos. xboot = forearm(inds); % POdemo obetener el apuntamiento de cada columna usando % skewness. thetab = skewness(xboot); % Estimamos ahora el error estándar seb = std(thetab); Hay otras situaciones habituales para las que la estimación por bootstrap nos resulta muy útil. Tal es el caso del sesgo, que es otra cantidad que mide la precisión estadística de un estimador. El sesgo se define como la diferencia entre el valor esperado del estadístico y el parámetro verdadero: Sesgo de θ̂ = E(θ̂ ) − θ = E[θ̂ − θ ] . Muchos estadísticos tienen un sesgo muestral finito, y por tanto su valor es distinto de cero. Sin embargo, asintóticamente son estadísticos insesgados. Los estadísticos sesgados suelen aparecer cuando el estimador es una función no-lineal de los datos. El bootstrap puede utilizarse para estimar el sesgo, y el estimador puede usarse para eliminar el sesgo en el estimador original. La idea consiste en calcular la esperanza sobre la distribución empírica de F. El algortimo sería de la siguiente manera: Como continuación del ejemplo anterior, si quisiéramos estimar el sesgo del apuntamiento muestral, simplemente tendríamos que calcular la media del apuntamiento con las réplicas bootstrap, y restarle la el estimador inicial. Por otro lado, también es posible utilizar estas técnicas para elaborar intervalos de confianza de estimadores. El procedimiento general sería el siguiente: Si los estimadores por bootstrap están ordenados del menor al mayor, y BalphaL y BalphaH son enteros, entonces el intervalo de confianza es [θ̂ *Bα L ,θ̂ *Bα H ] . Completa a continuación el ejercicio 8. EJERCICIOS 6.- En el ejemplo MCdata con p-values hemos obtenido que rechazábamos la hipótesis nula. Ahora vamos a considerar las mismas hipótesis, pero nuestro test estadístico será . Ahora sigue los siguientes pasos % Obtener el valor observado del test estadístico a partir de la muestra MCdat % Genera 1000 muestras aleatorias consistentes con la Ho, recuerda que el número de observaciones de cada muestra ha de ser igual al número de observaciones que hay en MCdata. % Para cada muestra guarda el valor del estadístico de interés valorado para dicha muestra. % Ahora deberías tener un vector con 1000 valoraciones del estadistico de interés. Utiliza la función quantile con un nivel de 0.05 de significatividad para contrastar la Ho. Recuerda que usando quantile, en este caso, obtenemos el valor crítico que nos delimita la frontera entre la región de rechazo y aceptación. % La teoría nos dice que no habría sido necesario usar métodos de MC, toda vez que el estadístico computado se ajusta a una normal (0, 1) y por tanto el valor crítico teórico para esta Ho es de 1.645. ¿Qué conclusiones puedes sacar al valorar Ho con la distribución teórica (no-simulada) al compararlo con la conclusión obtenida mediante métodos de MC? 7.- Ahora queremos saber si el estadístico utilizado en el ejercicio anterior realmente se comporta como indica su distribución teórica para muestras de tamaño 20. A tal efecto elaboremos una simulación de MC para comprobar si el tamaño del estadístico es correcto. Sigue los siguientes pasos - Fija el número de simulaciones que deseas realizar (M = 1000) - Decide el nivel de significatividad para el contraste de la Ho (alpha = 0.05) - Obtener el valor crítico teórico si usamos z. Ayuda: es -1.645, pero usa norminv para determinarlo con el software (no siempre te acuerdas y nunca llevas las tablas encima). - Generar M muestras bajo la Ho - Utiliza las instrucciones bucle if-end para valorar si en cada iteración (cada muestra simulada) el estadístico rechaza falsamente la Ho (es decir, si comete error tipo I) o no. - Para cada iteración deberías contabilizar acumuladamente si el número de veces que se comete dicho error. - Cuando finalices las M iteraciones obtendrás un índice acumulado que te indicará el número de veces que rechazaste (erróneamente) la Ho cuando realmente la hemos generado correctamente. Divide este indicador entre el número de iteraciones, y obtendrás un valor muy próximo a 0.05. - Ahora prueba hacer exactamente lo mismo, pero aumenta el número de simulaciones a M = 2000. ¿Has notado variación? - Prueba ahora con M = 10, 50, 100, 150, 200, 300, 500. Compara los resultados para todos los M considerados en el ejercicio con el valor teórico (0.05). Haz un gráfico ilustrativo de lo que sucede. ¿Alguna conclusión? 8.- Intervalo de confianza por percentiles para la media aritmética. Sigue los siguientes pasos: - Genera una población N(0,1) de 100 observaciones. - Calcula su media muestral - Genera un bucle de índices para el remuestreo con reemplazamiento. - Remuestrea B=1000 veces con el bucle anterior la población generada al principio, y calcula las 1000 medias muestrales. - Ordenalas de menor a mayor. - Elije el valor de significación del alpha, y selecciona los valores en la posición B*alpha y B*(1-alpha) de las B medias - Calcula el intervalo para la media. ** Utiliza las normas establecidas para la correcta entrega de ejercicios. Para que los ejercicios sean evaluados y formen parte de la calificación final deben entregarse en tiempo y forma.