Simular a partir de una mezcla truncada distribución normal

9

Quiero simular una muestra de una mezcla de distribución normal de manera que

p×N(μ1,σ12)+(1p)×N(μ2,σ22)

está restringido al intervalo [0,1] en vez de R. Esto significa que quiero simular una mezcla truncada de distribuciones normales.

Sé que hay algunos algoritmos para simular una normal truncada (es decir, de esta pregunta ) y el paquete correspondiente en R para hacer esto. Pero, ¿cómo puedo simular una mezcla truncada normal? ¿Es lo mismo si simulo dos normales truncadas deN(μ1,σ12) y N(μ2,σ22) para normalizar una mezcla truncada?

Alexy
fuente
3
Si está en el intervalo de la unidad, ¿por qué no usar betas en lugar de normales? porα=β>1, la distribución es simétrica y unimodal y está limitada en el intervalo unitario.
Sycorax dice Reinstate Monica
2
Si no necesita que sus simulaciones sean muy rápidas, puede hacerlo utilizando el muestreo de rechazo: (1) muestraxde la mezcla de dos normales, (2) six no está dentro [0,1], regrese al paso 1, (3) salidax. (pero user777 tiene razón, ¿tiene una buena razón para elegir esta distribución en lugar de una mezcla de betas?)
Elvis
1
@ user777 una mezcla gaussiana truncada tiene una distribución diferente de una distribución Beta y no se puede cambiar solo porque puede imponer la simetría y el mismo soporte.
mjnichol

Respuestas:

13

La simulación de una normal truncada se realiza fácilmente si tiene acceso a una función cuantil normal adecuada. Por ejemplo, en R, simulando

Nab(μ,σ2)
dónde a y b denotar los límites inferior y superior se puede hacer invirtiendo el cdf
Φ(σ1{xμ})Φ(σ1{aμ})Φ(σ1{bμ})Φ(σ1{aμ})
por ejemplo, en R

x = mu + sigma * qnorm( pnorm(a,mu,sigma) + 
     runif(1)*(pnorm(b,mu,sigma) - pnorm(a,mu,sigma)) )

De lo contrario, desarrollé un algoritmo de aceptación-rechazo normal truncado hace veinte años.

Si consideramos el problema de la mezcla truncada, con densidad

f(x;θ){pφ(x;μ1,σ1)+(1p)φ(x;μ2,σ2)}I[a,b](x)
Es una mezcla de distribuciones normales truncadas pero con diferentes pesos :
f(x;θ)p{Φ(σ11{bμ1})Φ(σ11{aμ1})}σ11ϕ(σ11{xμ1})Φ(σ11{bμ1})Φ(σ11{aμ1})+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}σ21ϕ(σ21{xμ2})Φ(σ21{bμ2})Φ(σ11{aμ2})
Por lo tanto, para simular a partir de una mezcla normal truncada, es suficiente tomar
x={x1Nab(μ1,σ12)with probability p{Φ(σ11{bμ1})Φ(σ11{aμ1})}/sx2Nab(μ2,σ22)with probability (1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}/s
dónde
s=p{Φ(σ11{bμ1})Φ(σ11{aμ1})}+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}

Xi'an
fuente
¿Por qué no podemos simplemente extraer la muestra de la primera normal con probabilidad p y la segunda distribución con probabilidad 1 - p?
mjnichol
1
Ah! Creo que veo el problema. Es porque toda la distribución se está truncando, no cada distribución por separado. Si cada subdistribución de la mezcla se truncara individualmente antes de agregarse a la mezcla, entonces podríamos simplemente tomar muestras de la distribución de acuerdo con los pesos relativos de cada subdistribución, ¿verdad?
mjnichol
1
@mjnichol Es una mezcla pero con pesos diferentes a p y 1p.
Xi'an
@ Xi'an: Supongamos que consideramos una configuración ligeramente diferente: ¿qué pasaría si en lugar de construir la distribución de la mezcla a partir de gaussianos ponderados y luego truncar, en su lugar, mezclamos dos gaussianos ya truncados (con el mismo soporte). Si los gaussianos se truncaran antes de mezclar, ¿podríamos tomar muestras de la distribución mediante el muestreo del primer gaussiano truncado con probabilidad p y el segundo con probabilidad 1 - p?
mjnichol
2
@mjnichol: en ese caso, tendrías
pNab(μ1,σ12)+(1p)Nab(μ2,σ22)
así que sí, de hecho, esto funcionaría.
Xi'an