Usando o pacote Impacto Causal do Google para avaliar a importância de uma intervenção planejada

7

Estou usando o pacote Causal Impact em R para inferir o efeito causal de uma intervenção em alguns dados altamente correlacionados e sazonais.

Especificamente, recebi 17 dias de dados por hora, a intervenção ocorrendo no final do dia 13. Tenho dois conjuntos de dados de controle que não são afetados pela intervenção (com correlações lineares de 0,708 e 0,701) e o conjunto de dados que inclui a intervenção ( tcp "tratado")

Uma parte dos dados pode ser encontrada aqui

Meu código é o seguinte

days <- 4
daily.obser <- days*24
data.1 <- cbind(treated.signal.3n,the.control.3,the.control.2)
data.1 <- data.1[1:((length(bsl)+1)+daily.obser), ] #check the required amount of data only 

matplot(data.1, type = "l",col = c(2,4,9))
legend("bottomright", inset=.05, legend=c("Treated Zone", "Control Zone 1", "Control Zone 2"), pch=1, col=c(2,4,9), horiz=TRUE)

preperiod <- c(1,length(bsl))
postperiod <- c((length(bsl)+1),(length(bsl)+1+daily.obs))
prior.level.sd.level <- 0.01

imp.1 <- CausalImpact(data.1, pre.period = preperiod, post.period = postperiod, 
         model.args = list(niter = 2500,nseasons=17, season.duration = 24, 
         dynamic.regression = FALSE, prior.level.sd =prior.level.sd.level,standardize.data = TRUE))

summary(imp.1)
plot(imp.1,c("original","pointwise"))
summary(imp.1,"report")

Minhas perguntas são:

Eu li o artigo e, em algum momento, ele está falando sobre a distribuição anterior da variação. Não entendo como devo definir meu prior.level.sdparâmetro, com base nos meus dados.

Outro problema que estou enfrentando são os nseasons,season.durationargumentos. Quando eu especifico isso, nos resultados, estou percebendo que a intervenção é insignificante (e os ICs estão se tornando enormes), enquanto que quando não o faço, a intervenção é significativa. É nseasonssuposto ser dizem que o número de dias para todo o conjunto de dados ou apenas para o período pré-intervenção (por exemplo, 17 ou 13)? O que significa realmente especificar a sazonalidade? Posso, com base nos dados, pular isso?

Resultados com gráficos e números de especificação de sazonalidade

Resultados sem gráficos e números de especificação de sazonalidade

(não fornece cumulativo, pois não é útil no meu caso)

(você notará que no período pré-intervenção o ajuste não é tão bom. Posso corrigir isso de alguma forma?)

Eu não entendo, como devo especificar se eu quero padronizar os dados ou não.

Finalmente, estou pensando em regressão estática ou dinâmica. Li no artigo que é recomendável usar estática quando a relação entre controle e tratamento é estável. Alguém pode explicar o que se entende por estável?

Você pode encontrar o artigo aqui

Trelokoritso
fonte

Respostas:

-1

Sobre a sazonalidade. A partir da referência:

. Por exemplo, se os dados representam observações diárias, use 7 para um componente do dia da semana. Atualmente, essa interface suporta apenas um componente sazonal.

e

use model.args = list (nseasons = 7, season.duration = 24) para adicionar um componente do dia da semana aos dados com granularidade horária

Então, suponho que, no seu caso, acho que nseasons = 13, season.duration = 24 também.


O que se entende por estábulo: entendo que o relacionamento das covariáveis ​​com a série que você está acompanhando teria sido mantido (mas para a intervenção). Portanto, se eu estivesse estudando alguma medida que afetasse os preços da habitação (y) e estivesse usando como covariáveis ​​o salário médio, se o Reino Unido deixar a UE acontecer durante o período de intervenção, isso poderá mudar a relação entre o preço da habitação e o salário. Portanto, a suposição de que a relação entre as covariáveis ​​ey era estável seria interrompida.


O prior.level.sd, não acho que seja algo que você possa deduzir de seus dados. É um parâmetro usado pelo algoritmo, não é?

fg
fonte