用随机效应解释多级回归中的变量

时间:2017-04-08 13:09:18

标签: python-3.x pymc3 bambi multilevel-analysis hierarchical-bayesian

我有一个类似下面的数据集(显示的前5行)。 CPA是来自不同广告航班的实验(处理)的观察结果。航班按等级分组在广告系列中。

  campaign_uid  flight_uid treatment         CPA
0   0C2o4hHDSN  0FBU5oULvg   control  -50.757370
1   0C2o4hHDSN  0FhOqhtsl9   control   10.963426
2   0C2o4hHDSN  0FwPGelRRX   exposed  -72.868952
3   0C5F8ZNKxc  0F0bYuxlmR   control   13.356081
4   0C5F8ZNKxc  0F2ESwZY22   control  141.030900
5   0C5F8ZNKxc  0F5rfAOVuO   exposed   11.200450

我适合如下的模型:

model.fit('CPA ~ treatment',  random=['1|campaign_uid'])

据我所知,这个模型只是说:

  • 我们有治疗斜坡
  • 我们有一个全局拦截
  • 我们还有每个广告系列的拦截

所以对于每个这样的变量,只需要一个 后验

但是,看看下面的结果,我还得到了以下变量的后验:1|campaign_uid_offset。它代表什么?

enter image description here

拟合模型和图的代码:

model   = Model(df)
results = model.fit('{} ~ treatment'.format(metric),  
                    random=['1|campaign_uid'], 
                    samples=1000)
# Plotting the result
pm.traceplot(model.backend.trace)

1 个答案:

答案 0 :(得分:5)

  • 1 | campaign_uid

这些是您在参数列表中提到的广告系列的随机截距。

  • 1 | campaign_uid_sd

这是上述随机广告系列拦截的标准偏差。

  • CPA_sd

这是残差标准差。也就是说,您的模型可以(部分)写为CPA_ij~Normal(b0 + b1 * treatment_ij + u_j,sigma ^ 2),CPA_sd表示参数sigma。

  • 1 | campaign_uid_offset

这是随机截距的替代参数化。 bambi在内部使用此转换以提高MCMC采样效率。通常,默认情况下,此变换参数对用户是隐藏的;也就是说,如果使用results.plot()而不是pm.traceplot(model.backend.trace)创建跟踪图,则除非您指定transformed=True(默认情况下为False),否则这些术语将被隐藏。它也默认隐藏在results.summary()输出中。有关此转换的详细信息,请参阅this nice blog post by Thomas Wiecki