问题描述
我的数据框 df_cr
中有转化率:
这些是过去一年中每个星期一在我的网页上发布的帖子的转化率。 如果我取数据集中转换的平均值(即成功/试验的平均值),我会得到大约 0.027 的转换
这是我的试验和成功变量的范围:
我对通过贝叶斯方法和使用 pymc3 查找转化率分布感兴趣。根据我观察的最小/最大范围,我构建了以下模型:
with pm.Model() as comparing_days:
alpha_1 = pm.Uniform('alpha_1',1000,10000,shape=1)
beta_1 = pm.Uniform('beta_1',40000,250000,shape=1)
p_B = pm.Beta('p_B',alpha=alpha_1,beta=beta_1,shape=1)
obs = pm.Binomial('obs',n=df_cr.trials,p=p_B,observed=df_cr.success,shape=1)
使用 pm.sample
运行 50K 样本后(1K 老化后),我得到以下输出
alpha 和 beta 参数分别增加了最大值,而 p_B 最终变得非常窄。所以我做错了(我是 pymc3 的新手)。我的先验有问题吗?使用统一先验选择 beta 函数参数是否有意义? 按照@merv 的评论,我进行了后验检查:
with comparing_days:
ppc = pm.sample_posterior_predictive(
trace,var_names=["alpha_1","beta_1","p_B","obs"],random_seed=12345
)
az.plot_ppc(az.from_pymc3(posterior_predictive=ppc,model=comparing_days))
我想这看起来还不错。是不是因为我有足够的数据,所以先验被稀释了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)