У меня есть несколько файлов (на данный момент только 3 файла), которые содержат данные, собранные с 3 датчиков. Поведение сигнала такое же, как у экспоненциальной синусоиды , и я хотел бы внедрить эти сигналы в модели ARMA, ARIMA, ARMAX или ARIMAX в сигналы. У меня есть несколько вопросов:
Вопрос 1:
Я знаю, как реализовать модели временных рядов индивидуально, но меня беспокоят такие параметры модели, как порядок, я не уверен Как найти оптимальный модельный порядок для обеих моделей. Из того, что я понял, ордера могут быть получены из PACF (для модели AR) и ACF (для модели MA), где значения ордеров поступают из первого бара, который находится близко к критическим линиям предела. Однако после того, как я посмотрел несколько видеороликов о получении заказов, они упомянули, что самый высокий бар можно считать заказом на сюжет PACF, и оттуда я запутался. У меня следующий вопрос: как найти оптимальный порядок для модели временных рядов? (Обратите внимание: я пытался использовать AI C, однако обработка и нахождение порядка, в котором я увеличиваю диапазон значений, занимает много времени. Код можно найти ниже)
Код ниже представляет, как я получил заказы, наблюдая за графиками и вводя заказ в модель.
Полный код с графиками:
result = adfuller(process_y)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items():
print('\t%s: %.3f' % (key, value))
if result[0] < result[4]["5%"]:
print("Reject Ho - Time Series Signal is Stationary")
# process_y_pd = pd.Series(data=process_y)
d = 0
# Plotting ACF and PCAF to determine order for time series models:
plot_acf(x=process_y, lags=50)
plot_pacf(x=process_y, lags=50)
# plt.show()
plt.show(block=False)
plt.pause(5) # Pauses the program for 10 seconds
plt.close('all')
# fit model:
order_ARMA = (1, 1)
order_ARIMA = (1, d, 1)
model = ARIMA(process_y, order=order_ARIMA) # Used For ARIMA Model situation
model = ARMA(process_y, order=order_ARMA) # Used For ARMA Model situation
model_fitted = model.fit(transparams=True, disp=0)
print('The lag value chose is: %s' % model_fitted.k_ar)
print('The coefficients of the model are:\n %s' % model_fitted.params)
Участки ACF и PACF для получения модельного заказа
Участок PACF Участок ACF
AR Модель заказа MA Модель заказа
Код Раздел для нахождения оптимального заказа модели:
if result[0] < result[4]["5%"]:
print("Reject Ho - FRAN Time Series is Stationary")
# process_y_pd = pd.Series(data=process_y)
d = 0
# Plotting ACF and PCAF to determine order for time series models:
plot_acf(x=process_y, lags=50)
plot_pacf(x=process_y, lags=50)
# plt.show()
plt.show(block=False)
plt.pause(5) # Pauses the program for 10 seconds
plt.close('all')
# fit model:
# pick best order by aic
# smallest aic value wins
best_aic = np.inf
best_order = None
best_mdl = None
rng = range(20)
for i in rng:
for j in rng:
try:
model = smt.ARIMA(process_y, order=(i, d, j)).fit(method='mle', trend='nc')
tmp_aic = model.aic
if tmp_aic < best_aic:
best_aic = tmp_aic
best_order = (i, j)
best_mdl = model
except:
continue
print('aic: {:6.5f} | order: {}'.format(best_aic, best_order))
model = ARIMA(process_y,order=best_order) # Using Norm only
model_fitted = model.fit(transparams=True, disp=0)
print('The lag value chose is: %s' % model_fitted.k_ar)
print('The coefficients of the model are:\n %s' % model_fitted.params)
Вопрос 2:
Когда я попытался внедрить модели временных рядов в датчик 1 файла 2, я получил другое значение для порядка модели AR Model (график PACF), поэтому мой Второй вопрос: есть ли способ внедрить отдельные модели временного ряда для всех датчиков и файлов?
Вопрос 3:
Когда дело доходит до o Извлечение функций из модели. Как мне подойти к этому?
Вопрос 4:
Если мне нужно выбрать одну модель из других моделей временного ряда, как я могу это сделать? решить, какую модель будет целесообразно использовать для определенного случая?