Ao conduzir uma análise de intervenção com dados de séries temporais (também conhecidos como séries temporais interrompidas), como discutido aqui, por exemplo, um requisito que tenho é estimar o ganho total (ou perda) devido à intervenção - ou seja, número de unidades ganhas ou perdidas (a variável Y )
Não entendendo completamente como estimar a função de intervenção usando uma função de filtro dentro de R, eu fiz isso de maneira bruta, esperando que isso seja geral o suficiente para funcionar em qualquer situação.
Digamos que, dados os dados
cds<- structure(c(2580L, 2263L, 3679L, 3461L, 3645L, 3716L, 3955L,
3362L, 2637L, 2524L, 2084L, 2031L, 2256L, 2401L, 3253L, 2881L,
2555L, 2585L, 3015L, 2608L, 3676L, 5763L, 4626L, 3848L, 4523L,
4186L, 4070L, 4000L, 3498L), .Dim = c(29L, 1L), .Dimnames = list(
NULL, "CD"), .Tsp = c(2012, 2014.33333333333, 12), class = "ts")
decidimos que o melhor modelo de ajuste é o seguinte, com a função de intervenção como
que é um pulso em outubro de 2013.
fit4 <- arimax(log(cds), order = c(1,1,0),include.mean=FALSE,
xtransf = data.frame(Oct13 = 1*(seq_along(cds)==22)),
transfer = list(c(1,0))
,xreg=1*(seq_along(cds)==3))
fit4
# ARIMA(1,1,0)
# Coefficients:
# ar1 xreg Oct13-AR1 Oct13-MA0
# -0.0184 0.2718 0.4295 0.4392
# s.e. 0.2124 0.1072 0.3589 0.1485
# sigma^2 estimated as 0.02176: log likelihood=13.85
# AIC=-19.71 AICc=-16.98 BIC=-13.05
Eu tenho duas perguntas:
1) Embora tenhamos diferenciado os erros ARIMA, para avaliar a função de intervenção que era tecnicamente adequada usando a série diferenciada há algo que precisamos fazer para "voltar" a estimativa de ou de usar para ?
2) Está correto: Para determinar o ganho da intervenção, construí a intervenção partir dos parâmetros. Depois que eu tenho , comparo os valores ajustados do modelo fit4 (exp () para reverter o log) para exp (valores ajustados menos ) e determino que, durante o período observado, a intervenção resultou em 3342,37 unidades extras.
Esse processo é o correto para determinar o ganho geralmente de uma análise de intervenção?
int_vect1<-1*(seq_along(cds)==22)
wo<- 0.4392
delta<-0.4295
mt<-rep(0,length(int_vect1))
for (i in 1:length(int_vect1))
{
if (i>1)
{
mt[i]<-wo*int_vect1[i]+delta*mt[i-1]
}
}
mt
sum(exp(fitted(fit4)) - (exp(fitted(fit4) - mt)))
Respostas:
Supondo que este seja um exemplo de brinquedo:
Para responder sua primeira pergunta:
1) Embora tenhamos diferenciado os erros ARIMA, para avaliar a função de intervenção que era tecnicamente adequada usando a série diferenciada ▽ Xt, há algo que precisamos fazer para "voltar" a estimativa de ω0 ou δ do uso de ▽ Xt para Xt?
Ao diferenciar os dados, você deve diferenciar as variáveis de resposta / intervenção. Quando você apóia a diferença (transformação) após modelar, isso resolveria automaticamente a diferenciação ** Eu sei que isso é muito fácil quando você usa
SAS Proc ARIMA
. Eu não sei como fazer issoR
.Segunda questão:
2) Está correto: Para determinar o ganho da intervenção, construí a intervenção mt a partir dos parâmetros. Uma vez que eu tenho mt, comparo os valores ajustados do modelo fit4 (exp () para reverter o log) para exp (valores ajustados menos mt) e determino que, durante o período observado, a intervenção resultou em 3342,37 unidades extras.
Para determinar o ganho de intervenção, você precisa pegar o expoente e subtrair -1, isso daria a proporção ou o efeito incremental. Para demonstrar isso no seu caso, veja abaixo. No primeiro mês, o impacto foi de 55% das vendas originais e decai rapidamente. Cumulativamente, você tem 4580 unidades de efeito incremental (13 de outubro a fevereiro de 2014. ( Consultei o Princípio de Previsão e Aplicações de Delurgio P: 518. Há um excelente capítulo volumoso sobre análise de intervenção).
Alguém por favor corrija se esta metodologia está correta?
A intervenção por pulso + decaimento claramente não é suficiente neste caso, eu faria uma troca de nível permanente por pulso +, como mostra o diagrama (e) abaixo, que é do artigo clássico de Box e Tiao .
fonte
@forecaster Depois de permitir que a AUTOBOX identifique 3 outliers usando 29 valores (não é inapropriado na sua experiência), um modelo útil foi encontrado aqui . O gráfico ACF residual não sugere um modelo subespecificado . O gráfico Real / Ajuste / Previsão está com Ajuste / Previsão aqui . O Forecaster mencionou (corretamente) anteriormente como uma variável de pulso pode se transformar em uma variável de nível / etapa quando um coeficiente de denominador de quase 1,0 é introduzido. Ao encontrar duas mudanças de nível (a mais recente a partir de 9/2013) e um pulso em 10/2013, o modelo apresenta uma imagem mais clara. Em termos do impacto do pulso em 10/13, é simplesmente o valor do coeficiente. HTH
fonte