Simulieren Sie aus einer Normalverteilung einer abgeschnittenen Mischung

9

Ich möchte eine Probe aus einer Mischungsnormalverteilung so simulieren, dass

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

ist auf das Intervall anstelle von . Dies bedeutet, dass ich eine abgeschnittene Mischung von Normalverteilungen simulieren möchte.R.[0,1]R

Ich weiß, dass es einen Algorithmus gibt, um eine abgeschnittene Normalität (dh aus dieser Frage ) und ein entsprechendes Paket in R zu simulieren , um dies zu tun. Aber wie kann ich eine abgeschnittene Mischung normal simulieren? Ist es dasselbe, wenn ich zwei abgeschnittene Normalen von und ) simuliere , um eine abgeschnittene Mischung normal zu machen?N ( μ 2 , σ 2 2N(μ1,σ12)N(μ2,σ22

Alexy
quelle
3
Wenn es sich um das Einheitsintervall handelt, warum nicht Betas anstelle von Normalen verwenden? Für ist die Verteilung symmetrisch und unimodal und auf das Einheitsintervall begrenzt. α=β>1
Sycorax sagt Reinstate Monica
2
Wenn Sie nicht über Ihre Simulationen müssen sehr schnell sein, können Sie es tun Verwerfungsmethode unter Verwendung von : (1) Probe aus der Mischung von zwei Normalen, (2) wenn nicht in ist , gehen Sie zurück zu Schritt 1, (3) Ausgabe . (aber user777 hat recht, haben Sie einen guten Grund, diese Distribution anstelle einer Mischung aus Betas x[ 0 , 1 ]x[0,1]x
Elvis
1
@ user777 Eine abgeschnittene Gaußsche Mischung hat eine andere Verteilung als eine Beta-Verteilung und kann nicht ausgetauscht werden, nur weil Sie Symmetrie und dieselbe Unterstützung erzwingen können.
Mjnichol

Antworten:

13

Die Simulation von einer abgeschnittenen Normalen ist einfach durchzuführen, wenn Sie Zugriff auf eine ordnungsgemäße normale Quantilfunktion haben. Zum Beispiel kann in R die Simulation von wobei und die unteren und oberen Grenzen bezeichnen, durch Invertieren des cdf zB in 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)) )

Ansonsten habe ich vor zwanzig Jahren einen abgeschnittenen normalen Akzeptanz-Ablehnungs-Algorithmus entwickelt.

Wenn wir das Problem der abgeschnittenen Mischung betrachten, mit der Dichte es ist eine Mischung aus abgeschnittenen Normalverteilungen, aber mit unterschiedlichen Gewichten : Daher aus einer abgeschnittenen Normalen zu simulieren Mischung ist es ausreichend zu nehmen

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
denen
s=p{Φ(σ11{bμ1})Φ(σ11{aμ1})}+(1p){Φ(σ21{bμ2})Φ(σ21{aμ2})}

Xi'an
quelle
Warum können wir nicht einfach die Stichprobe aus der ersten Normalen mit der Wahrscheinlichkeit p und der zweiten Verteilung mit der Wahrscheinlichkeit 1 - p ziehen?
Mjnichol
1
Ah! Ich denke, ich sehe das Problem. Dies liegt daran, dass die gesamte Distribution abgeschnitten wird und nicht jede Distribution separat. Wenn jede Unterverteilung der Mischung einzeln abgeschnitten würde, bevor sie in die Mischung gegeben wird, könnten wir einfach eine Stichprobe aus der Verteilung gemäß den relativen Gewichten jeder Unterverteilung ziehen, oder?
Mjnichol
1
@mjnichol Es ist eine Mischung, aber mit anderen Gewichten als und . p1p
Xi'an
@ Xi'an: Nehmen wir an, wir betrachten ein etwas anderes Setup: Was wäre, wenn wir anstelle der Mischungsverteilung aus gewichteten Gaußschen und dem anschließenden Abschneiden stattdessen zwei bereits abgeschnittene Gaußsche (mit derselben Unterstützung) mischen würden? Wenn die Gaußschen vor dem Mischen abgeschnitten würden, könnten wir aus der Verteilung eine Stichprobe machen, indem wir die erste abgeschnittene Gaußsche mit der Wahrscheinlichkeit p und die zweite mit der Wahrscheinlichkeit 1 - p abtasten.
Mjnichol
2
@mjnichol: In diesem Fall hätten Sie also ja das würde ja funktionieren.
pNab(μ1,σ12)+(1p)Nab(μ2,σ22)
Xi'an