Quiero simular una muestra de una mezcla de distribución normal de manera que
está restringido al intervalo en vez de . 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 de y ) para normalizar una mezcla truncada?
Respuestas:
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, simulandoNba(μ,σ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
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 densidadf(x;θ)∝{pφ(x;μ1,σ1)+(1−p)φ(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})+(1−p){Φ(σ−12{b−μ2})−Φ(σ−12{a−μ2})}σ−12ϕ(σ−12{x−μ2})Φ(σ−12{b−μ2})−Φ(σ−11{a−μ2})
Por lo tanto, para simular a partir de una mezcla normal truncada, es suficiente tomar
x=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪x1∼Nba(μ1,σ21)x2∼Nba(μ2,σ22)with probability p{Φ(σ−11{b−μ1})−Φ(σ−11{a−μ1})}/swith probability (1−p){Φ(σ−12{b−μ2})−Φ(σ−12{a−μ2})}/s
dónde
s=p{Φ(σ−11{b−μ1})−Φ(σ−11{a−μ1})}+(1−p){Φ(σ−12{b−μ2})−Φ(σ−12{a−μ2})}
fuente