因果推断(五)基于谷歌框架Causal Impact的因果推断

这篇具有很好参考价值的文章主要介绍了因果推断(五)基于谷歌框架Causal Impact的因果推断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因果推断(五)基于谷歌框架Causal Impact的因果推断

除了传统的因果推断外,还有一些机器学习框架可以使用,本文介绍来自谷歌框架的Causal Impact。该方法基于合成控制法的原理,利用多个对照组数据来构建贝叶斯结构时间序列模型,并调整对照组和实验组之间的大小差异后构建综合时间序列基线,最终预测反事实结果。

CausalImpact适用于时间序列在干预后的效果评估,例如某功能上线后是否提升了用户活跃。本文参考自CausalImpact 贝叶斯结构时间序列模型、tfcausalimpact官网示例。

准备数据

# pip install tfcausalimpact
import tensorflow as tf
from causalimpact import CausalImpact
import pandas as pd

tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) # 忽略tf警告信息

以下数据如果有需要的同学可关注公众号HsuHeinrich,回复【因果推断05】自动获取~

# 读取数据
data = pd.read_csv('arma_data.csv')
data.iloc[70:, 0] += 5 # 手动增加y值。构造提升效果
data.head()

数据格式:

  • 第一列为因变量,后面为协变量,例如本立中的y和X。

  • 数据需要标准化处理,可参考官方示例

  • # causalimpact.misc.standardize标准化
    import numpy as np
    import pandas as pd
    import pytest
    import tensorflow as tf
    import tensorflow_probability as tfp
    from numpy.testing import assert_array_equal
    from pandas.util.testing import assert_frame_equal
    
    from causalimpact import CausalImpact
    from causalimpact.misc import standardize
    
    data = pd.read_csv('tests/fixtures/btc.csv', parse_dates=True, index_col='Date')
    training_start = "2020-12-01"
    training_end = "2021-02-05"
    treatment_start = "2021-02-08"
    treatment_end = "2021-02-09"
    pre_period = [training_start, training_end]
    post_period = [treatment_start, treatment_end]
    
    pre_data = rand_data.loc[pre_int_period[0]: pre_int_period[1], :]
    # 标准化
    normed_pre_data, (mu, sig) = standardize(pre_data)
    
    # 自定义标准化 x-mu/sigma
    normed_my_data = (pre_data - mu) / sig # 伪代码
    # 定义model_args参数
    model_args == {'fit_method': 'hmc', 'niter': 1000, 'prior_level_sd': 0.01,  'season_duration': 1, 'nseasons': 1, 'standardize': True}
    
y X
0 118.188694 99.795292
1 120.233276 100.663180
2 118.627775 98.883699
3 119.609722 100.448941
4 121.391508 101.561734

模型拟合

# 分析报告
pre_period = [0, 69] # 干预前时期
post_period = [70, 99] # 干预后时期

ci = CausalImpact(data, pre_period, post_period)
print(ci.summary())
ci.plot()
Posterior Inference {Causal Impact}
                          Average            Cumulative
Actual                    125.23             3756.86
Prediction (s.d.)         120.23 (0.33)      3606.76 (9.97)
95% CI                    [119.58, 120.89]   [3587.5, 3626.57]

Absolute effect (s.d.)    5.0 (0.33)         150.11 (9.97)
95% CI                    [4.34, 5.65]       [130.3, 169.36]

Relative effect (s.d.)    4.16% (0.28%)      4.16% (0.28%)
95% CI                    [3.61%, 4.7%]      [3.61%, 4.7%]

Posterior tail-area probability p: 0.0
Posterior prob. of a causal effect: 100.0%

For more details run the command: print(impact.summary('report'))

因果推断(五)基于谷歌框架Causal Impact的因果推断,数据分析,python,数据分析

  • Causal Impact报告
    • 实验最终的平均预测值(prediction)为120.34,平均实际值(actual)为125.23;而累计预测值3610.16,累计实际值3756.86;这里的平均数据范围就是上述虚线之后(干预后)的时间段
    • 经过MCMC估计指标绝对效应(absolute effect)平均增长4.89,累计增长146.71;相对比率(relative effect)平均增长4.06%,累计增长4.06%
  • Causal Impact图
    • 第一张图(original)黑色实线为干预前后的实际结果,橙色虚线为模拟的策略未上线时的结果。阴影为置信区间
    • 第二张图(pointwise)橙色虚线为策略前后y的差值,可以看到策略上线后,y差值是显著为正的。
    • 第三张图(cumulative)橙色虚线为策略上线后的累加值,是持续增大的,可见策略有明显的正向作用。
# 打印详细报告
print(ci.summary(output='report'))

因果推断(五)基于谷歌框架Causal Impact的因果推断,数据分析,python,数据分析

  • 也可以用时间序列+多元变量

    数据格式:

    • 第一列为因变量,后面为协变量,例如本立中的CHANGED和[NOT_CHANGED_1、NOT_CHANGED_2、NOT_CHANGED_3]
    • 数据需要标准化处理,同上
