Tengo cuatro series temporales diferentes de mediciones horarias:
- El consumo de calor dentro de una casa
- La temperatura fuera de la casa
- La radiación solar
- La velocidad del viento
Quiero poder predecir el consumo de calor dentro de la casa. Hay una clara tendencia estacional, tanto a nivel anual como diario. Como hay una clara correlación entre las distintas series, quiero ajustarlas mediante un modelo ARIMAX. Esto se puede hacer en R, utilizando la función arimax del paquete TSA.
He intentado leer la documentación de esta función, y leer sobre las funciones de transferencia, pero hasta ahora, mi 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 da:
donde la línea negra son los datos reales medidos, y la línea verde es mi modelo ajustado en comparación. No sólo no es un buen modelo, sino que claramente algo está mal.
Reconozco que mis conocimientos sobre los modelos ARIMAX y las funciones de transferencia son limitados. En la función arimax(), (por lo que he entendido), xtransf es la serie temporal exógena que quiero utilizar (mediante funciones de transferencia) para predecir mi serie temporal principal. Pero, ¿cuál es la diferencia entre xreg y xtransf realmente?
En general, ¿qué he hecho mal? Me gustaría ser capaz de obtener un mejor ajuste que el logrado a partir de lm(heat ~ temp radio viento*tiempo).
Editado: Basándome en algunos de los comentarios, he eliminado la transferencia y he añadido xreg en su lugar:
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)
donde díay es el "número de día del año", y hora es la hora del día. Temp es de nuevo la temperatura exterior. Esto me da el siguiente resultado:
que es mejor, pero no es lo que esperaba ver.