有什么理由说NUTS采样器可能很慢或失速? 我使用http://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/作为某些人的基础 层次线性回归工作。 我尝试从find_MAP()开始尝试,它在100之后仍然停滞不前 2000次迭代
我的代码是
with pm.Model() as hierarchical_model:
# Hyperpriors for group nodes
mu_a = pm.Normal('mu_alpha', mu=0., sd=100**2)
sigma_a = pm.Uniform('sigma_alpha', lower=0, upper=100)
mu_b = pm.Normal('mu_beta', mu=0., sd=100**2)
sigma_b = pm.Uniform('sigma_beta', lower=0, upper=100)
a = pm.Normal('alpha', mu=mu_a, sd=sigma_a, shape=n_dis)
b = pm.Normal('beta', mu=mu_b, sd=sigma_b, shape=n_dis)
# Model error
eps = pm.Uniform('eps', lower=0, upper=100)
actual_est = a[disRefV] + b[disRefV] * data.baseline.values
actual_like = pm.Normal('actual_like', mu=actual_est, sd=eps, observed=data.prepanel)
with hierarchical_model:
start = pm.find_MAP()
step = pm.NUTS()
hierarchical_trace = pm.sample(2000, step, progressbar=True)
非常感谢提前
答案 0 :(得分:2)
NUTS有时会卡住。您是否对数据进行了分数/标准化?这通常有助于我的实验。如果您使用的是分层模型,您可能希望根据组均值对您的数据进行z分数,而不是单独的方法。
然后你可以重新调整你的后代,使它们在原始空间中(Kruscke一书中的公式17.1“做贝叶斯数据分析”)。