Simular a partir de la estimación de densidad del núcleo (PDF empírico)

8

Tengo un vector Xde N=900observaciones 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):

ingrese la descripción de la imagen aquí

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 varkernes la varianza de la función Kernel seleccionada (por ejemplo, 1 para un Kernel gaussiano ).

Lo que obtenemos con 500 repeticiones es lo siguiente:

ingrese la descripción de la imagen aquí

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.

Antoine
fuente
1
El experimento bootstrap le da una indicación de la variabilidad de la estimación de densidad del núcleo. Esto no tiene nada que ver con simular desde el kernel, como explica mejor Dougal a continuación.
Xi'an
Sí, eso es bastante variabilidad. ¿Crees que un KDE sería un mejor enfoque que un modelo de mezcla dinámica aquí?
Antoine
Entonces, entiendo que el arranque suave como se muestra arriba no es equivalente a simular desde el Kernel. Sin embargo, cumple el mismo objetivo: simular desde el PDF empírico, ¿verdad? Trataré de publicar los resultados de la estrategia propuesta por Douglas a continuación (simulando directamente desde el KDE) para comparar cuando tenga tiempo.
Antoine
La simulación desde el estimador del núcleo no conduce a simulaciones del cdf empírico y no existe una definición clara de un pdf empírico, entre histogramas y estimaciones del núcleo, todo lo cual requiere la calibración de un ancho de banda.
Xi'an
No estoy de acuerdo con tu primer comentario, mira mi respuesta a continuación.
Antoine

Respuestas:

10

Aquí hay un algoritmo para tomar muestras de una mezcla arbitraria f(x)=1Ni=1Nfi(x):

  • Elige un componente de mezcla i uniformemente al azar.
  • Muestra de fi.

Debe quedar claro que esto produce una muestra exacta.

Una estimación de la densidad del grano gaussiano es una mezcla 1Ni=1NN(x;xi,h2). Entonces puedes tomar una muestra de tamañoN eligiendo un montón de xisy agregar ruido normal con media y varianza cero h2 lo.

Su fragmento de código está seleccionando un montón de xis, pero luego está haciendo algo ligeramente diferente:

  • cambiando xi a μ^+xiμ^1+h2/σ^2
  • añadiendo ruido normal medio cero con varianza h21+h2/σ^2=11h2+1σ^2, la media armónica de h2 y σ2.

Podemos ver que el valor esperado de una muestra de acuerdo con este procedimiento es

1Ni=1Nxi1+h2/σ^2+μ^11+h2/σ^2μ^=μ^
ya que μ^=1Ni=1Nxi.

Sin embargo, no creo que la distribución de muestreo sea la misma.

Dougal
fuente
Gracias por esta buena respuesta. Actualmente estoy explorando este enfoque. ¿Le gustaría ver este otro hilo muy reciente (y algo relacionado) por favor? Gracias por adelantado.
Antoine
3

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.Yis 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ético Y (de un conjunto de entrenamiento {X1,...Xn}):

  • Paso 1: elige i uniformemente con reemplazo de {1,...,n},
  • Paso 2: muestra ϵ desde K (es decir, de la distribución Normal si K es gaussiano)
  • Paso 3: establecer Y=X¯+(XiX¯+h.ϵ)/1+h2σK2/σX2.

Dónde X¯ 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:

  • Las "características espurias" en los datos no se reproducen, ya que se pueden generar valores diferentes de los de la muestra,
  • Se pueden generar valores más allá del máximo / mínimo de las observaciones.
Antoine
fuente