首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的因果影响分析(A/B测试)

Python中的因果影响分析(A/B测试)
EN

Stack Overflow用户
提问于 2020-08-07 06:21:59
回答 4查看 1.7K关注 0票数 0

我正在用Python进行因果影响分析。这种分析有助于测量与对照组相比,治疗组干预后的影响(A/B测试)。我从这里阅读了一些文献:https://www.analytics-link.com/post/2017/11/03/causal-impact-analysis-in-r-and-now-python

假设我的数据格式如下:

下面的代码运行良好:

代码语言:javascript
复制
from causalimpact import CausalImpact
cut_off_point = 12
pre_period = [0,cut_off_point-1]
post_period = [cut_off_point,data.shape[0]-1]
impact = CausalImpact(data, pre_period, post_period)
impact.run()
impact.plot()

但是,如果我添加一个额外的date列,并尝试根据日期拆分处理组和控制组,则会出现错误

比方说,我现在按日期定义pre period和post period,如下所示:

代码语言:javascript
复制
pre_period = ['2020-04-27','2020-06-29']
post_period = ['2020-07-06','2020-07-27']
impact = CausalImpact(data, pre_period, post_period)
impact.run()
impact.plot()

我得到一个错误:

代码语言:javascript
复制
ConversionError: Failed to convert value(s) to axis units: '2020-06-29'

我已将日期转换为索引,但仍收到错误。

有没有人能帮帮忙。关于这个库及其在A/B测试中的用法的在线文献似乎有限。非常感谢你的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-08-07 06:31:42

在将期间传递到CausalImpact之前定义期间:

代码语言:javascript
复制
pre_period = [pd.to_datetime(date) for date in  ['2020-04-27','2020-06-29']]
post_period = [pd.to_datetime(date) for date in ['2020-07-06','2020-07-27']]

现在periods是时间序列对象,例如pre_period

代码语言:javascript
复制
[Timestamp('2014-01-01 00:00:00'), Timestamp('2014-03-12 00:00:00')]

Timestamp的列表。之后尝试:

代码语言:javascript
复制
impact = CausalImpact(data, pre_period, post_period)
impact.run()
impact.plot()
票数 0
EN

Stack Overflow用户

发布于 2020-08-07 06:29:14

看起来您的数据是一个数据帧,但是您在pre_periodpost_period对象中提供了日期,这要求您的数据是时间序列对象。这在原始的R包文档here中有解释。

总结:为数据帧提供索引,为时间序列提供日期。

票数 0
EN

Stack Overflow用户

发布于 2020-08-12 21:45:48

这对我不起作用,它引发了浮点:TypeError()参数必须是字符串或数字,而不是相当相等的数据集中的'datetime.date‘(一个日期列和控制/测试组列)似乎不是一个非常通用的解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63292568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档