tendência estocástica vs determinística / sazonalidade na previsão de séries temporais

16

Tenho um histórico moderado na previsão de séries temporais. Examinei vários livros de previsão e não vejo as seguintes perguntas abordadas em nenhum deles.

Eu tenho duas perguntas:

  1. Como eu determinaria objetivamente (via teste estatístico) se uma determinada série temporal tem:

    • Sazonalidade estocástica ou uma sazonalidade determinística
    • Tendência estocástica ou uma tendência determinística
  2. O que aconteceria se eu modelasse minhas séries temporais como uma tendência / sazonalidade determinística quando a série tivesse um componente claramente estocástico?

Qualquer ajuda para resolver essas questões seria muito apreciada.

Dados de exemplo para tendência:

7,657
5,451
10,883
9,554
9,519
10,047
10,663
10,864
11,447
12,710
15,169
16,205
14,507
15,400
16,800
19,000
20,198
18,573
19,375
21,032
23,250
25,219
28,549
29,759
28,262
28,506
33,885
34,776
35,347
34,628
33,043
30,214
31,013
31,496
34,115
33,433
34,198
35,863
37,789
34,561
36,434
34,371
33,307
33,295
36,514
36,593
38,311
42,773
45,000
46,000
42,000
47,000
47,500
48,000
48,500
47,000
48,900
previsor
fonte
Existem 4 estados possíveis da natureza. Não há solução analítica para essa questão, pois o espaço da amostra do modelo é relativamente ilimitado. Para responder empiricamente a essa pergunta irritante, ajudei a desenvolver o AUTOBOX autobox.com/cms . A AUTOBOX realiza um torneio para examinar todos os 4 desses casos e avaliar a qualidade dos 4 modelos resultantes em termos de necessidade e suficiência. Por que você não publica um exemplo de série temporal de sua escolha e eu publicarei os 4 resultados mostrando como esse problema foi resolvido.
IrishStat

Respostas:

15

1) Com relação à sua primeira pergunta, algumas estatísticas de testes foram desenvolvidas e discutidas na literatura para testar o nulo de estacionariedade e o nulo de uma raiz unitária. Alguns dos muitos documentos que foram escritos sobre esse assunto são os seguintes:

Relacionado à tendência:

  • Dickey, D. e Fuller, W. (1979a), Distribuição dos estimadores para séries temporais autoregressivas com raiz unitária, Journal of the American Statistical Association 74, 427-31.
  • Dickey, D. e Fuller, W. (1981), Estatísticas da razão de verossimilhança para séries temporais autoregressivas com uma raiz unitária, Econometrica 49, 1057-1071.
  • Kwiatkowski, D., Phillips, P., Schmidt, P. y Shin, Y. (1992), Testando a hipótese nula de estacionariedade contra a alternativa de uma raiz unitária: Qual a certeza de que séries temporais econômicas têm uma raiz unitária? , Journal of Econometrics 54, 159-178.
  • Phillips, P. y Perron, P. (1988), Testando uma raiz unitária na regressão de séries temporais, Biometrika 75, 335-46.
  • Durlauf, S. e Phillips, P. (1988), Tendências versus caminhadas aleatórias na análise de séries temporais, Econometrica 56, 1333-54.

Relacionado ao componente sazonal:

  • Hylleberg, S., Engle, R., Granger, C. y Yoo, B. (1990), Integração sazonal e cointegração, Journal of Econometrics 44, 215-38.
  • Canova, F. e Hansen, BE (1995), os padrões sazonais são constantes ao longo do tempo? um teste de estabilidade sazonal, Journal of Business and Economic Statistics 13, 237-252.
  • Franses, P. (1990), Teste para raízes de unidades sazonais em dados mensais, Relatório Técnico 9032, Econometric Institute.
  • Ghysels, E., Lee, H. e Noh, J. (1994), Teste de raízes unitárias em séries temporais sazonais. algumas extensões teóricas e uma investigação de Monte Carlo, Journal of Econometrics 62, 415-442.

O livro Banerjee, A., Dolado, J., Galbraith, J. e Hendry, D. (1993), co-integração, correção de erros e a análise econométrica de dados não estacionários, Advanced Texts in Econometrics. A Oxford University Press também é uma boa referência.

