2013-07-31 14 views
5

Używam fourier() i fourierf() funkcje w doskonałej forecast pakietu Ron Hyndmana R. Patrząc w celu sprawdzenia, czy te same terminy są wybierane i stosowane w fourier() i fourierf(), ja wykreślane kilka z warunków wyjściowych.Fouriera() vs fourierf() funkcja w R

Poniżej znajdują się oryginalne dane z użyciem ts.plot(data). W serii czasowej jest FYI o częstotliwości 364. data

Poniżej znajduje się wykres warunków z użyciem fourier(data,3). Zasadniczo wygląda jak lustrzane odbicie istniejących danych.

fourier

Patrząc tylko sin1 terminu wyjścia, znów mamy jakąś odmianę, która pokazuje podobną 364-dniowy sezonowości w zgodzie z powyższymi danymi. , Kiedy wykreślić wyniki Fouriera pogody

fourier2

Jednak stosując fourierf(data,3, 410) widzę poniższe dane. Wygląda o wiele bardziej gładko niż warunki zapewnione przez oryginalną funkcję fourier. fourierf

Zastanawiam się, w jaki sposób wyniki fourier() i fourierf() są powiązane. Czy można zobaczyć tylko jeden skonsolidowany wynik Fouriera, dzięki czemu można zobaczyć wynik grzechu lub cosinusu przechodząc przez istniejące dane, a następnie przez okres prognozowania? Jeśli nie, w jaki sposób mogę potwierdzić, że warunki utworzone przez fourierf() pasują do danych próbnych?

Chcę używać go w auto.arima lub glm funkcji z innych regresorów zewnętrznych tak:

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) 

i chcą być całkowicie pewien, że auto.arima ma odpowiednie dopasowanie (używając określenia z fourier()) do tego, co wstawię pod xreg dla forecast (który ma warunki z innej funkcji, tj. ffourier()).

Odpowiedz

11

Wykryliśmy problem. Używałem pakietów fda i forecast. fda, który służy do analizy i analizy danych funkcjonalnych, ma własną funkcję fourier(). Gdybym odłączyć fda, mój S1 termin od fourier(data,3) wygląda następująco:

fourier()

które linie ładnie z prognozą Fouriera Jeśli użyję ts.plot(c(trainFourier$S1,futureFourier$S1))

Morał z tej historii - obserwować, co się pakiety wyciszyć , ludzie!