Esta confusión entre los procedimientos de arranque y los procedimientos de Monte Carlo sigue siendo recurrente, por lo que quizás este sea un lugar tan bueno como cualquier otro para abordarlo. (Los ejemplos de R
código también pueden ayudar con la tarea).
Considere esta 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 cálculo determinista : no se generan ni utilizan valores aleatorios. (Dejaré los detalles de su funcionamiento interno para que los lectores interesados lo descubran 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 se puede aplicar a las matrices exactamente como x
) para devolver un único valor numérico; en otras palabras, t
es una estadística . Genera todas las muestras posibles con reemplazo x
y se aplica t
a cada una de ellas, produciendo así un número para cada muestra: ese es el resumen en pocas palabras. El valor de retorno es una matriz que representa la distribución exacta de bootstrap de t
la muestra x
.
Como pequeño ejemplo , arranquemos la media de una muestra x
= c(1,3)
:
> boot(c(1,3), mean)
> [1] 1 2 2 3
2( 1 , 3 )( 1 , 1 )( 1 , 3 )( 3 , 1 )( 3 , 3 )boot
t
t
1223, respectivamente, como se muestra en la salida.
( 1 , 3 , 3 , 4 , 7 )
hist(boot(c(1,3,3,4,7), sd))
Ahora estamos preparados para hablar sobre la simulación de Monte Carlo.5 5
> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
95%
3.835870
El resultado para esta muestra aleatoria particular es 3.83587. Esto es definitivo: si llamara boot
nuevamente 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? Descúbrelo repitiendo este proceso varias 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)
0 01010 / 12--√≈ 2.887
> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75
¡Pero eso no se acerca al 95% nominal que especificamos (y esperábamos)! Este es un valor de la simulación: compara nuestras esperanzas con lo que realmente está sucediendo. (¿Por qué la discrepancia? Creo que es porque el arranque de una SD no funciona bien con muestras realmente pequeñas).
revisión
Las estadísticas de Bootstrap son conceptualmente iguales a cualquier otra estadística, como una desviación estándar o media; solo tienden a tomar mucho tiempo para calcular. (¡Vea el mensaje de advertencia en el boot
código!)
La simulación de Monte-Carlo puede ser útil para estudiar cómo varía la estadística de 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 a la variación en el bootstrap.
nortenortenorte
El bootstrap es una técnica de Monte Carlo, ya que implica algún tipo de muestreo aleatorio. Si ejecuta el programa de arranque dos veces en el mismo conjunto de datos, obtendrá diferentes respuestas. Cuantas más muestras uses 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 de muestreo hipotética.
fuente
Tampoco estoy seguro de qué se entiende exactamente por " variación de Monte Carlo " per se. Ciertamente, debería ser posible observar cuánta variación hay entre las iteraciones en cosas como el valor del límite superior (o inferior), por ejemplo (pista). ¿Quizás solo quieren que hagas esto por el Monte Carlo, y no por el bootstrap? Sin embargo, ese no es un requisito que tendría para un ejercicio. Puede ser mejor preguntar qué significa esa frase.
fuente
Entiendo que esta tarea es que te está pidiendo que hagas una simulación de Monte Carlo para una determinada técnica estadística. Es decir, simula un conjunto de conjuntos de datos aleatorios, aplica esta técnica a estos conjuntos de datos y almacena los números para resumirlos más tarde de manera conveniente (medias, probabilidades simuladas, etc.)
Ahora, la técnica en cuestión es la rutina de arranque, que implica la simulación de Monte Carlo dentro de ella (a menos que, como lo demostró Whuber, se le pida que realice la rutina de arranque exacta, lo cual es muy poco probable). Entonces, como resultados de sus simulaciones, puede estar almacenando 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.
fuente