2) Sua segunda preocupação é justificada pela literatura. Se houver um teste de raiz unitária, a estatística t tradicional que você aplicaria em uma tendência linear não segue a distribuição padrão. Ver, por exemplo, Phillips, P. (1987), regressão de séries temporais com raiz unitária, Econometrica 55 (2), 277-301.

Se uma raiz unitária existe e é ignorada, a probabilidade de rejeitar o nulo de que o coeficiente de uma tendência linear é zero é reduzida. Ou seja, acabaríamos modelando uma tendência linear determinística com muita frequência para um determinado nível de significância. Na presença de uma raiz de unidade, devemos transformar os dados, levando diferenças regulares aos dados.

3) Para ilustração, se você usar R, poderá fazer a seguinte análise com seus dados.

x <- structure(c(7657, 5451, 10883, 9554, 9519, 10047, 10663, 10864, 
  11447, 12710, 15169, 16205, 14507, 15400, 16800, 19000, 20198, 
  18573, 19375, 21032, 23250, 25219, 28549, 29759, 28262, 28506, 
  33885, 34776, 35347, 34628, 33043, 30214, 31013, 31496, 34115, 
  33433, 34198, 35863, 37789, 34561, 36434, 34371, 33307, 33295, 
  36514, 36593, 38311, 42773, 45000, 46000, 42000, 47000, 47500, 
  48000, 48500, 47000, 48900), .Tsp = c(1, 57, 1), class = "ts")

Primeiro, você pode aplicar o teste Dickey-Fuller para o nulo de uma raiz de unidade:

require(tseries)
adf.test(x, alternative = "explosive")
#   Augmented Dickey-Fuller Test
#   Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.453
#   alternative hypothesis: explosive

e o teste KPSS para a hipótese nula reversa, estacionariedade contra a alternativa de estacionariedade em torno de uma tendência linear:

kpss.test(x, null = "Trend", lshort = TRUE)
#   KPSS Test for Trend Stationarity
#   KPSS Trend = 0.2691, Truncation lag parameter = 1, p-value = 0.01

Resultados: teste do ADF, no nível de significância de 5%, uma raiz unitária não é rejeitada; No teste KPSS, o nulo de estacionariedade é rejeitado em favor de um modelo com tendência linear.

Observação: o uso lshort=FALSEdo nulo do teste KPSS não é rejeitado no nível de 5%, no entanto, ele seleciona 5 atrasos; uma inspeção adicional não mostrada aqui sugeriu que escolher 1-3 lags é apropriado para os dados e leva a rejeitar a hipótese nula.

Em princípio, devemos nos guiar pelo teste para o qual fomos capazes de rejeitar a hipótese nula (e não pelo teste para o qual não rejeitamos (aceitamos) o nulo). No entanto, uma regressão da série original em uma tendência linear acaba não sendo confiável. Por um lado, o quadrado R é alto (acima de 90%), apontado na literatura como indicador de regressão espúria.

fit <- lm(x ~ 1 + poly(c(time(x))))
summary(fit)
#Coefficients:
#                 Estimate Std. Error t value Pr(>|t|)    
#(Intercept)       28499.3      381.6   74.69   <2e-16 ***
#poly(c(time(x)))  91387.5     2880.9   31.72   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 2881 on 55 degrees of freedom
#Multiple R-squared:  0.9482,   Adjusted R-squared:  0.9472 
#F-statistic:  1006 on 1 and 55 DF,  p-value: < 2.2e-16

Por outro lado, os resíduos são autocorrelacionados:

acf(residuals(fit)) # not displayed to save space

Além disso, o nulo de uma raiz unitária nos resíduos não pode ser rejeitado.

adf.test(residuals(fit))
#   Augmented Dickey-Fuller Test
#Dickey-Fuller = -2.0685, Lag order = 3, p-value = 0.547
#alternative hypothesis: stationary

Nesse ponto, você pode escolher um modelo a ser usado para obter previsões. Por exemplo, previsões baseadas em um modelo estrutural de série temporal e em um modelo ARIMA podem ser obtidas da seguinte maneira.

