Почему модель Arima из Python statsmodel возвращает результаты, отличные от Arima из аналитической формулы

Я новичок в моделях Arima. Я работал с библиотекой Python: statsmodel, в частности с функцией Arima, получая следующие результаты для следующего фрагмента кода:

model = ARIMA(ts_log, order=(2, 1, 2))
results_ARIMA = model.fit(disp=False, transparams=True, trend='c',solver='newton')
predictions_ARIMA_diff = pd.Series(results_ARIMA.fittedvalues, copy=True)

plt.plot(ts_log -ts_log.shift(),label='Orginial differentiated serie')
plt.plot(predictions_ARIMA_diff, label ='Arima model from Python statsmodel')

Я хочу быть способным воспроизводить результаты графика, данные Python, поэтому я реализовал функцию для вычисления модели Arima, используя конкретные значения параметров. Это функция:

def ARIMA_from_parameters (alpha,beta,mu, TS,possible_noise=[]): #N = numero de medidas que quieres preveer
    TSdif = TS - TS.shift() # La primera que se forma es NaN
    TSdif.dropna(inplace=True) # Me la cargo

    Arima =[]
    p = len(alpha)
    q = len(beta)
    maxpq = max([p,q])

    noise = [gauss(0.0, 0.084) for i in range(0, len(TSdif))]  # S.D of innovations = 0.084

    #Initial terms
    for i in range(0,maxpq):
        Arima.append(TSdif[i])

    #Rest of terms
    for i in range(maxpq,len(TSdif)):
        sum_p = 0
        cnt_p = 0
        for e in alpha:
            cnt_p = cnt_p +1
            sum_p = sum_p +e*Arima[i-cnt_p]

        sum_q = 0
        cnt_q = 0

        sum_q =sum_q + noise[i]
        for e in beta:
            cnt_q = cnt_q + 1
            sum_q = sum_q + e * noise[i - cnt_q]

        Yt = sum_p + sum_q + mu
        Arima.append(Yt)

    #Transform to TS:
    Arima_TS = pd.Series(Arima, index=TSdif.index)

    return Arima_TS

Использование последней функции с теми же параметрами, что и у подобранной модели Arima, и вычисление шума, подобного гауссову, со средним значением 0 и стандартным значением, равным "SD инноваций" для подобранной модели (0,084), не только возвращает другие результаты, но и результат, заданный Python не использует начальные условия, как функция.

Результаты сюжета и оригинальная дифференцированная серия

Кто-нибудь может пролить свет на этот вопрос?

0 ответов

Другие вопросы по тегам