Je veux simuler un échantillon d'une distribution normale de mélange telle que
est limité à l'intervalle au lieu de . Cela signifie que je veux simuler un mélange tronqué de distributions normales.
Je sais qu'il existe des algorithmes pour simuler une normale tronquée (c'est-à-dire à partir de cette question ) et un package correspondant dans R pour ce faire. Mais comment puis-je simuler un mélange tronqué normal? Est-ce la même chose si je simule deux normales tronquées de et ) pour rendre un mélange tronqué normal?
Réponses:
La simulation à partir d'une normale tronquée se fait facilement si vous avez accès à une fonction quantile normale appropriée. Par exemple, dans R, la simulation de où et désignent les limites inférieure et supérieure peut être effectuée en inversant le cdf par exemple, dans RNbune( μ ,σ2) une b Φ (σ- 1{ x - μ } ) - Φ (σ- 1{ a - μ } )Φ (σ- 1{ b - μ } ) - Φ (σ- 1{ a - μ } )
Sinon, j'ai développé il y a vingt ans un algorithme normal d'acceptation-rejet tronqué .
Si nous considérons le problème du mélange tronqué, avec la densité c'est un mélange de distributions normales tronquées mais avec des poids différents : Par conséquent, pour simuler à partir d'une normale tronquée mélange, il suffit de prendreF( x ; θ ) ∝ { p φ ( x ;μ1,σ1) + ( 1 - p ) φ ( x ;μ2,σ2) }je[ a , b ]( x ) 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}) 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
où
s=p{Φ(σ−11{b−μ1})−Φ(σ−11{a−μ1})}+(1−p){Φ(σ−12{b−μ2})−Φ(σ−12{a−μ2})}
la source