2 votos

Uso del muestreo de importancia para simular la media de una distribución normal truncada en el intervalo [0,1]

Así que en estos notas dice que el muestreo de importancia es: $$\int_F sf(s)ds = \int_G s \frac{f(s)}{g(s)}g(s)ds$$

Y luego procede a dar el siguiente ejemplo:


enter image description here


En este ejemplo, si sacamos de $f(x)$ ¿estamos extrayendo efectivamente de la distribución normal truncada? Además, ¿alguien puede explicar por qué dice que $g(x)=1$ si dibujamos $x$ de $U[0,1]$ ?

1voto

BruceET Puntos 7117

Este es un ejemplo "de juguete" porque es más fácil y mejor hacer integración numérica, más o menos como la que se utiliza para hacer tablas normales impresas, para obtener la respuesta correcta. Sin embargo, es un buen ejemplo sencillo para familiarizarse con el muestreo de aceptación.

Integración numérica (sin simulación). Así que al principio, vamos a encontrar la respuesta correcta a su problema con integración numérica. En el software estadístico R, esto se puede hacer como sigue:

integrand = function(x){x*dnorm(x)/diff(pnorm(c(0,1)))}
# 'dnorm' is std normal PDF;  'pnorm' is std normal CDF
integrate(integrand, 0, 1)
0.4598622 with absolute error < 5.1e-15

Mi "función" es $xK\varphi(x),$ donde $1/K = \int_0^1 \varphi(x)\,dx$ et $\varphi$ denota la densidad normal estándar. Así, para $X$ distribuido según su distribución normal truncada con la negación $\varphi^*(x),$ para $x \in (0,1)$ et $0$ de lo contrario, tenemos $E(X) = \int_0^1 x\varphi^*(s)\,dx \approx 0.4599.$ [Comprobación de la realidad: Un boceto debería convencerte de que la respuesta debe estar en $(0,1)$ y ligeramente por debajo de $1/2.$ ]

Simulación de fuerza bruta. En R, el método de simulación de "fuerza bruta" que mencionas equivale a lo siguiente:

x = rnorm(10^6)          #'rnorm' samples from std normal
mean(x[x > 0 & x < 1])
## 0.4598828

Este es un método ineficiente porque estamos promediando sólo sobre menos de 341.000 de los un millón de valores muestreados de x . (Esta ineficacia debe es de prever, ya que $1/K = P(0 < Z < 1) = .3413,$ donde $Z \sim \mathsf{Norm}(0,1).$ ) Obtuve una buena respuesta porque utilicé un millón de iteraciones, lo que habría sido una extravagancia impensable hace sólo unos años.

sum(x > 0 & x < 1)
## 340532

Muestreo de importancia. En respuesta a una de sus preguntas: $g(x) = 1,$ para $x \in (0,1)$ porque que es el PDF de $\textsf{Unif}(0,1).$

Ahora, considere la ecuación $$\int_0^1 xf(x)\,dx = \int_0^1 x\frac{f(x)}{g(x)}g(x)\,dx = \int_0^1 xw(x)g(x)\,dx = \int_0^1 xw(x)\,dx,$$ donde $w(x) = f(x)/g(x).$ Aquí $f(x) = \varphi^*(x)$ arriba. El código R para la media deseada a continuación utiliza todo el millón de valores muestreados de $\mathsf{Unif}(0,1).$

K = 1/diff(pnorm(c(0,1)))  
u = runif(10^6)
K*mean(u*dnorm(u))
## 0.4599921

1voto

Andy Puntos 21

Medios de muestreo de importancia: para calcular una media de $h$ contra el pdf $f$ , extraiga muestras del pdf $g$ y la media $\frac{h f}{g}$ . El objetivo es elegir $g$ que es casi directamente proporcional a $hf$ para que $\frac{hf}{g}$ es casi constante (y, por tanto, tiene una varianza pequeña). Por otro lado, si $hf$ tiene un signo y se puede extraer directamente de $g=C hf$ entonces ya sabrías cuál es la integral de $hf$ era: sólo sería $1/C$ . Así que ya estaría hecho. Así que hay que llegar a un compromiso.

En el problema que estás viendo, si estuvieras sacando de $f$ entonces sí que estarías sacando de la distribución normal truncada. Cuando se extrae de $g$ el pdf de $U[0,1]$ , ese pdf es sólo $1$ en $(0,1)$ y cero en el resto, por la definición de la distribución uniforme.

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