Es beschreibt fast den gleichen Inhalt (und die Erklärung ist einfach!) [[MH-Methode] Ich habe MCMC in Python [Gibbs-Sampler] geschrieben](http://www.fisproject.jp/2015/12/mcmc Ich habe einen Beispielcode für Gibbs-Sampling geschrieben, obwohl es -in-python /) gibt. (Obwohl es voller Neuerfindungen von Rädern ist (Tränen))
Zu Beginn wird Python-Code veröffentlicht. Warum wird er veröffentlicht? Da MCMC sowohl in Kaninchen als auch in Ecken eine komplizierte Geschichte ist, hielt ich es für eine gute Idee zu glauben, dass es für Anfänger einen "Code gibt, der vorerst funktioniert".
Anstatt "Ich habe es geschrieben", war die Menge an Code, die ich geschrieben habe, überraschend kurz, und ich habe die Frustration: "Ich weiß nicht, was es ist, aber was ist es schließlich!" Wenn Sie noch ein wenig hinzufügen können, ...
Ich habe auch versucht, die [MCMC] meines Vorgängers zu organisieren. ](Http://qiita.com/shogiai/items/bab2b915df2b8dd6f6f2).
Es ist eine zweidimensionale Normalverteilung:
##Vorbereitung
import seaborn as sns
import numpy as np
from scipy.stats import norm
##Konstanten, die die Korrelation der zweidimensionalen Normalverteilung bestimmen
b = 0.8
##Bestimmung der Stichprobengröße
N = 10000
##Eine Liste von Dingen, die abgetastet werden können
x = []
y = []
##Der Anfangspunkt ist wie folgt
x_init = 3.0
y_init = 9.0
##Zufällige Erzeugung nach einer zweidimensionalen Normalverteilung.
##Wo sich das Sonstige und das Nachher des for-Satzes bewegen, wie es allgemein genannt wird
for i in range(N):
if i==0:
x.append(x_init) ##Anfangspunkt(x-Koordinate)
y.append(y_init) ##Anfangspunkt(y-Koordinate)
else:
x.append(norm(loc=y[i-1]*b, scale=1.0).rvs(size=1.0)[0]) #Fixieren Sie die y-Koordinate und setzen Sie die x-Koordinate auf N.(Mittelpunkt=Feste y-Koordinate,1)Wählen aus
y.append(norm(loc=x[i]*b, scale=1.0).rvs(size=1.0)[0]) #Fixiere die x-Koordinate und setze die x-Koordinate auf N.(Mittelpunkt=Feste x-Koordinate,1)Wählen aus
%matplotlib inline ##Wenn Sie mit Jupyter Notebook zeichnen möchten, ist dies fantastisch!
sns.jointplot(np.array(x),np.array(y))
Selbst wenn Sie den Anfangswert ändern, wird er schließlich zu einer stetigen Verteilung. Wenn Sie also nur die "stetige Verteilung" möchten, sollten Sie die Abtastung um den Anfangswert etwas später abschneiden. Dieses Mal lautete das Motto "Kaninchen sind geiler, einfacher Code!"
Reference
Recommended Posts