Il décrit presque le même contenu (et l'explication est simple!) [[Méthode MH] J'ai écrit MCMC en Python [Gibbs-Sampler]](http://www.fisproject.jp/2015/12/mcmc J'ai écrit un exemple de code pour l'échantillonnage Gibbs même s'il y a -in-python /). (Bien qu'il soit plein de réinvention des roues (déchirures))
Il y a du code python publié au début, pourquoi est-il publié? Puisque MCMC est une histoire compliquée à la fois dans les lapins et dans les coins, j'ai pensé que ce serait une bonne idée de penser qu'il existe un «code qui fonctionne pour le moment» pour les débutants.
Donc, plutôt que "je l'ai écrit", la quantité de code que j'ai écrite était étonnamment courte, donc j'ai la frustration de "je ne sais pas ce que c'est, mais qu'est-ce que c'est après tout!" Si vous pouvez ajouter ne serait-ce qu'un peu, ...
C'est également une disposition du prédécesseur MCMC. .
C'est une distribution normale bidimensionnelle:
python
ci-dessous. $ Z $ est une constante de normalisation.
##Préparation
import seaborn as sns
import numpy as np
from scipy.stats import norm
##Constantes qui déterminent la corrélation de la distribution normale bidimensionnelle
b = 0.8
##Déterminer la taille de l'échantillon
N = 10000
##Une liste de choses qui peuvent être échantillonnées
x = []
y = []
##Le point initial est comme ça
x_init = 3.0
y_init = 9.0
##Génération aléatoire selon une distribution normale bidimensionnelle.
##Où se déplace l'autre après la phrase for, comme on l'appelle communément "Kakukaku"
for i in range(N):
if i==0:
x.append(x_init) ##Point initial(coordonnée x)
y.append(y_init) ##Point initial(coordonnée y)
else:
x.append(norm(loc=y[i-1]*b, scale=1.0).rvs(size=1.0)[0]) #Fixez la coordonnée y et définissez la coordonnée x sur N(Point central=Coordonnée y fixe,1)Choisissez parmi
y.append(norm(loc=x[i]*b, scale=1.0).rvs(size=1.0)[0]) #Fixer la coordonnée x et définir la coordonnée x sur N(Point central=Coordonnée x fixe,1)Choisissez parmi
%matplotlib inline ##Si vous voulez dessiner avec Jupyter Notebook, c'est génial!
sns.jointplot(np.array(x),np.array(y))
Même si vous changez la valeur initiale, elle finira par devenir une distribution stable, donc si vous ne voulez que la «distribution régulière», c'est aussi un point à envisager de couper l'échantillonnage autour de la valeur initiale un peu plus tard. Cette fois, la devise était "Les lapins sont excités, code simple!"
Reference
Recommended Posts