2013-07-31 11 views
5

sto usando le fourier() e fourierf() funzioni in ottimo pacchetto di Ron Hyndman forecast in R. Guardando per verificare se gli stessi termini sono selezionati e utilizzati in fourier() e fourierf(), ho tracciato un alcuni dei termini di uscita.Fourier() vs fourierf() in R

Di seguito sono i dati originali utilizzando ts.plot(data). C'è una frequenza di 364 nelle serie temporali, FYI. data

Di seguito è riportato il grafico dei termini utilizzando fourier(data,3). Fondamentalmente, assomiglia a immagini speculari dei dati esistenti.

fourier

Guardando solo il termine sin1 dell'uscita, ancora una volta, abbiamo un po 'di variazione che mostra analoga a 364 giorni stagionalità in linea con i dati di cui sopra.

fourier2

Tuttavia, quando ho tracciare i risultati del Fourier previsioni utilizzando fourierf(data,3, 410) vedo i dati sottostanti. Appare molto più fluido rispetto ai termini forniti dalla funzione originale fourier. fourierf

Quindi, mi chiedo come i risultati di fourier() e fourierf() sono correlate. È possibile vedere solo un risultato consolidato di Fourier, in modo da poter vedere il risultato del sin o del coseno che si muove attraverso i dati esistenti e quindi attraverso il periodo di previsione? In caso contrario, come posso confermare che i termini creati da fourierf() corrispondono ai dati in-sample?

voglio usarlo in un auto.arima o glm funzione con altri regressori esterni come questo:

trainFourier<-fourier(data,3) 

trainFourier<-as.data.frame(trainFourier) 
trainFourier$exogenous<-exogenousData 
arima.object<-auto.arima(data, xreg=trainFourier) 

futureFourier<-fourierf(data,3, 410) 

fourierForecast<-forecast(arima.object, xreg=futureFourier, h=410) 

e vogliono essere completamente sicuri che l'auto.arima ha il raccordo corretto (utilizzando i termini da fourier()) a ciò che inserirò in xreg per forecast (che ha termini da una funzione diversa, ovvero ffourier()).

risposta

11

Calcolato il problema. Stavo usando entrambi i pacchetti fda e forecast. fda, che è per l'analisi e la regressione dei dati funzionali, ha la sua funzione fourier(). Se stacco fda, il mio mandato da S1 fourier(data,3) assomiglia a questo:

fourier()

che si allinea perfettamente con le previsioni di Fourier se uso ts.plot(c(trainFourier$S1,futureFourier$S1))

Morale della storia - guardare ciò che i pacchetti Supress gente!