pymc3

问题描述

我的数据框 df_cr 中有转化率:

cr data grouped

这些是过去一年中每个星期一在我的网页上发布的帖子的转化率。 如果我取数据集中转换的平均值(即成功/试验的平均值),我会得到大约 0.027 的转换

这是我的试验和成功变量的范围:

cr_trial_success

我对通过贝叶斯方法和使用 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 老化后),我得到以下输出

MCMC output

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))

我想这看起来还不错。是不是因为我有足够的数据,所以先验被稀释了?

posterior_check

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)