pymc3 - 如何实施联合超先验?
问题描述
我正在尝试重新创建贝叶斯数据分析第三版的结果。
第 5 章第 3 节涉及大鼠的肿瘤。分层模型是合适的,并且使用的超先验不是 pymc3 中包含的密度之一。
超先验是a*b*(a+b)^-2.5
。这是我使用 pymc3 的尝试。
import pymc3 as pm
with pm.Model() as model:
def ab_dist(x):
#Should be log density, from what I have read
a = x[0]
b = x[1]
return a+b-5/2*(a+b)
ab = pm.DensityDist('ab', ab_dist, shape = 2, testval=[2,2])
a = ab[0]
b = ab[1]
theta = pm.Beta('theta',alpha = a,beta = b)
Y= pm.Binomial('y', n = n, p = theta, observed = y)
在这个阶段,我返回了一个错误
ValueError: Input dimension mis-match. (input[0].shape[0] = 71, input[1].shape[0] = 20000)
我做错了什么?我是否正确实施了密度?
解决方案
推荐阅读
- wordpress - Wordpress - 随机页面横幅图像
- xml - XSLT-检查子节点是否有值
- ios - Expo - 在 iOS 12 上禁用自动填充强密码(自动填充)
- sap-fiori - 列表报告(Fiori Elements)中选择类型范围的默认值
- python - 可以在 Python 中声明字符类型吗?
- python-3.x - s.recv hang in python sockets
- javascript - 登录表单保存密码数据反映在其他表单密码类型中
- couchdb - 通过文件系统将 Couch DB 数据从一台服务器克隆到另一台服务器(无复制器)
- typescript - Typescript Property does not exist on enum type
- python - 在另一个之前调整一个小部件的大小