我注意到在 pymc3 中使用均匀分布时,采样器也会扫描_interval
参数,除非指定了转换,例如:
with fitModel6:
normMu = pm.Uniform('normMu',lower=0,upper=1000)
不仅会导致对 normMu 的采样,还会导致 normMu_interval:
通常,当我对尺度参数(如标准化)使用统一先验时,我当然会在对数间隔上进行采样。pymc3 是否以某种方式为我处理这个问题?
干杯
PyMC3 自动将转换应用于有界变量,以将它们置于不受约束的范围内。每个转换的代码都在这里,关于变量自动转换的非常简短的讨论可以在官方 PyMC3教程中找到。
编辑
如果链接再次断开/移动,这里是教程中的大部分信息
为了更有效地对模型进行采样,PyMC3 自动将有界 RV 转换为无界。
with pm.Model() as model: x = pm.Uniform('x', lower=0, upper=1)`
当我们查看模型的房车时,我们希望在
x
那里找到,但是:In [16]: model.free_RVs Out[16]: [x_interval__]
x_interval__
表示x
转换为接受 -inf 和 +inf 之间的参数值。在上限和下限的情况下,LogOdd
应用 s 变换。在这个转换后的空间中采样使采样器更容易......