对单个时间序列的因果影响

机器算法验证 r 时间序列 因果关系
2022-04-05 13:39:27

今天我尝试使用 CausalImpact R-package https://google.github.io/CausalImpact/CausalImpact.html (Brodersen et al. 2015) 来探索一些决策对销售数据流的影响。

该软件包的文档说,它通过估计贝叶斯结构时间序列来估计给定响应时间序列和一组时间序列控制(即需要两个或更多序列来估计因果影响效应)的影响模型。

但是,我仅使用单个时间序列(单个数据向量)使用了该包,并且我获得了一个看起来之前合理的输出(绘图和模型)。

我的问题是,在这种情况下,只有一个时间序列,包估计什么样的模型。得到的结果可靠吗?在仅使用一个时间序列的情况下,该软件包是否也有用?

数据和图表可在此处获得。

获取绘图的代码是:

pre.period<-c(1,72) 
post.period<-c(73,length(salesdata)) 
impact<-CausalImpact(salesdata, pre.period, post.period, model.args = list(nseasons=12)) 
plot(impact) 
summary(impact)
1个回答

CausalImpact使用R 包运行分析有两种方法。该文档涵盖了两者。您可以让包自动构建合适的模型,也可以指定自定义模型

在前一种情况下,包构建的模型类型取决于您的输入数据:

  • 如果您的数据(如您的情况)不包含预测时间序列(即data参数是单变量时间序列),则模型包含本地级别组件,如果在 中指定model.args,则包含季节性组件通常不建议这样做,因为您的模型预测的反事实将过于简单化。他们没有使用后期的任何信息。然后,因果推理变得与预测一样困难。话虽如此,该模型仍为您提供预测区间,您可以使用它来评估后期时间序列与其基线的偏差是否显着。

  • 如果您的数据包含一个或多个预测变量时间序列(即,data参数至少有两列),则除上述之外,模型还包含回归组件在我所见过的所有实际案例中,确实是预测时间序列使模型变得强大,因为它们允许您计算更合理的反事实。我通常建议至少添加一些预测时间序列。

您可以在以下位置找到上述实现: https ://github.com/google/CausalImpact/blob/master/R/impact_model.R