Ошибки при использовании пакета CausalImpact с объектами Zoo
Я пытаюсь смоделировать влияние штормов на структуру продаж с помощью пакета 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
Я успешно использовал этот пакет с одномерными данными временных рядов, но не могу определить, почему это не работает.
Спасибо за помощь!
1 ответ
Я столкнулся с той же самой проблемой, после применения последних обновлений пакета (включая CausalImpact). Раньше все работало нормально.
Хотя у меня нет точной причины / решения, я обнаружил кое-что, что может вам помочь.
В своих данных я попытался просто заменить даты в объекте зоопарка тестовой последовательностью. Так что в вашем случае это будет что-то вроде:
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'))
Когда я скорректировал период до / после, чтобы устранить разрыв в датах, проблема снова ушла.
Хотя у вас, похоже, нет такого пробела в коде, который вы показываете выше, вы, возможно, захотите взглянуть на серию дат на наличие несоответствий и / или попробовать другой диапазон дат. Очевидно, что где-то есть ошибка, которую необходимо исправить, но, возможно, приведенная выше информация поможет вам обойти эту проблему в промежутке времени.