Processos estacionários

Um processo é estacionário se todas as características do comportamento do processo não são alterados no tempo, ou seja, o processo se desenvolve aleatoriamente no tempo em torno da média, de modo que a escolha de uma origem dos tempos não é importante (suas propriedades não dependem do momento em que foi observada). A série estacionária (ou convergente) é o oposto da série não estacionária (ou divergente), onde ocorrem tendências ascendentes e descendentes e portanto a média e a variância são funções do tempo.

A classe dos modelos ARIMA é capaz de descrever de maneira satisfatória séries estacionárias e séries não estacionárias, desde que não apresentem um comportamento explosivo. Os processos estacionários homogêneos possuem o nível e/ou inclinação mudando com o decorrer do tempo ou também flutuando ao redor de um nível em um certo período, mas depois muda de nível e flutua ao redor de outro nível, e assim por diante.

Testes

Para verificar se uma série é estacionária, realiza-se um estudo da existência de alguma raiz dos operadores de retardos (utilizados em modelos de médias móveis) dentro do círculo unitário (denominada raiz unitária ou unit root). Um processo não-estacionário tem uma raiz unitária se 1 é raiz da equação característica do processo. Se as outras raízes da equação característica ocorrem dentro do círculo unitário – ou seja, têm um módulo (valor absoluto) menor que um –, então a primeira diferença do processo é estacionária.

Existem testes de raiz unitária que baseiam-se no seguinte teste de hipóteses:

  • H0 (hipotese nula): Existe pelo menos uma raiz dentro do círculo unitário
  • H1: Não existem raízes dentro do círculo unitário

No R, o pacote URCA possui as funções ur.df() e ur.kpss() que realizam os testes ADF e KPSS, respectivamente.

O teste de Dickey-Fuller Aumentado (ADF) testa a hipótese nula de se uma raiz unitária está presente em um modelo autorregressivo. A hipótese alternativa é diferente dependendo de qual versão do teste é usada: geralmente é estacionário, estacionário com intercepto (“drift”) ou estacionário com tendência (“trend”). Considerando que seja possível decompor a série em componentes de intercepto, tendência, número de defasagens e o coeficiente de presença de raiz unitária (delta), pode-se definir um estimador baseado em delta.

A função ur.df() realiza o cálculo dessa estatística. Ela recebe os parâmetros “type” (“none”, “drift” ou “trend”) e “selectlags”, que define a forma de seleção da defasagem (“Fixed”, “AIC” ou “BIC”) – no caso de “fixed”, deve-se usar o parâmetro “lags” com um número inteiro. A defasagem (ou lag) funciona da seguinte forma: para lag = 2, são calculadas as diferenças entre o terceiro e o primeiro valor, entre o quarto e o segundo valor, entre o quinto e o terceiro valor etc. Utilizando o comando dentro das funções print(summary()), são impressos na tela mais detalhes e o valor da estatística.

O resultado é um número negativo. Quanto mais negativo for, mais forte a rejeição da hipótese de que existe uma raiz unitária em algum nível de confiança – ou seja, mais distante de ser um processo estacionário.

Os valores críticos da estatística foram tabelados por Dickey e Fuller através de simulação Monte Carlo e variam nos casos de presença somente de intercepto (caso A), presença somente de tendência (caso B) e presença de ambos (caso C). Deve-se comparar o valor obtido com uma tabela com valores críticos conforme o caso, número de amostras (linhas) e as probabilidades de rejeição da hipótese nula (colunas) – fonte:

n1%5%10%90%95%99%
Caso A25-2.66-1.95-1.600.921.332.16
(sem constante50-2.62-1.95-1.610.911.312.08
sem tendência)100-2.60-1.95-1.610.901.292.03
250-2.58-1.95-1.610.891.292.01
500-2.58-1.95-1.610.891.282.00
>500-2.58-1.95-1.610.891.282.00
Caso B25-3.75-3.00-2.62-0.370.000.72
(constante50-3.58-2.93-2.60-0.40-0.030.66
sem tendência)100-3.51-2.89-2.58-0.42-0.050.63
250-3.46-2.88-2.57-0.42-0.060.62
500-3.44-2.87-2.57-0.43-0.070.61
>500-3.43-2.86-2.57-0.44-0.070.60
Caso C25-4.38-3.60-3.24-1.14-0.80-0.15
(constante50-4.15-3.50-3.18-1.19-0.87-0.24
tendência)100-4.04-3.45-3.15-1.22-0.90-0.28
250-3.99-3.43-3.13-1.23-0.92-0.31
500-3.98-3.42-3.13-1.24-0.93-0.32
>500-3.96-3.41-3.12-1.25-0.94-0.33

Por exemplo, se o valor obtido para 50 observações com tendência (caso C) for de -4.57, ao comparar com a tabela, observa-se que é mais negativo que -3.50. Então, no nível de 95% a hipótese nula de uma raiz unitária será rejeitada, ou seja, é pouco provável possuir uma raiz e portanto pouco provável ser estacionário.

