Eu tenho quatro séries temporais diferentes de medições horárias:
- O consumo de calor dentro de uma casa
- A temperatura fora de casa
- A radiação solar
- A velocidade do vento
Quero poder prever o consumo de calor dentro de casa. Existe uma clara tendência sazonal, tanto anualmente como diariamente. Como existe uma correlação clara entre as diferentes séries, desejo ajustá-las usando um modelo ARIMAX. Isso pode ser feito em R, usando a função arimax do pacote TSA.
Tentei ler a documentação desta função e ler as funções de transferência, mas até agora meu código:
regParams = ts.union(ts(dayy))
transferParams = ts.union(ts(temp))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams,xtransf=transferParams,transfer=list(c(1,1))
pred10 = predict(model10, newxreg=regParams)
me dá:
onde a linha preta é os dados reais medidos e a linha verde é meu modelo ajustado em comparação. Não é apenas um bom modelo, mas claramente algo está errado.
Admito que meu conhecimento dos modelos ARIMAX e das funções de transferência é limitado. Na função arimax (), (tanto quanto eu entendi), xtransf é a série temporal exógena que eu quero usar (usando funções de transferência) para prever minha principal série temporal. Mas qual é realmente a diferença entre xreg e xtransf?
De maneira mais geral, o que fiz de errado? Gostaria de conseguir um ajuste melhor do que o obtido com lm (heat ~ temp radi wind * time).
Edições: com base em alguns comentários, removi a transferência e adicionei o xreg:
regParams = ts.union(ts(dayy), ts(temp), ts(time))
model10 = arimax(heat,order=c(2,1,1),seasonal=list(order=c(0,1,1),period=24),xreg=regParams)
onde dayy é o "número do dia do ano" e time é a hora do dia. Temp é novamente a temperatura externa. Isso me dá o seguinte resultado:
o que é melhor, mas não é o que eu esperava ver.