Simule a partir de uma distribuição normal de mistura truncada

9

Quero simular uma amostra de uma distribuição normal de mistura, de modo que

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

é restrito ao intervalo vez de . Isso significa que eu quero simular uma mistura truncada de distribuições normais.R[0,1]R

Eu sei que há algum algoritmo para simular um normal truncado (ou seja, desta pergunta ) e o pacote correspondente em R para fazer isso. Mas como posso simular uma mistura truncada normal? É o mesmo se eu simular duas normais truncadas de e ) para normalizar uma mistura truncada?N ( μ 2 , σ 2 2N(μ1,σ12)N(μ2,σ22

Alexy
fonte
3
Se estiver no intervalo de unidades, por que não usar betas em vez de normais? Para , a distribuição é simétrica e unimodal e limitada no intervalo da unidade. α=β>1
Sycorax diz Restabelecer Monica
2
Se você não precisa que suas simulações sejam muito rápidas, você pode fazê-lo usando a amostragem por rejeição: (1) amostra da mistura de duas normais, (2) se não estiver em , volte para passo 1, (3) saída . (mas user777 está certo, você tem uma boa razão para escolher esta distribuição em vez de uma mistura de betas?)x [ 0 , 1 ] xxx[0,1]x
Elvis
1
@ user777 uma mistura Gaussiana truncada tem uma distribuição diferente de uma distribuição Beta e não pode ser trocada apenas porque você pode impor simetria e o mesmo suporte.
Mjnichol 11/05

Respostas:

13

A simulação de um normal truncado é feita facilmente se você tiver acesso a uma função quantil normal adequada. Por exemplo, em R, simulando , onde e significam os limites inferiores e superiores podem ser feitas invertendo a CDF por exemplo, em R

Nab(μ,σ2)
ab
Φ(σ1{xμ})Φ(σ1{aμ})Φ(σ1{bμ})Φ(σ1{aμ})

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

Caso contrário, desenvolvi um algoritmo normal de aceitação / rejeição truncado há vinte anos.

Se considerarmos o problema de mistura truncada, com densidade é uma mistura de distribuições normais truncadas, mas com pesos diferentes : Portanto, para simular a partir de um normal truncado mistura, é suficiente tomar

f(x;θ){pφ(x;μ1,σ1)+(1p)φ(x;μ2,σ2)}I[a,b](x)
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})
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
onde
s=p{Φ(σ11{bμ1})Φ(σ11{aμ1})}+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}

Xi'an
fonte
Por que não podemos simplesmente tirar a amostra da primeira normal com probabilidade p e da segunda distribuição com probabilidade 1 - p?
Mjnichol 11/05
1
Ah! Eu acho que vejo o problema. Isso ocorre porque a distribuição inteira está sendo truncada, e não cada distribuição separadamente. Se cada subdistribuição da mistura fosse truncada individualmente antes de ser adicionada à mistura, poderíamos simplesmente amostrar da distribuição de acordo com os pesos relativos de cada subdistribuição, certo?
Mjnichol 11/05
1
@mjnichol É uma mistura, mas com diferentes pesos que o e . p1p
Xian
@ Xi'an: Suponha que consideremos uma configuração ligeiramente diferente: e se, em vez de construir a distribuição da mistura a partir de Gaussianos ponderados e depois truncar, em vez disso, misturássemos dois Gaussianos já truncados (com o mesmo suporte). Se os gaussianos fossem truncados antes da mistura, poderíamos amostrar a partir da distribuição, amostrando o primeiro gaussiano truncado com probabilidade p e o segundo com probabilidade 1 - p?
Mjnichol 12/05
2
@mjnichol: nesse caso, você teria então sim, de fato isso funcionaria.
pNab(μ1,σ12)+(1p)Nab(μ2,σ22)
Xian