Série temporal (exemplo A)
Série temporal (exemplo A)

Outro exemplo, utilizando os dados da série temporal do exemplo A: considerando o mesmo valor de n, caso o valor do teste for de 0.23 no caso B, têm-se no nível entre 1% e 5% de que a hipótese nula seja rejeitada, ou seja, como é pouco provável rejeitar a hipótese nula, é muito provável existir uma raiz unitária e portanto é muito provável ser um processo estacionário.

O teste de Phillips-Perron (PP) é uma generalização do teste de Dickley-Fuller para os casos em que os erros são correlacionados e, possivelmente, heterocedásticos.

O teste KPSS (criado por Denis Kwiatkowski , Peter C. B. Phillips, Peter Schmidt e Yongcheol Shin) possui hipóteses diferentes dos testes anteriores:

  • H0: “A série é estacionária”
  • H1: “A série apresenta raiz unitária”

Além disso, a ausência de uma raiz unitária não é uma prova de estacionariedade, e sim de que possui uma tendência somente em função do tempo que pode ser removida para restar apenas um processo estacionário.

Supondo que seja possível decompor a série em componentes de tendência, passeio aleatório e erro, considerando seus resíduos em uma regressão, é possível determinar um estimador para a variância dos erros nesta regressão.

A função ur.kpss() realiza o cálculo dessa estatística. Ela recebe os parâmetros “type” com o tipo da parte determinística (constante “mu” ou constante com tendência “tau”) e opcionalmente “lags”, com o número máximo de defasagens usadas para a correção do termo de erro: “short”, “long” ou “nil” (sem correção de erro). Utilizando o comando dentro das funções print(summary()), são impressos na tela mais detalhes e o valor da estatística.

Aqui também existe uma tabela com os valores críticos para o teste KPSS, considerando os valores para mu e tau – fonte:

1%2.5%5%10%
mu0.7390.5740.4630.347
tau0.2160.1760.1460.119

Por exemplo, considerando o caso “tau” e valor da estatística em 0.3544, este é maior que os valores críticos tabelados para esse caso. Assim, deve-se rejeitar a hipótese nula, ou seja, é pouco provável a série ser estacionária.

Voltando à série temporal do exemplo A: para o caso mu e valor de teste 0.2203, como é menor que os valores tabelados, não se deve rejeitar a hipótese nula, ou seja, é muito provável que a série seja estacionária.

Note que, em todos os testes, deve-se saber se existe tendência – veja mais sobre esse tópico clicando no link.

Transformação

A maioria dos procedimentos de análise estatística de séries temporais supõe que estas sejam estacionárias. Assim, será necessário transformar os dados originais se estes não formam uma série estacionária. A transformação mais comum consiste em tomar diferenças sucessivas da série original, até se obter uma série estacionária – geralmente uma ou duas diferenças são suficientes. Esse procedimento é normalmente utilizado para remover tendências.

Uma primeira diferença é definida com a subtração entre o valor em um momento e no momento anterior. Se um processo for estacionário de segunda ordem, ele será dito estritamente estacionário. A n-ésima diferença de uma série temporal Z(t) é:

diferencas

Para tornar a série estacionária deve-se tomar diferenças quantas vezes for necessário, até atingir estacionariedade – são chamadas de séries não estacionárias homogêneas. Um modelo é estacionário se, para todo t, tem-se os valores de média, variância e covariâncias constantes. Por exemplo, quando a série oscila ao redor de um nível e salta para outro, basta uma diferença para torná-la estacionária; se a série oscila em uma direção e depois muda, são necessárias duas diferenças para ficar estacionária.

No R, uma ou mais diferenças podem ser realizadas através da função diff(). Como argumentos, usar a série temporal, mas é possível também definir o número de diferenças (parâmetro “differences”) e o lag (parâmetro “lags”) – o padrão é usar uma diferença e lag igual a 1. Conforme a opção de modelo utilizado, esse cálculo de diferenças já está incluso como um parâmetro de entrada da função que calcula o modelo (por exemplo, a função Arima do pacote forecast recebe os parâmetros p, d e q, referentes à auto-regressão, diferenças e médias móveis, respectivamente).

Modelos

Para tentar representar os dados através de uma função matemática, existem os modelos paramétricos para séries temporais, ou seja, modelos que o número de parâmetros é finito. Os mais frequentemente usados são os modelos de erro (ou de regressão), os modelos autorregressivos e de médias móveis (ARMA) e os modelos autorregressivos integrados e de médias móveis (ARIMA). A função de autocorrelação é utilizada para identificarmos um modelo adequado para a série temporal – veja mais no post sobre modelo ARIMA.

Fontes

5 comments

    1. Oi Breno,
      Eu olharia para o tipo dos erros para escolher um. Geralmente, o teste Adf é usado quando os erros são homocedásticos e o teste PP, para erros heteroscedásticos.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.