Introdução
objetivo é prever as taxas de crescimento anual para vários indicadores macroeconômicos (denotar um por ). Uma das tarefas é testar o desempenho da previsão de modelos de séries temporais rivais com e sem variáveis exógenas ( , uma matriz ). A lista de modelos rivais inclui:X t T × k
- Modelo AR (I) MA (é improvável que as taxas de crescimento anuais tenham "unidade Roo", embora este último seja assumido ou testado)
- modelo de regressão linear com erros de ARMA
- modelo de variável dependente defasada (modelo autorregressivo com variáveis exógenas)
- modelo de regressão linear
Onde é assumido como sendo um ruído branco forte, variação constante zero-média iid; e são polinômios de regressão automática (da ordem ) e média móvel (da ordem ) com - um operador de retrocesso (lag). A ( L ) B ( L ) p q L
Observe que o objetivo principal e o único é prever desempenho, portanto, quaisquer propriedades "boas" das estimativas de parâmetros são uma preocupação secundária. Tudo o que preciso é testar o mais parcimonioso, robusto às condições de partida, previsor. A decisão será tomada com uma das accuracy()
opções, mas primeiro eu preciso obter o material para a comparação.
Os modelos 1. e 2. são estimados pelo método de estimativa auto.arima()
padrão "CSS-ML"
. Os modelos 3. e 4. são estimados por mínimos quadrados comuns ( lm()
). é de cerca de quartos.40
Abordagens tentadas até agora
Para tornar os resíduos de facas de jack, a primeira abordagem indicada por "rolling" foi implementada. A partir de uma subamostra viável de dados de séries temporais, os parâmetros são estimados e uma previsão é feita pela função (EDIT: é a mesma sugestão que na primeira parte da resposta de Rob à segunda pergunta). Depois disso, um ponto é adicionado e as etapas de estimativa \ previsão são repetidas.predict()
Um ponto fraco de tais experiências é que o número de tempos (tamanho da amostra) usado para estimar os parâmetros é diferente. Embora eu queira testar a robustez das condições iniciais, mantendo o tamanho da amostra para estimativa fixo.
Tendo isso em mente, tentei definir os vários valores subsequentes (EDIT: para o intervalo ) em com valores ausentes (NA). Nos modelos 2.-4. isso também implica descartar as linhas subsequentes correspondentes na matriz de dados . A previsão para 3. e 4. é direta (o mesmo com as linhas de dados omitidas funciona bem). Todas as minhas preocupações são sobre os modelos 1. e 2.Y t X t X tpredict()
Com apenas a parte AR ( ), as previsões são feitas seqüencialmente . Mas com a presença de MA ( ) não se pode (?) Usar os parâmetros estimados diretamente. Do capítulo 3.3 de Brockwell e "Introdução às séries temporais e às previsões", segue-se que é necessário um algoritmo de inovação para estimar recursivamente o do sistema específico de equações que envolve parâmetros médios autoregressivos e médios móveis estimados. EDIT: esses são usados para fazer a previsão do ARMA, não os parâmetros originalmente estimados . No entanto, é observado no mesmo capítulo quese aproxima assintoticamente de se o processo é invertível. Não é evidente que 30-40 pontos sejam suficientes para que o resultado assintótico seja utilizado mesmo que seja invertível.
Notas: não quero restringir a zero, pois não faço isso em previsões reais fora da amostra. EDIT: também não que não esteja faltando um problema de imputação de valor, mas um experimento de previsão, que a trajetória não deve colmatar duas subamostras por isso imputando os valores ausentes.
Questões
- Será que
auto.arima()
executa corretamente com a presença de valores em falta dentro da amostra? [Já respondeu por Rob.] - (A parte realmente crucial deste post) Como prever corretamente (NÃO imputar) esses pontos perdidos do modelo ARMA quando e ? (Espero que haja maneiras já implementadas na linguagem R, mas simplesmente falta algo.)
EDIT: como os parâmetros para as peças ARMA são estimados corretamente, eu poderia legalmente reorganizar o objeto arima para incluir os parâmetros estimados e os dados apenas para a primeira subamostra e usar uma função de previsão?
EDIT2: Tentei modificar a mod
estrutura estimada - a previsão resultante predict.Arima
é idêntica (diferenças de precisão dupla) à previsão em que uso os coeficientes MA e AR estimados que prevêem diretamente como , sem . Isso era esperado, já que a representação do espaço de estado é fornecida com a mesma estimativa , não . Portanto, a única questão que resta é a diferença entre e significativa para influenciar as previsões pontuais? Espero que a resposta seja negativa.A ( G ) ( Y t - X t β ) + X t β + B ( G ) ε t θ j θ n , j θ j θ n , jKalmanForecast()
fonte
itsmr
biblioteca que implementa a previsão da peça ARMA do processo para os modelos 1. e 2., o tem média zero (uma vez que assume-se como média zero). No entanto, a saída de sugere que o resíduo não é de média zero, ou seja, não é de média zero. Preciso aumentar o termo de interceptação no objeto estimado , antes de fazer a previsão em facas? Preciso fazer o mesmo para as previsões comuns ? ε t Y t - X t βarima
Arima
Arima
itsmr
Arima
Respostas:
Não entendo por que você acha é um problema de previsão. É fácil prever usando um modelo ARIMA com termos de MA e você não precisa usar o algoritmo de inovações de Brockwell e Davis. Esse algoritmo é útil para estimativa ; em particular, na obtenção de valores iniciais ao otimizar a probabilidade.q>0
Para responder suas perguntas específicas:
auto.arima()
chamadasarima()
que usam uma representação do espaço de estados para calcular a probabilidade. Os valores ausentes são manipulados naturalmente em um formato de espaço de estado. Então, sim, eles são tratados corretamente.Os valores históricos ausentes não são estimados por
arima()
. Se você deseja prevê-los (ou seja, usando apenas dados passados), basta ajustar um modelo até o início da sequência ausente e, em seguida, prever a partir dele. Se você quiser calculá-los (usando dados antes e depois), será necessário usar um Kalman mais suave com base no modelo de espaço de estado equivalente. Um fudge alternativo que fornece quase os mesmos resultados é calcular a média das previsões usando dados até os últimos dados não ausentes, com os backcasts usando dados até os primeiros dados não ausentes após a sequência ausente.fonte