pymc的拟合优度和绘图差异

问题描述 投票:0回答:2

我正在使用PYMC 2.3.4。我发现好极了。现在,我想介绍一下拟合度和绘图差异,在文档的第7.3节中如何显示(https://pymc-devs.github.io/pymc/modelchecking.html)他们在文档中说,差异图需要3个输入]

  1. x:数据
  2. x_sim:后验分布样本
  3. x_exp:期望值我可以理解前两个,但不能理解第三个

此代码

Sero=[0,1,4,2,2,7,13,17,90]

Pop=[ 15,145,170,132,107,57,68,57,251]

for i in range(len(Pop)):
   prob[i] = pymc.Uniform(`prob_%i' % i, 0,1.0)

serobservation=pymc.Binomial('serobservation',n=Pop,p=prob,value=Sero,observed=True)
pobservation=pymc.Binomial('pobservation',n=Pop,p=prob)
mod=pymc.Model([serobservation,pobservation,prob])
mc=pymc.MCMC(mod)
mc.sample(20000)

一切正常,然后我尝试绘制差异,但我不理解[[知道要输入的期望值您能帮上忙吗?到目前为止,我已经以这种方式完成了:

D = pymc.discrepancy( Sero,pobservation,serobservation) pymc.Matplot.discrepancy_plot(D, name='D', report_p=True)
但我有错误

AttributeError: 'Binomial' object has no attribute 'trace'

我该怎么办?您能否提供一个示例来说明如何创建期望值?而且当我使用功能

pymc.Matplot.gof_plot(pobservation,Sero )

仅绘制数组最后一个条目的图如何为每个条目绘制一个图?

感谢您的所有帮助

python-2.7 pymc goodness-of-fit
2个回答
2
投票
[如果使用内置随机数,则有expval个函数是该分布的期望值(对于二项式,该函数只是binomial_expval,也就是p*n)。

[通常,我建议使用gof_plot而不是discrepancy_plot来产生后验预测图。您的代码存在一些问题:

  1. 尚不清楚为什么要构建prob节点列表,而不是仅指定向量值的Uniform

    prob = pymc.Uniform('prob', 0, 1, size=len(Pop))

  2. 您无需直接实例化Model;只是MCMC

    mc=pymc.MCMC([serobservation,pobservation,prob])

通过这些更改,我得到了8个GOF图,每个基准点一个。 Here is a zip file包含我得到的图。

0
投票
我想知道您是否已解决问题?我也遇到了这个问题。任何帮助,非常感谢!
© www.soinside.com 2019 - 2024. All rights reserved.