This R package implements an approach to estimating the causal effect of a designed intervention on a time series. For example, how many additional daily clicks were generated by an advertising campaign? Answering a question like this can be difficult when a randomized experiment is not available. The package aims to address this difficulty using a structural Bayesian time-series model to estimate how the response metric might have evolved after the intervention if the intervention had not occurred.
As with all approaches to causal inference on non-experimental data, valid conclusions require strong assumptions. The CausalImpact package, in particular, assumes that the outcome time series can be explained in terms of a set of control time series that were themselves not affected by the intervention. Furthermore, the relation between treated series and control series is assumed to be stable during the post-intervention period. Understanding and checking these assumptions for any given application is critical for obtaining valid conclusions.
For Python users we recommend the implementation in TFP CausalImpact, contributed by Colin Carroll, David Moore, Jacob Burnim, Kyle Loveless, and Susanna Makela. The Python implementation uses TensorFlow Probability and has been designed to produce results close to those of the R package. Some differences are expected given the nature of randomized algorithms.
install.packages("CausalImpact")
library(CausalImpact)
Manuscript: Brodersen et al., Annals of Applied Statistics (2015)
For questions on the statistics behind CausalImpact: Cross Validated
For questions on how to use the CausalImpact R package: Stack Overflow
Python version: TFP CausalImpact