【问题标题】:Errors using CausalImpact package with Zoo objects将 CausalImpact 包与 Zoo 对象一起使用时出错
【发布时间】:2017-09-10 23:38:52
【问题描述】:

我正在尝试使用 CausalImpact 包模拟风暴对销售模式的影响。当我创建一个动物园对象并将其传递给模型时,我收到一个错误。我已通读文档,但无法弄清楚我所做的与文档中的示例有何不同。

我正在使用以下 data.frame:

> head(my.data)
        date    sales    units
1 2014-10-17 71319.85 21436.64
2 2014-10-18 88598.26 26755.79
3 2014-10-19 95768.29 29823.86
4 2014-10-20 62303.04 19417.71
5 2014-10-21 56477.57 17562.21
6 2014-10-22 54890.39 16946.43

然后我将其转换为动物园对象:

my.data<- zoo( my.data[ ,c('sales','units')], my.data[,'date'] )

> str(my.data)
‘zoo’ series from 2014-10-17 to 2017-04-13
  Data: num [1:907, 1:2] 71320 88598 95768 62303 56478 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "sales" "units"
  Index:  Date[1:907], format: "2014-10-17" "2014-10-18" "2014-10-19" ...

然后我设置前期和后期并运行模型:

pre.period <- as.Date(c('2015-10-17','2017-03-09'))
post.period <- as.Date(c('2017-03-10','2017-04-13'))

library(CausalImpact)
impact<- CausalImpact(data = my.data, pre.period = pre.period, post.period = post.period, alpha = .01)

但我收到此错误:

> impact<- CausalImpact(data = my.data, pre.period = pre.period, post.period = post.period, alpha = .05)
Error in bsts(formula, data = data, state.specification = ss, expected.model.size = kStaticRegressionExpectedModelSize,  : 
  Caught exception with the following error message: 
BregVsSampler did not start with a legal configuration.
Selector vector:  11
beta: 0 0

我已经成功地将此包用于单变量时间序列数据,但无法确定为什么它不起作用。

感谢您的帮助!

【问题讨论】:

    标签: r time-series zoo causality


    【解决方案1】:

    在应用最近的软件包更新(包括 CausalImpact)后,我遇到了同样的问题。以前一切正常。

    虽然我没有确切的原因/解决方案,但我发现了一些可能对您有所帮助的东西。

    在我的数据中,我尝试简单地将 zoo 对象中的日期替换为测试序列。所以在你的情况下,它会是这样的:

    time.pts <- seq.Date(as.Date("2014-10-17"), by = 1, length.out = 907)
    my.data<- zoo( my.data[ ,c('sales','units')], time.pts )
    

    执行此操作后,“BregVsSampler”异常没有发生。所以我认为问题一定与日期有关,然后将我原来的日期系列放回动物园对象。然后我注意到我在 pre.period 和 post.period 之间有一个差距,即在下面看到 3/9 和 3/20 之间的差距:

    pre.period <- as.Date(c('2015-10-17','2017-03-09'))
    post.period <- as.Date(c('2017-03-20','2017-04-13'))
    

    当我调整前后期间以消除日期间隔时,问题再次消失。

    虽然您在上面显示的代码中似乎没有这样的差距,但您可能希望查看您的日期系列是否有任何不一致之处和/或尝试不同的日期范围。显然,某处存在需要修复的错误,但也许上述信息将帮助您在此期间解决该问题。

    【讨论】:

    • 感谢您的回复!经过一番挫折后,我发现我的数据丢失了几天,而您这个模型不支持丢失的时间段。这就解释了为什么当您创建一个特定长度的序列时它解决了问题!
    • 对我来说同样的问题。错过了几个约会。如果没有您的回答,永远不会发现这一点!
    猜你喜欢
    • 2019-07-10
    • 2011-12-29
    • 2016-09-25
    • 2020-07-12
    • 2015-12-03
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多