Ошибки при использовании пакета 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'))

Когда я скорректировал период до / после, чтобы устранить разрыв в датах, проблема снова ушла.

Хотя у вас, похоже, нет такого пробела в коде, который вы показываете выше, вы, возможно, захотите взглянуть на серию дат на наличие несоответствий и / или попробовать другой диапазон дат. Очевидно, что где-то есть ошибка, которую необходимо исправить, но, возможно, приведенная выше информация поможет вам обойти эту проблему в промежутке времени.

Другие вопросы по тегам