我有一个类似下面的数据集(显示的前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
。它代表什么?
拟合模型和图的代码:
model = Model(df)
results = model.fit('{} ~ treatment'.format(metric),
random=['1|campaign_uid'],
samples=1000)
# Plotting the result
pm.traceplot(model.backend.trace)
答案 0 :(得分:5)
这些是您在参数列表中提到的广告系列的随机截距。
这是上述随机广告系列拦截的标准偏差。
这是残差标准差。也就是说,您的模型可以(部分)写为CPA_ij~Normal(b0 + b1 * treatment_ij + u_j,sigma ^ 2),CPA_sd
表示参数sigma。
这是随机截距的替代参数化。 bambi
在内部使用此转换以提高MCMC采样效率。通常,默认情况下,此变换参数对用户是隐藏的;也就是说,如果使用results.plot()
而不是pm.traceplot(model.backend.trace)
创建跟踪图,则除非您指定transformed=True
(默认情况下为False),否则这些术语将被隐藏。它也默认隐藏在results.summary()
输出中。有关此转换的详细信息,请参阅this nice blog post by Thomas Wiecki。