Tengo un vector X
de N=900
observaciones que se modelan mejor con un estimador de densidad de kernel de ancho de banda global (los modelos paramétricos, incluidos los modelos de mezcla dinámica, no resultaron ser adecuados):
Ahora, quiero simular desde este KDE. Sé que esto se puede lograr mediante bootstrapping.
En R, todo se reduce a esta simple línea de código (que es casi un pseudocódigo): x.sim = mean(X) + { sample(X, replace = TRUE) - mean(X) + bw * rnorm(N) } / sqrt{ 1 + bw^2 * varkern/var(X) }
donde se implementa el bootstrap suavizado con corrección de varianza y varkern
es la varianza de la función Kernel seleccionada (por ejemplo, 1 para un Kernel gaussiano ).
Lo que obtenemos con 500 repeticiones es lo siguiente:
Funciona, pero me cuesta entender cómo mezclar observaciones (con algo de ruido adicional) es lo mismo que simular a partir de una distribución de probabilidad. (la distribución es aquí el KDE), como con el estándar Monte Carlo. Además, ¿el bootstrapping es la única forma de simular desde un KDE?
EDITAR: consulte mi respuesta a continuación para obtener más información sobre el arranque suavizado con corrección de varianza.
Respuestas:
Aquí hay un algoritmo para tomar muestras de una mezcla arbitrariaf(x)=1N∑Ni=1fi(x) :
Debe quedar claro que esto produce una muestra exacta.
Una estimación de la densidad del grano gaussiano es una mezcla1N∑Ni=1N(x;xi,h2) . Entonces puedes tomar una muestra de tamañoN eligiendo un montón de xi sy agregar ruido normal con media y varianza cero h2 lo.
Su fragmento de código está seleccionando un montón dexi s, pero luego está haciendo algo ligeramente diferente:
Podemos ver que el valor esperado de una muestra de acuerdo con este procedimiento es
Sin embargo, no creo que la distribución de muestreo sea la misma.
fuente
Para eliminar cualquier confusión sobre si es posible o no extraer valores del KDE utilizando un enfoque de arranque, es posible . El bootstrap no se limita a estimar los intervalos de variabilidad.
A continuación se muestra un bootstrap suavizado con algoritmo de corrección de varianza que genera valores sintéticos.Y′is de un KDE K de ventana h . Proviene de este libro de Silverman, consulte la página 25 de este documento , sección 6.4.1 "Simulación de estimaciones de densidad". Como se señala en el libro, este algoritmo permite encontrar realizaciones independientes de un KDEy^ , sin necesidad de saber y^ explícitamente:
Para generar un valor sintéticoY (de un conjunto de entrenamiento {X1,...Xn} ):
DóndeX¯ y σX2 son la media y la varianza de la muestra, y σK2 es la varianza de K (es decir, 1 para un gaussiano K ) Como explica Dougal, el valor esperado de las realizaciones esX¯ . Gracias a la corrección de varianza, la varianza esσX2 (Por otro lado, el bootstrap suavizado sin corrección de varianza, donde el paso 3 es simplemente Y=Xi+h.ϵ , infla la varianza).
El fragmento de código R en mi pregunta anterior sigue estrictamente este algoritmo.
Las ventajas del bootstrap suavizado sobre el bootstrap son:
fuente