Die nicht kontextbezogene Kurzversion
Sei eine Zufallsvariable mit CDF
Angenommen, ich wollte Zeichnungen von mit der inversen CDF-Methode simulieren . Ist das möglich? Diese Funktion hat nicht genau eine Umkehrung. Andererseits gibt es eine inverse Transformationsabtastung für die Mischungsverteilung von zwei Normalverteilungen, was darauf hindeutet, dass es einen bekannten Weg gibt, hier eine inverse Transformationsabtastung anzuwenden.
Ich kenne die zweistufige Methode, weiß aber nicht, wie ich sie auf meine Situation anwenden soll (siehe unten).
Die lange Version mit Hintergrund
Ich habe das folgende Modell für eine vektorwertige Antwort angepasst, , unter Verwendung von MCMC (speziell Stan):
wobei Beobachtungen indiziert , eine Korrelationsmatrix ist und ein Vektor von Prädiktoren / Regressoren / Merkmalen ist.N R x
Das heißt, mein Modell ist ein Regressionsmodell, bei dem angenommen wird, dass die bedingte Verteilung der Antwort eine Gaußsche Kopula mit null aufgeblasenen logarithmischen Normalrändern ist. Ich habe bereits über dieses Modell geschrieben. es stellt sich heraus, dass Song, Li und Yuan (2009, gated ) es entwickelt haben und sie nennen es einen Vektor GLM oder VGLM. Das Folgende ist ihre Spezifikation, die so wörtlich wie möglich ist: MeinF K G m z q R Γ
Der null-aufgeblasene Teil folgt in etwa der Spezifikation von Liu und Chan (2010, ungated ).
Jetzt möchte ich Daten aus den geschätzten Parametern simulieren, bin aber etwas verwirrt, wie ich vorgehen soll. Zuerst dachte ich, ich könnte einfach direkt simulieren (im R-Code):
for (i in 1:N) {
for (k in 1:K) {
Y_hat <- rbinom(1, 1, 1 - theta[i, k])
if (Y_hat == 1)
Y_hat <- rlnorm(1, mu[i, k], sigma[k])
}
}
was überhaupt nicht verwendet . Ich möchte versuchen, die von mir geschätzte Korrelationsmatrix tatsächlich zu verwenden.
Meine nächste Idee war, Zeichnungen von zu nehmen und sie dann wieder in umzuwandeln . Dies scheint auch mit den Antworten in Generieren von Stichproben aus Copula in R und bivariaten Stichproben für die Verteilung übereinzustimmen, die im Copula-Theorem von Sklar ausgedrückt sind. . Aber was zum Teufel ist mein hier? Inverse Transformations-Sampling für die Mischungsverteilung von zwei Normalverteilungen klingt so, als wäre dies möglich, aber ich habe keine Ahnung, wie es geht.y F - 1
quelle
Antworten:
Die Antwort auf die Langfassung mit Hintergrund:
Diese Antwort auf die lange Version spricht etwas ein anderes Problem an, und da wir anscheinend Schwierigkeiten haben, das Modell und das Problem zu formulieren, entscheide ich mich, es hier hoffentlich richtig zu formulieren.
Für1 ≤ i ≤ I. , das Ziel zu simulieren Vektoren yich= ( yich1, … , Y.ichK.) , so daß, bedingt auf einem covariate xich ,
yichk= { 0Log( σkzichk+ βkxich) mit Wahrscheinlichkeit logit- 1( αkxich) mit Wahrscheinlichkeit 1 - logit- 1( αkxich)
mitzich= ( zich1, … , Z.ichK.) ∼ N.K.( 0 , R ) . Wenn man also Daten aus diesem Modell simulieren möchte, kann man wie folgt vorgehen:
Für1 ≤ i ≤ I. ,
Wenn man bei der Erzeugung von posterior interessierten wird( α , β, μ , σ, R ) angesichts der yichk , dies ist ein schwierigeres Problem, wenn auch möglich , durch Gibbs-Sampling oder ABC.
quelle
Die Antwort auf die nicht kontextbezogene Kurzversion:
Das "Invertieren" eines PDFs, das im mathematischen Sinne nicht invertierbar ist (wie Ihre gemischte Verteilung), ist möglich, wie in den meisten Monte-Carlo-Lehrbüchern beschrieben. (Wie bei uns , siehe Lemma 2.4.) Wenn Sie die verallgemeinerte Inverse definieren dann ist X ∼ F äquivalent zu X = F - ( U ), wenn U ∼ U ( 0 , 1 )
Dies ist fast das, was Ihr R-Code ist
Y_hat <- rbinom(1, 1, theta[i, k]) if (Y_hat == 1) Y_hat <- rlnorm(1, mu[i, k], sigma[k])
quelle