我正在尝试使用CausalImpact包模拟风暴对销售模式的影响。当我创建一个zoo对象并将其传递给模型时,我收到一个错误。我已经通读了文档,但找不出我正在做的事情与文档中的示例有什么不同。
我正在使用以下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然后我将它转换为一个zoo对象:
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我已经成功地在单变量时间序列数据中使用了这个软件包,但我不能确定为什么它不起作用。
谢谢你的帮助!
发布于 2017-04-19 13:52:45
在应用最新的包更新(包括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“异常。因此,我认为问题一定与日期有关,然后将原始日期序列放回zoo对象中。然后我注意到我在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'))当我调整前/后周期以消除日期间隔时,问题又消失了。
虽然您在上面显示的代码中似乎没有这样的差距,但您可能希望查看日期序列中是否有任何不一致和/或尝试不同的日期范围。显然,某个地方存在需要修复的bug,但上述信息可能会在此期间帮助您解决此问题。
https://stackoverflow.com/questions/43416142
复制相似问题