Ich las diese Frage und dachte darüber nach, die erforderliche Menge zu simulieren. Das Problem ist wie folgt: Wenn und Standardnormal sind, was ist ? Also möchte ich simulieren . (für einen gewählten Wert von A + B )
Ich habe den folgenden Code versucht, um dies zu erreichen:
n <- 1000000
x <- 1 # the sum of A and B
A <- rnorm(n)
B <- rnorm(n)
sum_AB = A+B
estimate <- 1/sum(sum_AB==x) * sum( (A[sum_AB==x])^2 )
Das Problem ist, dass es fast immer keinen Wert gibt, in sum_AB
dem Übereinstimmungen x
(über Simulationen hinweg) vorliegen. Wenn ich ein Element aus auswähle sum_AB
, ist es normalerweise die einzige Instanz seines Werts im Vektor.
Wie kann man dieses Problem im Allgemeinen angehen und eine genaue Simulation durchführen, um eine Erwartung der gegebenen Form zu finden? ( und nicht unbedingt normal oder aus derselben Verteilung stammen.)
r
simulation
monte-carlo
conditional-expectation
Comp_Warrior
quelle
quelle
Antworten:
Mein Kommentar im Thread, auf den verwiesen wird, schlägt einen effizienten Ansatz vor: Da und gemeinsam Normal mit einer Kovarianz von Null sind, sind sie unabhängig, von wo aus die Simulation nur (mit Mittelwert und Varianz ) und erzeugen muss Konstrukt . In diesem Beispiel wird die Verteilung von anhand des Histogramms von simulierten Werten untersucht.Y = A - B Y 0 2 A = ( X + Y ) / 2 A 2 | ( A + B = 3 ) 10 5X.= A + B. Y.= A - B. Y. 0 2 A = ( X.+ Y.) / 2 EIN2| (A+B=3) 105
Die Erwartung kann geschätzt werden als
Die Antwort sollte nahe .11 / 4 = 2,75
quelle
Eine generische Möglichkeit, dieses Problem zu lösen, besteht darin, die Änderung der Variablen von nach zu berücksichtigen . Gleich eins (1), die Dichte des Jacobi dieser Transformation ist Daher ist die Dichte von der Bedingung ist wobei der Proportionalitätsterm die Umkehrung der Randdichte von , . Da , eine deterministische Transformation, ist dies auch die Gelenkdichte von bei( A , A + B = S ) ( A , S ) f A , S ( a , s ) = f A ( a ) f B ( s - a ) A S = s f A | S ( a | s ) ∝ f A ( a ) f( A , B ) ( A , A + B = S.) ( A , S.)
quelle
Sie können dieses Problem mithilfe von Bootstrap-Beispielen lösen. Zum Beispiel,
Wenn ich diesen Code zum Beispiel ausführe, erhalte ich Folgendes
Wenn also dann ist .A + B = 0,9890429 E.( A.2| A+B=0,9890429)=0,7336328
Um zu bestätigen, dass dies die Antwort sein sollte, lassen Sie uns den Code von whuber in seiner Lösung ausführen. Das Ausführen seines Codes
x<-0.9890429
führt also zu folgenden Ergebnissen:Die beiden Lösungen liegen also sehr nahe beieinander und stimmen überein. Meine Herangehensweise an das Problem sollte es Ihnen jedoch tatsächlich ermöglichen, eine beliebige Verteilung einzugeben, anstatt sich auf die Tatsache zu verlassen, dass die Daten aus Normalverteilungen stammen.
Eine zweite Brute-Force-Lösung, die auf der Tatsache beruht, dass Sie bei einer relativ großen Dichte problemlos eine Brute-Force-Berechnung durchführen können, ist die folgende
Wenn wir diesen Code ausführen, erhalten wir Folgendes
Das Ausführen des Codes für führt also zu was mit der wahren Lösung übereinstimmt.A + B = 3 E.( A.2| A+B=3)=2,757067
quelle
es scheint mir, dass die Frage folgende wird:
Beginnen wir mit der Überprüfung der Wichtigkeitsstichprobe :
So ist nun die Prozedur:
quelle