pymc的拟合优度和绘图差异
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pymc的拟合优度和绘图差异相关的知识,希望对你有一定的参考价值。
我正在使用PYMC 2.3.4。我发现好极了。现在,我想介绍一下拟合度和绘图差异,在文档的第7.3节中如何显示(https://pymc-devs.github.io/pymc/modelchecking.html)他们在文档中说,差异图需要3个输入]
- x:数据
- x_sim:后验分布样本
- 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 )
仅绘制数组最后一个条目的图如何为每个条目绘制一个图?感谢您的所有帮助
答案
[如果使用内置随机数,则有expval
个函数是该分布的期望值(对于二项式,该函数只是binomial_expval
,也就是p*n
)。 [通常,我建议使用gof_plot
而不是discrepancy_plot
来产生后验预测图。您的代码存在一些问题:
- 尚不清楚为什么要构建
prob
节点列表,而不是仅指定向量值的Uniform
:prob = pymc.Uniform('prob', 0, 1, size=len(Pop))
- 您无需直接实例化
Model
;只是MCMC
:mc=pymc.MCMC([serobservation,pobservation,prob])
通过这些更改,我得到了8个GOF图,每个基准点一个。 Here is a zip file包含我得到的图。
另一答案
我想知道您是否已解决问题?我也遇到了这个问题。任何帮助,非常感谢! 以上是关于pymc的拟合优度和绘图差异的主要内容,如果未能解决你的问题,请参考以下文章