12 votos

Bootstrap, Monte Carlo

Me han puesto la siguiente pregunta como parte de los deberes:

Diseñe e implemente un estudio de simulación para examinar el rendimiento del bootstrap para obtener intervalos de confianza del 95% sobre la media de una muestra univariante de datos. Su implementación puede ser en R o SAS.

Los aspectos del rendimiento que puede interesarle analizar son la cobertura del intervalo de confianza (es decir, qué proporción de veces el intervalo de confianza contiene la media real) y la variación de Montecarlo (es decir, cuánto varían los límites de confianza superior e inferior entre simulaciones)'.

¿Alguien sabe cómo proceder con el aspecto de la variación de Montecarlo? Parece que ni siquiera puedo elaborar un algoritmo o algo así. ¿Tiene que ver con la integración de Monte Carlo? Gracias.

5voto

Noam Gal Puntos 155

El bootstrap es una técnica de Monte Carlo, ya que implica algún tipo de muestreo aleatorio. Si ejecutas el bootstrap dos veces con el mismo conjunto de datos, obtendrás respuestas diferentes. Cuantas más muestras utilices en tu bootstrap, menos variación obtendrás.

La cobertura se refiere a la variación de los resultados en diferentes conjuntos de datos de la misma distribución hipotética de muestreo.

4voto

jldugger Puntos 7490

Esta confusión entre los procedimientos bootstrap y los procedimientos Monte Carlo se repite una y otra vez, por lo que quizás éste sea un lugar tan bueno como cualquier otro para abordarla. (Los ejemplos de R código también puede ayudar con los deberes).

Considere lo siguiente implementación del bootstrap en R :

boot <- function(x, t) { # Exact bootstrap of procedure t on data x
    n <- length(x)       # Must lie between 2 and 7 inclusive.
    if (n > 7) {
        stop("Sample size exceeds 7; use an approximate method instead.")
    }
    p <- c(n, 1:(n-1))
    a <- rep(x, n^(n-1))
    dim(a) <- rep(n, n)
    y <- as.vector(a)
    while (n > 1) {
        n <- n-1
        a <- aperm(a, p)
        y <- cbind(as.vector(a), y)
    }
    apply(y, 1, t)
}

Un vistazo rápido confirmará que se trata de un determinista cálculo: no se generan ni utilizan valores aleatorios. (Dejaré los detalles de su funcionamiento interno para que los lectores interesados lo averigüen por sí mismos).

Los argumentos para boot son un lote de datos numéricos en la matriz x y una referencia t a una función (que puede aplicarse a matrices exactamente igual que x ) para devolver un único valor numérico; en otras palabras, t es un estadística . Genera todas las muestras posibles con reemplazo a partir de x y aplica t a cada una de ellas, produciendo así un número para cada una de esas muestras: eso es el bootstrap en pocas palabras. El valor devuelto es una matriz que representa el distribución bootstrap exacta de t para la muestra x .

Un pequeño ejemplo vamos a hacer un bootstrap de la media de una muestra x = c(1,3) :

> boot(c(1,3), mean)
> [1] 1 2 2 3

Efectivamente, hay cuatro muestras posibles de tamaño $2$ con sustitución de $(1,3)$ a saber, $(1,1)$ , $(1,3)$ , $(3,1)$ y $(3,3)$ . boot los genera todos (en el orden que se acaba de enumerar) y aplica t a cada uno de ellos. En este caso t calcula la media y resultan ser $1$ , $2$ , $2$ y $3$ respectivamente, como se muestra en la salida.

A partir de aquí, depende de cómo quieras utilizar el bootstrap. En completo La información sobre el bootstrap está contenida en esta matriz de salida, por lo que suele ser una buena idea mostrarla. He aquí un ejemplo en el que la desviación estándar se obtiene por bootstrap a partir de la muestra $(1,3,3,4,7)$ :

hist(boot(c(1,3,3,4,7), sd))

Histogram of the SD

Ahora estamos preparados para hablar de Simulación Monte Carlo. Supongamos, por ejemplo, que vamos a hacer un bootstrap de un límite de confianza superior del 95% de la DE a partir de una muestra de $5$ utilizando el percentil 95 superior de su distribución bootstrap. ¿Qué propiedades tendría este procedimiento? Una forma de averiguarlo es supongamos que la muestra se obtuvieron aleatoriamente a partir de, por ejemplo, una distribución uniforme. (La aplicación indicará a menudo cuál puede ser una hipótesis de distribución razonable; aquí, he elegido arbitrariamente una que es sencilla para el cálculo pero no fácil de tratar analíticamente). Podemos simular lo que ocurre tomando una muestra de este tipo y calculando el UCL:

> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
     95% 
3.835870 

El resultado para este muestra aleatoria particular es 3,83587. Esto es definitivo: si se llamara boot de nuevo con el mismo conjunto de datos, la respuesta sería exactamente la misma. Pero, ¿cómo podría cambiar la respuesta con diferentes muestras aleatorias? Averígualo repitiendo este proceso unas cuantas veces y dibujando un histograma de los resultados:

> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)

Histogram of simulations

Si hiciéramos otra serie de simulaciones, las extracciones aleatorias serían diferentes, creando un histograma (ligeramente) distinto, pero no muy diferente de éste. Podemos usarlo con cierta confianza para entender cómo funciona el bootstrap UCL de la DE. Como referencia, observe que la desviación estándar de una distribución uniforme (que abarca el intervalo de $0$ a $10$ como se especifica aquí) es igual a $10/\sqrt{12} \approx 2.887$ . Como cabría esperar de cualquier UCL que se precie, la mayoría (tres cuartas partes, o 0,75) de los valores del histograma lo superan:

> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75

Pero eso no es ni de lejos el 95% nominal que especificamos (y que esperábamos). Este es uno de los valores de la simulación: compara nuestras esperanzas con lo que realmente ocurre. (¿A qué se debe esta discrepancia? Creo que se debe a que el bootstrapping de una DE no funciona bien con muestras realmente pequeñas).

Consulte

  • Los estadísticos bootstrap son conceptualmente iguales a cualquier otro estadístico, como la media o la desviación estándar; sólo que tienden a tardar mucho en calcularse. (Véase el mensaje de advertencia en la página boot código!)

  • La simulación Monte-Carlo puede ser útil para estudiar cómo varía una estadística bootstrap debido a la aleatoriedad en la obtención de muestras. La variación observada en dicha simulación se debe a la variación en las muestras, no variación en el bootstrap.

  • (No se ilustra aquí) Dado que las estadísticas bootstrap pueden requerir muchos cálculos (al parecer, hasta $n^n$ cálculos para muestras de tamaño $n$ ), es conveniente aproximado la distribución bootstrap. Esto se suele hacer creando un programa "caja negra" para obtener un valor al azar de la distribución bootstrap verdadera y llamando a ese programa repetidamente. El resultado colectivo se aproxima a la distribución exacta. La aproximación puede variar debido a la aleatoriedad de la caja negra, pero esa variación es un artefacto del procedimiento de aproximación. No es (conceptualmente) inherente al propio procedimiento bootstrap.

4voto

StasK Puntos 19497

Mi comprensión de esta tarea es que se solicita a hacer una simulación de Monte Carlo para una determinada técnica estadística. Es decir, simular un montón de azar conjuntos de datos, aplicar esta técnica a estos datos, y almacenar los números de resumir más tarde en una forma conveniente (es decir, simulado probabilidades, etc.)

Ahora, la técnica en cuestión es el bootstrap, que consiste en la simulación de Monte Carlo dentro de ella (a menos que, como whuber demostrado, se le pedirá que realice la exacta bootstrap, que es muy poco probable). Así como los resultados de sus simulaciones, puede ser el almacenamiento de la media de la muestra, la desviación estándar de la muestra, y los límites del intervalo de confianza para la media obtenida por el bootstrap.

Creo que para hacer este estudio muy interesante, vale la pena hacer un pequeño tamaño de la muestra ($n=10$) a partir de una distribución sesgada (exponencial). De esa manera, la norma CLT-basado en el intervalo de confianza es probable que tenga un desempeño inadecuado: decir, el 90% de intervalo de confianza de que iba a perder el 5% al final, vas a ver algo como el 10% y el 2%. El bootstrap CI puede mostrar un mejor rendimiento (es decir, 6% y 4%).

1voto

Sean Hanley Puntos 2428

No estoy seguro de lo que se entiende exactamente por"Monte Carlo variación" per se, tampoco. Sin duda debería ser posible ver es cuánta variación hay entre iteraciones en cosas como el valor del límite superior (o inferior), por ejemplo (sugerencia). ¿Tal vez sólo quieren que lo hiciera para el Monte Carlo y no las manos a la obra? Eso no es un requisito que tenía para un ejercicio, sin embargo. Puede ser mejor hacer sólo lo que significa esa frase.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X