Я работаю над модулем оценки, где мы вычисляем изменения сезонности и прогнозируем.Ранее для оценки мы использовали фиксированные синусоидальные функции 5-го порядка.Формула была следующей:
doy_seasonality = exp(z[1]*sin(2*pi*doy/365)+z[2]*cos(2*pi*doy/365)
+z[3]*sin(4*pi*doy/365)+ z[4]*cos(4*pi*doy/365)
+z[5]*sin(6*pi*doy/365)+ z[6]*cos(6*pi*doy/365)
+z[7]*sin(8*pi*doy/365)+ z[8]*cos(8*pi*doy/365)
+ z[9]*sin(10*pi*doy/365)+ z[10]*cos(10*pi*doy/365))
Теперь мы попробовали некоторые модификации в нашей модели.Используя быстрое преобразование Фурье, мы можем генерировать заказы для тригонометрических функций автоматически.
Например, в моем текущем наборе данных у меня есть следующий массив заказов.
order_FFT = [2, 6, 10, 24],
, такой, что
order_FFT[0] = 2
order_FFT[1] = 6
order_FFT[2] = 10
order_FFT[3] = 24
Здесь будет 4 заказа.С некоторым другим набором данных может быть более или менее нет.заказов.Поэтому мне нужно определить цикл for, чтобы формула была изменена.
С моим текущим набором данных и соответствующим массивом orders_FFT цикл for должен выполнить следующую формулу:
doy_seasonality = exp(z[1]*sin(2*pi*doy/365)+z[2]*cos(2*pi*doy/365)
+z[3]*sin(6*pi*doy/365)+ z[4]*cos(6*pi*doy/365)
+z[5]*sin(10*pi*doy/365)+ z[6]*cos(10*pi*doy/365)
+z[7]*sin(24*pi*doy/365)+ z[8]*cos(24*pi*doy/365)
, котораяв основном означает
doy_seasonality = exp(z[1]*sin(order_FFT[0]*pi*doy/365)+z[2]*cos(order_FFT[0]*pi*doy/365)
+z[3]*sin(order_FFT[1]*pi*doy/365)+ z[4]*cos(order_FFT[1]*pi*doy/365)
+z[5]*sin(order_FFT[2]*pi*doy/365)+ z[6]*cos(order_FFT[2]*pi*doy/365)
+z[7]*sin(order_FFT[3]*pi*doy/365)+ z[8]*cos(order_FFT[3]*pi*doy/365)
Я в растерянности, пытаясь выяснить код цикла for для этого.Извините, что я не могу показать свои усилия здесь.