Ho quattro diverse serie temporali di misurazioni orarie:
- Il consumo di calore all'interno di una casa
- La temperatura fuori casa
- La radiazione solare
- La velocità del vento
Voglio essere in grado di prevedere il consumo di calore all'interno della casa. C'è una chiara tendenza stagionale, sia su base annuale, sia su base giornaliera. Poiché esiste una chiara correlazione tra le diverse serie, voglio adattarle usando un modello ARIMAX. Questo può essere fatto in R, usando la funzione arimax dal pacchetto TSA.
Ho provato a leggere la documentazione su questa funzione e a leggere le funzioni di trasferimento, ma finora il mio codice:
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)
mi da:
dove la linea nera è il dato reale misurato e la linea verde è il mio modello montato in confronto. Non solo non è un buon modello, ma chiaramente qualcosa non va.
Devo ammettere che la mia conoscenza dei modelli ARIMAX e delle funzioni di trasferimento è limitata. Nella funzione arimax (), (per quanto ho capito), xtransf è la serie temporale esogena che voglio usare (usando le funzioni di trasferimento) per prevedere le mie serie storiche principali. Ma qual è la differenza tra xreg e xtransf davvero?
Più in generale, cosa ho fatto di sbagliato? Vorrei essere in grado di ottenere una misura migliore rispetto a quella ottenuta da lm (calore ~ temp radi vento * tempo).
Modifiche: in base ad alcuni dei commenti, ho rimosso il trasferimento e aggiunto invece 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)
dove dayy è il "numero dell'anno" e l'ora è l'ora del giorno. La temperatura è di nuovo la temperatura esterna. Questo mi dà il seguente risultato:
che è meglio, ma non quasi quello che mi aspettavo di vedere.