# 读取数据
data = pd.read_csv('comparison_data.csv', index_col=['DATE'])
data.head()
CHANGED NOT_CHANGED_1 NOT_CHANGED_2 NOT_CHANGED_3
DATE
2019-04-16 83836.5 85642.5 86137.5 81241.5
2019-04-17 83887.5 86326.5 85036.5 80877.0
2019-04-18 82662.0 87456.0 84409.5 80910.0
2019-04-19 83271.0 89551.5 87568.5 82150.5
2019-04-20 84210.0 90256.5 86602.5 83083.5
pre_period = ['2019-04-16', '2019-07-14']
post_period = ['2019-7-15', '2019-08-01']

ci = CausalImpact(data, pre_period, post_period, model_args={'fit_method': 'hmc'}) # model_args参数提高精度,牺牲效率
print(ci.summary())
ci.plot()

因果推断(五)基于谷歌框架Causal Impact的因果推断,数据分析,python,数据分析

# 打印详细报告
print(ci.summary(output='report'))

因果推断(五)基于谷歌框架Causal Impact的因果推断,数据分析,python,数据分析

总结

这里的分享较为浅显,就当是一种冷门数据分析方法的科普吧,如果想深入了解的同学可自行查找资源进行充电~

共勉~文章来源地址https://www.toymoban.com/news/detail-675121.html

到了这里,关于因果推断(五)基于谷歌框架Causal Impact的因果推断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 生态经济学领域里的R语言机器学(数据的收集与清洗、综合建模评价、数据的分析与可视化、数据的空间效应、因果推断等)

    近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据,而计量经济学则通常使用较小样本,

    2024年02月11日
    浏览(43)
  • 【生态经济学】利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手

    查看原文 如何快速掌握利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手 近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学

    2024年02月12日
    浏览(39)
  • 因果推断阶段系列19[阶段2-1]-机器学习预测模型与因果推断

    因果推断的第一部分已经完成。该部分涵盖了因果推断的核心内容,相关的技术非常著名和成熟。第一部分为我们构建了可靠的基础。具体来说,第一部分重点介绍了因果推断的定义,以及避免将相关误认为因果的偏差、调整这些偏差的多种方法(如回归、匹配和倾向得分)

    2024年02月06日
    浏览(26)
  • 因果推断阶段系列21[阶段2-3]----因果模型评估

    大部分关于因果性的资料中,研究人员使用模拟数据来检查他们的方法是否有效。就像我们在一章中所做的那样,模拟生成关于 Y 0 i Y_{0i}

    2024年02月08日
    浏览(28)
  • 因果推断(四)断点回归(RD)

    在传统的因果推断方法中,有一种方法可以控制观察到的混杂因素和未观察到的混杂因素,这就是断点回归,因为它只需要观察干预两侧的数据,是否存在明显的断点。 ⚠️注意:当然这个方法只能做到局部随机,因此很难依据该结论推向全局。 本文参考自rdd官方示例,通

    2024年02月13日
    浏览(35)
  • 因果推断系列16-面板数据与固定效应

    加载第三方包

    2024年02月05日
    浏览(29)
  • 因果推断-PSM的原理及python实现

    目录 一、背景:员工技能培训真的是浪费时间吗 二、PSM的原理及python实现 1、PSM的原理 1.1 计算倾向性得分 1.2 匹配对照组样本 1.3 平衡性检查 1.4 敏感度分析 2、PSM的python实现 假设你是一家大企业的老板,你希望知道员工技能培训对员工生产率的提升有多大帮助。已知参加培

    2024年02月15日
    浏览(29)
  • [因果推断] 增益模型(Uplift Model)介绍(三)

    增益模型(uplift model):估算干预增量(uplift),即 干预动作(treatment) 对 用户响应行为(outcome) 产生的效果。 这是一个 因果推断(Causal Inference) 课题下估算 ITE (Individual Treatment Effect)的问题——估算同一个体在 干预与不干预 (互斥情况下)不同outcome的差异。为了克

    2024年02月06日
    浏览(25)
  • 因果推断之微软开源的dowhy使用学习

    本文参考微软dowhy官网文档,并参考相关博客进行整理而来,官方地址:https://github.com/py-why/dowhy 因果推理 是基于观察数据进行反事实估计,分析干预与结果之间的因果关系。 DoWhy是微软发布的 端到端 因果推断Python库,主要特点是: 基于一定经验假设的基础上,将问题转化

    2024年02月09日
    浏览(26)
  • 收集一些因果推断比较好的工具包,教程

    1.国内一个武汉大学教授手下博士写的基础的因果知识课件: http://www.liuyanecon.com/wp-content/uploads/%E7%8E%8B%E5%81%A520201022.pdf 感兴趣可以看看其他手下博士做的课件: Causal inference reading group 2020 – 刘岩 – 宏观金融 2.耶鲁大学教授课程全套  课件+代码+视频 代码:GitHub - paulgp/app

    2023年04月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包