Gostaria de combinar o previsto e o backcast (ou seja, os valores passados previstos) de um conjunto de dados de séries temporais em uma série temporal, minimizando o Erro de Previsão Quadrada Média.
Digamos que eu tenha séries temporais de 2001 a 2010 com uma lacuna para o ano de 2007. Consegui prever 2007 usando os dados de 2001-2007 (linha vermelha - chamada ) e fazer backcast usando os dados de 2008-2009 (azul claro linha - chame ).Y b
Gostaria de combinar os pontos de dados de e em um ponto de dados imputado Y_i para cada mês. Idealmente, eu gostaria de obter o peso modo a minimizar o Erro Médio de Previsão Quadrática (MSPE) de . Se isso não for possível, como eu encontraria a média entre os pontos de dados das duas séries temporais?Y b w Y i
Como um exemplo rápido:
tt_f <- ts(1:12, start = 2007, freq = 12)
tt_b <- ts(10:21, start=2007, freq=12)
tt_f
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 1 2 3 4 5 6 7 8 9 10 11 12
tt_b
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 10 11 12 13 14 15 16 17 18 19 20 21
Gostaria de obter (apenas mostrando a média ... Idealmente, minimizando o MSPE)
tt_i
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5
fonte
predict
função do pacote de previsão. No entanto, acho que vou usar o modelo de previsão da HoltWinters para prever e fazer backcast. Tenho séries temporais com pouco menos de 50 contagens e tentei a previsão de regressão de Poisson - mas, por algum motivo, com previsões muito fracas.NA
valores? Parece que tornar o MSPE no período de aprendizado pode ser enganoso, uma vez que os subperíodos são bem descritos por tendências lineares, mas no período perdido ocorre uma queda em algum lugar, e na verdade poderia ser qualquer ponto. Observe também que, como as previsões são de tendência colinear, sua média introduzirá duas quebras estruturais em vez de aparentemente uma.Respostas:
Supondo que você tenha os Erros de previsão ao quadrado da previsão e da backcast individualmente, eu recomendaria o seguinte: Seja w um vetor de comprimento 12, seja o mês em que você está interessado.
Agora w é o peso para a previsão e 1-w é o peso para o backcast.
fonte
s/w/m/
Seu objetivo é executar uma suavização de intervalo fixo (FI) da série temporal. O valor suavizado da observação no momento é definido como uma expectativa condicional onde a notação é para vector das observações de tempo para o tempo . Acima, supõe-se que o intervalo seja o intervalo que varia do tempo a , e é o comprimento de toda a série. O tempo está na lacuna e a expectativa pode ser escritat
O valor suavizado não possui a forma simples que você adivinha. Para uma série temporal estacionária gaussiana com estrutura de covariância conhecida, a estimativa de para na lacuna pode ser encontrada resolvendo um sistema linear. tYˆt t
Quando o modelo de série temporal pode ser colocado no formato State Space (SS), a suavização FI é uma operação padrão baseada na filtragem Kalman e pode ser feita, por exemplo, usando as funções R disponíveis. Você só precisa especificar que os valores na lacuna estão ausentes. O algoritmo de suavização estima o estado oculto que contém todas as informações relevantes sobre para na lacuna. Os modelos ARIMA podem ser colocados no formato SS.Y t tαt Yt t
Curiosamente, a suavização de FI pode ser escrita como uma combinação de dois filtros: um para a frente e outro para trás, levando a uma fórmula do tipo que você esperava, mas para a estimativa do estado oculto (previsão e backcast), mas não para a observação . Isso é conhecido como filtragem Rauch-Tung-Striebel .Y tαt Yt
Pelo menos nas versões multiplicativas, os procedimentos de previsão 'ad hoc', como Holt-Winters, se baseiam em modelos estocásticos, sem algoritmos FI simples, uma vez que não podem ser colocados na forma SS. A fórmula de suavização provavelmente pode ser aproximada usando o modelo SS, mas é muito mais simples usar modelos de séries temporais estruturais com transformações de log. As funções 'KalmanSmooth', 'tsSmooth' e 'StructTS' do pacote de estatísticas R podem fazer o trabalho. Você deve dar uma olhada nos livros de Harvey ou Durbin e Koopman citados nas páginas de ajuda da R. O algoritmo de suavização pode fornecer uma variação condicional para o estimadoYt e pode ser usado para criar intervalos de suavização, que geralmente tendem a ser maiores no meio do intervalo. Observe, no entanto, que a estimativa de modelos estruturais pode ser difícil.
fonte
Acho interessante a sua abordagem sugerida, de usar os meios dos modelos dianteiro e traseiro.
Vale ressaltar que, em qualquer sistema que exibe estrutura caótica, é provável que as previsões sejam mais precisas em períodos mais curtos. Esse não é o caso para todos os sistemas, por exemplo, um pêndulo amortecido pode ser modelado por uma função com o período errado; nesse caso, todas as previsões de médio prazo provavelmente estarão erradas, enquanto as de longo prazo serão todas muito preciso, pois o sistema converge para zero. Mas parece-me, pelo gráfico da pergunta, que essa pode ser uma suposição razoável a ser feita aqui.
Isso implica que é melhor confiarmos mais nos dados de previsão da parte anterior do período ausente e mais nos dados de conversão para a última parte. A maneira mais simples de fazer isso seria usar um peso linearmente decrescente para a previsão e o oposto para o back-cast:
Isso dá um pouco de peso ao backcast no primeiro elemento. Você também pode usar n-1, sem os subscritos no final, se quiser usar apenas o valor da previsão no primeiro ponto interpolado.
Não tenho seus dados, então vamos tentar isso no conjunto de dados AirPassenger em R. Vou remover um período de dois anos perto do centro:
E aí está a sua interpolação.
Claro, não é perfeito. Eu acho que isso é resultado dos padrões na parte anterior dos dados serem diferentes dos da última parte (o pico de julho a agosto não é tão forte nos anos anteriores). Mas, como você pode ver na imagem, é claramente melhor do que apenas a previsão ou a transmissão inversa. Imagino que seus dados possam obter resultados um pouco menos confiáveis, pois não há uma variação sazonal tão forte.
Meu palpite seria que você também poderia tentar isso, incluindo os intervalos de confiança, mas não tenho certeza da validade de fazê-lo da maneira mais simples possível.
fonte