PyMC3 二项开关点模型高度依赖于 testval
PyMC3 binomial switchpoint model highly dependent on testval
我在 PyMC3 中设置了以下二项式切换点模型:
with pm.Model() as switchpoint_model:
switchpoint = pm.DiscreteUniform('switchpoint', lower=df['covariate'].min(), upper=df['covariate'].max())
# Priors for pre- and post-switch parameters
early_rate = pm.Beta('early_rate', 1, 1)
late_rate = pm.Beta('late_rate', 1, 1)
# Allocate appropriate binomial probabilities to years before and after current
p = pm.math.switch(switchpoint >= df['covariate'].values, early_rate, late_rate)
p = pm.Deterministic('p', p)
y = pm.Binomial('y', p=p, n=df['trials'].values, observed=df['successes'].values)
它似乎 运行 很好,除了它完全集中在开关点 (999) 的一个值上,如下所示。
经进一步调查,该模型的结果似乎高度依赖于起始值(在 PyMC3 中,"testval")。下面显示了当我设置 testval = 750 时发生的情况。
switchpoint = pm.DiscreteUniform('switchpoint', lower=gp['covariate'].min(),
upper=gp['covariate'].max(), testval=750)
我得到了类似的不同结果,但起始值不同。
对于上下文,这是我的数据集的样子:
我的问题是:
- 我的模型指定有误吗?
- 如果指定正确,我应该如何解释这些结果?特别是,我如何比较 / select 不同测试值生成的结果?我唯一的想法是使用 WAIC 评估样本外性能...
具有离散值的模型可能会出现问题,所有使用导数的优秀采样技术都不再有效,并且它们的行为很像多模态分布。我真的不明白为什么在这种情况下会 that 有问题,但是您可以尝试为切换点使用连续变量(从概念上讲这不是也更有意义吗? ).
我在 PyMC3 中设置了以下二项式切换点模型:
with pm.Model() as switchpoint_model:
switchpoint = pm.DiscreteUniform('switchpoint', lower=df['covariate'].min(), upper=df['covariate'].max())
# Priors for pre- and post-switch parameters
early_rate = pm.Beta('early_rate', 1, 1)
late_rate = pm.Beta('late_rate', 1, 1)
# Allocate appropriate binomial probabilities to years before and after current
p = pm.math.switch(switchpoint >= df['covariate'].values, early_rate, late_rate)
p = pm.Deterministic('p', p)
y = pm.Binomial('y', p=p, n=df['trials'].values, observed=df['successes'].values)
它似乎 运行 很好,除了它完全集中在开关点 (999) 的一个值上,如下所示。
经进一步调查,该模型的结果似乎高度依赖于起始值(在 PyMC3 中,"testval")。下面显示了当我设置 testval = 750 时发生的情况。
switchpoint = pm.DiscreteUniform('switchpoint', lower=gp['covariate'].min(),
upper=gp['covariate'].max(), testval=750)
我得到了类似的不同结果,但起始值不同。
对于上下文,这是我的数据集的样子:
我的问题是:
- 我的模型指定有误吗?
- 如果指定正确,我应该如何解释这些结果?特别是,我如何比较 / select 不同测试值生成的结果?我唯一的想法是使用 WAIC 评估样本外性能...
具有离散值的模型可能会出现问题,所有使用导数的优秀采样技术都不再有效,并且它们的行为很像多模态分布。我真的不明白为什么在这种情况下会 that 有问题,但是您可以尝试为切换点使用连续变量(从概念上讲这不是也更有意义吗? ).