# StructTS
fit1 <- StructTS(x, type = "trend")
fit1
#Variances:
# level    slope  epsilon  
#2982955        0   487180 
# 
# forecasts
p1 <- predict(fit1, 10, main = "Local trend model")
p1$pred
# [1] 49466.53 50150.56 50834.59 51518.62 52202.65 52886.68 53570.70 54254.73
# [9] 54938.76 55622.79

# ARIMA
require(forecast)
fit2 <- auto.arima(x, ic="bic", allowdrift = TRUE)
fit2
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift
#      736.4821
#s.e.  267.0055
#sigma^2 estimated as 3992341:  log likelihood=-495.54
#AIC=995.09   AICc=995.31   BIC=999.14
#
# forecasts
p2 <- forecast(fit2, 10, main = "ARIMA model")
p2$mean
# [1] 49636.48 50372.96 51109.45 51845.93 52582.41 53318.89 54055.37 54791.86
# [9] 55528.34 56264.82

Uma trama das previsões:

par(mfrow = c(2, 1), mar = c(2.5,2.2,2,2))
plot((cbind(x, p1$pred)), plot.type = "single", type = "n", 
  ylim = range(c(x, p1$pred + 1.96 * p1$se)), main = "Local trend model")
grid()
lines(x)
lines(p1$pred, col = "blue")
lines(p1$pred + 1.96 * p1$se, col = "red", lty = 2)
lines(p1$pred - 1.96 * p1$se, col = "red", lty = 2)
legend("topleft", legend = c("forecasts", "95% confidence interval"), 
  lty = c(1,2), col = c("blue", "red"), bty = "n")
plot((cbind(x, p2$mean)), plot.type = "single", type = "n", 
  ylim = range(c(x, p2$upper)), main = "ARIMA (0,1,0) with drift")
grid()
lines(x)
lines(p2$mean, col = "blue")
lines(ts(p2$lower[,2], start = end(x)[1] + 1), col = "red", lty = 2)
lines(ts(p2$upper[,2], start = end(x)[1] + 1), col = "red", lty = 2)

previsões de tendência

As previsões são semelhantes nos dois casos e parecem razoáveis. Observe que as previsões seguem um padrão relativamente determinístico semelhante a uma tendência linear, mas não modelamos explicitamente uma tendência linear. O motivo é o seguinte: i) no modelo de tendência local, a variação do componente de inclinação é estimada como zero. Isso transforma o componente de tendência em uma deriva que tem o efeito de uma tendência linear. ii) ARIMA (0,1,1), um modelo com desvio é selecionado em um modelo para a série diferenciada. O efeito do termo constante em uma série diferenciada é uma tendência linear. Isso é discutido neste post .

Você pode verificar se, se for escolhido um modelo local ou um ARIMA (0,1,0) sem desvio, as previsões serão uma linha horizontal reta e, portanto, não terão nenhuma semelhança com a dinâmica observada dos dados. Bem, isso faz parte do quebra-cabeça dos testes de raiz unitária e dos componentes determinísticos.

Edição 1 (inspeção de resíduos): a autocorrelação e o ACF parcial não sugerem uma estrutura nos resíduos.

resid1 <- residuals(fit1)
resid2 <- residuals(fit2)
par(mfrow = c(2, 2))
acf(resid1, lag.max = 20, main = "ACF residuals. Local trend model")
pacf(resid1, lag.max = 20, main = "PACF residuals. Local trend model")
acf(resid2, lag.max = 20, main = "ACF residuals. ARIMA(0,1,0) with drift")
pacf(resid2, lag.max = 20, main = "PACF residuals. ARIMA(0,1,0) with drift")

ACF-PACF

Como o IrishStat sugeriu, também é aconselhável verificar a presença de discrepâncias. Dois outliers aditivos são detectados usando o pacote tsoutliers.

require(tsoutliers)
resol <- tsoutliers(x, types = c("AO", "LS", "TC"), 
  remove.method = "bottom-up", 
  args.tsmethod = list(ic="bic", allowdrift=TRUE))
resol
#ARIMA(0,1,0) with drift         
#Coefficients:
#         drift        AO2       AO51
#      736.4821  -3819.000  -4500.000
#s.e.  220.6171   1167.396   1167.397
#sigma^2 estimated as 2725622:  log likelihood=-485.05
#AIC=978.09   AICc=978.88   BIC=986.2
#Outliers:
#  type ind time coefhat  tstat
#1   AO   2    2   -3819 -3.271
#2   AO  51   51   -4500 -3.855

