Как разработать модели временных рядов для нескольких столбцов данных временных рядов? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть несколько файлов (на данный момент только 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:

Если мне нужно выбрать одну модель из других моделей временного ряда, как я могу это сделать? решить, какую модель будет целесообразно использовать для определенного случая?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...