这也许是一个愚蠢的问题。
我正在尝试使用 PyMC 中的 MCMC 评估将数据拟合到一个非常奇怪的 PDF 中。对于这个例子,我只想弄清楚如何适应我手动输入正常 PDF 的正态分布。我的代码是:
data = [];
for count in range(1000): data.append(random.gauss(-200,15));
mean = mc.Uniform('mean', lower=min(data), upper=max(data))
std_dev = mc.Uniform('std_dev', lower=0, upper=50)
# @mc.potential
# def density(x = data, mu = mean, sigma = std_dev):
# return (1./(sigma*np.sqrt(2*np.pi))*np.exp(-((x-mu)**2/(2*sigma**2))))
mc.Normal('process', mu=mean, tau=1./std_dev**2, value=data, observed=True)
model = mc.MCMC([mean,std_dev])
model.sample(iter=5000)
print "!"
print(model.stats()['mean']['mean'])
print(model.stats()['std_dev']['mean'])
我发现的示例都使用 mc.Normal 或 mc.Poisson 之类的东西,但我想适应注释掉的密度函数。
任何帮助,将不胜感激。