Observando o ACF, podemos dizer que, no nível de significância de 5%, os resíduos também são aleatórios nesse modelo.

par(mfrow = c(2, 1))
acf(residuals(resol$fit), lag.max = 20, main = "ACF residuals. ARIMA with additive outliers")
pacf(residuals(resol$fit), lag.max = 20, main = "PACF residuals. ARIMA with additive outliers")

insira a descrição da imagem aqui

Nesse caso, a presença de possíveis discrepantes não parece distorcer o desempenho dos modelos. Isso é suportado pelo teste de Jarque-Bera para normalidade; o nulo de normalidade nos resíduos dos modelos iniciais ( fit1, fit2) não é rejeitado no nível de significância de 5%.

jarque.bera.test(resid1)[[1]]
# X-squared = 0.3221, df = 2, p-value = 0.8513
jarque.bera.test(resid2)[[1]]
#X-squared = 0.426, df = 2, p-value = 0.8082

Editar 2 (gráfico de resíduos e seus valores) É assim que os resíduos se parecem:

resíduos

E estes são seus valores em um formato csv:

0;6.9205
-0.9571;-2942.4821
2.6108;4695.5179
-0.5453;-2065.4821
-0.2026;-771.4821
0.1242;-208.4821
0.1909;-120.4821
-0.0179;-535.4821
0.1449;-153.4821
0.484;526.5179
1.0748;1722.5179
0.3818;299.5179
-1.061;-2434.4821
0.0996;156.5179
0.4805;663.5179
0.8969;1463.5179
0.4111;461.5179
-1.0595;-2361.4821
0.0098;65.5179
0.5605;920.5179
0.8835;1481.5179
0.7669;1232.5179
1.4024;2593.5179
0.3785;473.5179
-1.1032;-2233.4821
-0.3813;-492.4821
2.2745;4642.5179
0.2935;154.5179
-0.1138;-165.4821
-0.8035;-1455.4821
-1.2982;-2321.4821
-1.9463;-3565.4821
-0.1648;62.5179
-0.1022;-253.4821
0.9755;1882.5179
-0.5662;-1418.4821
-0.0176;28.5179
0.5;928.5179
0.6831;1189.5179
-1.8889;-3964.4821
0.3896;1136.5179
-1.3113;-2799.4821
-0.9934;-1800.4821
-0.4085;-748.4821
1.2902;2482.5179
-0.0996;-657.4821
0.5539;981.5179
2.0007;3725.5179
1.0227;1490.5179
0.27;263.5179
-2.336;-4736.4821
1.8994;4263.5179
0.1301;-236.4821
-0.0892;-236.4821
-0.1148;-236.4821
-1.1207;-2236.4821
0.4801;1163.5179
javlacalle
fonte
1
Você verificou se os resíduos de seus modelos eram aleatórios, ou seja, não existem valores extremos ou estrutura ARIMA, necessários para que o teste de significância dos coeficientes estimados seja significativo. Observe que, se você tiver discrepâncias nos resíduos, o ACF não terá sentido, pois a variação do erro inchado leva a um ACF subestimado. Você pode fornecer gráficos dos erros que provam / sugerem aleatoriedade, caso contrário, suas conclusões sobre os resíduos não correlacionados podem ser falsas.
IrishStat
Definitivamente, uma análise completa requer a inspeção dos resíduos. Limitei minha resposta a citar algumas ferramentas que podem ser usadas para aplicar os testes que o "previsor" estava perguntando e ilustrava seu uso. Fico feliz em saber que você está interessado em mais detalhes; editei minha pergunta.
Javlacalle
Eu pedi um gráfico de tempo dos resíduos. Você pode fornecê-los e também fornecer os resíduos para que eu possa processá-los com a AUTOBOX para confirmar que eles estão livres de estrutura evidenciada. O teste JB não é preferido ao testar tendências de pulsos, mudanças de nível, pulsos sazonais e / ou hora local em um conjunto de dados, embora a presença desses tipos de estrutura possa desencadear uma rejeição da suposição de normalidade. A ideia de que, se o nulo não for rejeitado, é uma prova de sua aceitação pode ser perigosa. Por favor, veja unc.edu/~jbhill/tsay.pdf
IrishStat
1
Obrigado. Enviei os 57 resíduos e 5 deles foram provisoriamente sinalizados como excepcionais. Em ordem de importância (51,3,27,52 e 48). Seu gráfico suporta visualmente esses pontos. Os erros resultantes não exibem violação da aleatoriedade e subsequentemente nenhum ACF significativo. Para ajustar seus valores observados para acomodar a detecção de anomalias, use o seguinte: + [X1 (T)] [(- 4494,5)]: PULSO 51 + [X2 (T)] [(+ 4937,5)]: PULSO 3 + [X3 (T)] [(+ 4884,5)]: PULSO 27 + [X4 (T)] [(+ 4505,5)]: PULSO 52 + [X5 (T)] [(+ 3967,5)]: PULSO 48
IrishStat
1
@B_Miner Normalmente, você começará examinando a função de autocorrelação dos resíduos. Se as autocorrelações forem significativas e grandes para pedidos grandes (ou seja, o ACF não decai exponencialmente para zero), considere aplicar um teste de raiz unitária nos resíduos. Se a análise dos resíduos sugerir a existência de raiz unitária, isso significa que você provavelmente deve fazer as primeiras diferenças duas vezes nos dados originais (ou seja, fazer as diferenças novamente nas séries diferenciadas).
Javlacalle
4

