функция fourier () vs fourierf () в R

Я использую функции fourier() и fourierf() в отличном пакете forecast Рона Хайндмана в R. Чтобы проверить, выбраны ли и используются ли одни и те же термины в fourier() и fourierf(), я построил несколько выходных терминов.

Ниже приведены исходные данные с использованием ts.plot(data). Во временном ряду частота равна 364, к вашему сведению. данные

Ниже приведен график терминов, использующих fourier(data,3). По сути, это похоже на зеркальное отображение существующих данных.

fourier

Рассматривая только термин sin1 выходных данных, мы снова получаем некоторую вариацию, которая показывает аналогичную 364-дневную сезонность в соответствии с данными выше.

fourier2

Однако, когда я строю результаты прогноза Фурье с использованием fourierf(data,3, 410), я вижу следующие данные. Это кажется гораздо более гладким, чем условия, предусмотренные исходной функцией fourier. fourierf

Итак, мне интересно, как связаны результаты fourier() и fourierf(). Можно ли просто увидеть один консолидированный результат Фурье, чтобы вы могли видеть результат с синусом или косинусом, перемещающийся по существующим данным, а затем по периоду прогнозирования? Если нет, как я могу подтвердить, что условия, созданные fourierf(), соответствуют данным в выборке?

Я хочу использовать его в функции auto.arima или glm с другими внешними регрессорами, подобными этому:

 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)

и хочу быть полностью уверенным, что auto.arima правильно соответствует (используя термины из fourier()) тому, что я добавлю в xreg для forecast (в котором есть термины из другой функции, то есть ffourier()).


person Bryan    schedule 31.07.2013    source источник


Ответы (1)


Разобрался в проблеме. Я использовал оба пакета: fda и forecast. fda, предназначенный для функционального анализа и регрессии данных, имеет свою собственную fourier() функцию. Если я отсоединю fda, мой член S1 от fourier(data,3) будет выглядеть так:

fourier ()

что хорошо согласуется с прогнозом Фурье, если я использую ts.plot(c(trainFourier$S1,futureFourier$S1))

Мораль истории - смотрите, что ваши пакеты подавляют, ребята!

person Bryan    schedule 31.07.2013