私はemceeでMCMCサンプリングを紹介しようとしています。 githubのサンプルコードを使って、Maxwell Boltzmannのディストリビューションからサンプルを取ってみたい、https://github.com/dfm/emcee/blob/master/examples/quickstart.py。MCMC Pythonのemceeを使ったMaxwellian Curveのサンプリング
例コードが本当に優れているが、私はマクスウェルにガウスの分布を変更すると、私はエラーを受け取り、TypeError例外:lnprob()は、正確に2つの引数(3所与)
を要するが、それは適切なパラメータが与えられていない場所では呼び出されませんか? Maxwellian Curveを定義し、このサンプルコードに適合させる方法についていくつかの指針が必要です。
これは私が持っているものです。私は私が見る問題のカップルがあると思います
from __future__ import print_function
import numpy as np
import emcee
try:
xrange
except NameError:
xrange = range
def lnprob(x, a, icov):
pi = np.pi
return np.sqrt(2/pi)*x**2*np.exp(-x**2/(2.*a**2))/a**3
ndim = 2
means = np.random.rand(ndim)
cov = 0.5-np.random.rand(ndim**2).reshape((ndim, ndim))
cov = np.triu(cov)
cov += cov.T - np.diag(cov.diagonal())
cov = np.dot(cov,cov)
icov = np.linalg.inv(cov)
nwalkers = 50
p0 = [np.random.rand(ndim) for i in xrange(nwalkers)]
sampler = emcee.EnsembleSampler(nwalkers, ndim, lnprob, args=[means, icov])
pos, prob, state = sampler.run_mcmc(p0, 5000)
sampler.reset()
sampler.run_mcmc(pos, 100000, rstate0=state)
おかげ
ように、我々は我々が直面している内容を正確に把握するように*あなたの*コードを参照することを好みます。 –
確かに、申し訳ありません!私は今それを追加しました。 –
心配はいりません。私が毎回ペニーを書いたときには、私はそれを書いています... –