Com relação aos dados não sazonais ... As tendências podem ser de duas formas y (t) = y (t − 1) + θ0 (A) Tendência estocástica ou Y (t) = a + bx1 + cx2 (B) determinística Tendência etc, onde x1 = 1,2,3,4 .... te x2 = 0,0,0,0,0,1,2,3,4, portanto, uma tendência se aplica às observações 1-te uma segunda tendência aplica-se às observações 6 a t.

Sua série não sazonal continha 29 valores. Usei o AUTOBOX, um software que eu havia ajudado a desenvolver de maneira totalmente automática. A AUTOBOX é um procedimento transparente, pois detalha cada etapa do processo de modelagem. Um gráfico das séries / valores ajustados / previsões é apresentado aqui insira a descrição da imagem aqui. O uso da AUTOBOX para formar um modelo do tipo A levou ao seguinte insira a descrição da imagem aqui. A equação é apresentada novamente aqui insira a descrição da imagem aqui. As estatísticas do modelo são insira a descrição da imagem aqui. Uma plotagem dos resíduos está aqui insira a descrição da imagem aquienquanto a tabela de valores previstos está aqui insira a descrição da imagem aqui. A restrição da AUTOBOX para um modelo do tipo B levou a AUTOBOX a detectar uma tendência aumentada no período 14 :. insira a descrição da imagem aqui insira a descrição da imagem aquiinsira a descrição da imagem aqui!insira a descrição da imagem aquiinsira a descrição da imagem aquiinsira a descrição da imagem aqui

Em termos de comparação de modelos: Como o número de observações ajustadas difere (26 e 29, respectivamente), não é possível usar métricas padrão (isto é, quadrado r, erro padrão dev, AIC etc.) para determinar a dominância, embora neste caso o aceno seja vá para A. Os resíduos de A são melhores devido à estrutura AR (2). As previsões de B são um pouco agressivas, enquanto o padrão das previsões A é mais intuitivo. Pode-se conter quatro observações e avaliar a precisão da previsão para uma previsão de 1 período a partir de 4 origens distintas (25,26,27 e 28).

IrishStat
fonte
2Estatísticas irlandesas para uma excelente resposta. Li que alguns combinavam outras tendências estocásticas e determinísticas que são yt = y (t-1) + a + bt = ct? isso seria útil
forecaster
A forma do modelo y (t) = B0 + B1 * t + a (t) [thetha / phi] entra em colapso se phi é dito [1-B], pois as frações de compensação diferem essencialmente a variável t, produzindo uma colisão constante com B0. Em outras palavras, a estrutura ARIMA, associada a indicadores de tempo, pode causar estragos. O modelo que você especificou é calculável, mas definitivamente não é uma abordagem preferida (falta de endogeneidade, talvez!). Alguém mais lendo isso pode comentar pode ajudar nisso. Não é um subconjunto próprio de uma função de transferência i.imgur.com/dv4bAts.png
IrishStat