在解决“统计反思”中的问题时-我正在使用pymc3解决“萨拉曼德斯”问题10H4。 (下面的代码)
采样器总是失败,并显示错误:
RV
alpha
。ravel()[0]的导数为零。
但是当我将init ='map'选项传递给采样器时,我得到的结果与使用R code的其他人相似。强烈建议不要在采样器的输出中使用“ map” init选项,但许多其他init选项也存在问题。
数据为here
我尝试按照与错误消息相关的网络搜索中的建议更改先验条件。
with pm.Model() as hw_10_4:
alpha = pm.Normal('alpha',mu=0,sd=5)
beta = pm.Normal('beta',mu=0,sd=5)
l = pm.Deterministic('lambda',pm.math.exp(alpha + beta*pctcover))
s = pm.Poisson('salam',l,observed=salaman)
trace_10_4 = pm.sample(1000, tune=1000, init='map')
我有想要的结果,但是我有兴趣进一步了解为什么我首先遇到问题。我是PYMC3的新手,并想完全了解发生了什么。
谢谢!
答案 0 :(得分:1)
是的,PyMC3确实似乎无法很好地处理全局扩展。很高兴Stan似乎不会像PyMC3那样受阻,但实际上在两种情况下,只要将回归预测器标准化就可以进行理想的采样。 PyMC3的某些统计重新思考代码中的The unofficial port就是这样做的for that problem。 FWIW,我通常从scale
导入sklearn.preprocessing
,其行为与文本中使用的R scale
相同。
对于使用MAP初始化,这在高维预测变量空间中主要是一个问题。在这里,我不会只使用一个预测变量。