1

我正在尝试使用 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

我已经成功地将这个包与单变量时间序列数据一起使用,但无法确定为什么这不起作用。

谢谢您的帮助!

4

1 回答 1

3

在应用最近的包更新(包括 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'))

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

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

于 2017-04-19T05:52:44.723 回答