3

NUTS 采样器可能会变慢或失速有什么原因吗?我使用http://twiecki.github.io/blog/2014/03/17/bayesian-glms-3/作为一些分层线性回归工作的基础。我尝试从 find_MAP() 开始,但在 2000 次迭代中的 100 次后它仍然停滞不前

我的代码是

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)

提前谢谢了

4

1 回答 1

2

NUTS 有时会卡住。您是否对数据进行了 z 评分/标准化?这通常对我的实验有所帮助。如果您使用的是分层模型,您可能希望根据组均值而不是单个均值对数据进行 z 评分。

然后,您可以重新调整您的后验,使它们位于原始空间中(Kruscke 书籍“做贝叶斯数据分析”中的公式 17.1)。

于 2014-06-12T10:36:56.050 回答