2017-04-14 5 views
1

CausalImpact 패키지를 사용하여 판매 패턴에 대한 폭풍의 영향을 모델링하려고합니다. 동물원 객체를 만들고 모델에 전달하면 오류가 발생합니다. 설명서를 읽었을 때 문서의 예제와 다른 점을 이해할 수 없습니다.Zoo 객체와 함께 CausalImpact 패키지를 사용하는 중에 오류가 발생했습니다.

> 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 

가 그럼 난 동물원 객체로 변환 해요 : : 나는 다음과 같은 data.frame 함께 일하고 있어요

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) 

하지만이 오류 메시지가 표시됨 :

0123을
> 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 <- as.Date(c('2015-10-17','2017-03-09')) 
post.period <- as.Date(c('2017-03-20','2017-04-13')) 

: 그때 내가 아래 3/9과 3/20 사이의 간격을 참조 즉 pre.period와 post.period 사이의 간격을 한 것으로 나타났습니다 문제가 다시 사라졌습니다.

위 코드에서 이와 같은 차이가없는 것 같지만 날짜 시리즈에서 불일치가 발생하거나 다른 날짜 범위를 시도하는 것이 좋습니다. 분명히 어딘가에 해결해야 할 버그가 있지만 위의 정보는 잠시 동안이 문제를 해결하는 데 도움이 될 것입니다.

+0

응답 해 주셔서 감사합니다. 나는 좌절감을 많이 겪은 후 며칠 내 데이터가 누락되었다는 것을 알게되었고이 모델은 누락 된 기간을 지원하지 않습니다. 그래서 특정 길이의 시퀀스를 만들 때 문제가 해결되는 이유를 설명합니다! –

+0

저에게 같은 문제입니다. 부부 날짜가 없습니다. 당신의 대답 없이는 이것을 발견하지 못했을 것입니다! – Owen