ValueError: вычисленные начальные коэффициенты MA не являются обратимыми. Вы должны вызвать обратимость

1

Я делаю проблему с временными рядами. когда я делаю AR-модель, все правильно.

# Import the module for estimating an ARMA model
from statsmodels.tsa.arima_model import ARMA

# Fit the data to an AR(p) for p = 0,...,6 , and save the BIC
BIC = np.zeros(7)
for p in range(7):
    mod = ARMA(data, order=(p,0))
    res = mod.fit()
# Save BIC for AR(p)    
    BIC[p] = res.bic

# Plot the BIC as a function of p
plt.plot(range(1,7), BIC[1:7], marker='o')
plt.xlabel('Order of AR Model')
plt.ylabel('Bayesian Information Criterion')
plt.show()

Однако, когда я делаю модель MA:

# Fit the data to an MA(q) for q = 0,...,6 , and save the BIC
BIC = np.zeros(7)
for q in range(7):

    mod = ARMA(data, order=(0,q))
    res = mod.fit()
# Save BIC for MA(q)    
    BIC[q] = res.bic


# Plot the BIC as a function of p
plt.plot(range(1,7), BIC[1:7], marker='o')
plt.xlabel('Order of MA Model')
plt.ylabel('Bayesian Information Criterion')
plt.show()

Я получу:

ValueError: The computed initial MA coefficients are not invertible
You should induce invertibility, choose a different model order, or you can
pass your own start_params.

После прочтения ответа от non Invertible модели ARIMA я решил ошибку:

# Fit the data to an MA(q) for q = 0,...,6 , and save the BIC
BIC = np.zeros(7)
for q in range(7):
    try:
        mod = ARMA(data, order=(0,q))
        res = mod.fit()
# Save BIC for MA(q)    
        BIC[q] = res.bic
    except:
        pass

# Plot the BIC as a function of p
plt.plot(range(1,7), BIC[1:7], marker='o')
plt.xlabel('Order of MA Model')
plt.ylabel('Bayesian Information Criterion')
plt.show()

Однако я действительно не понимаю, почему это можно решить, поэтому я хочу задать этот вопрос. Пусть кто-то даст полный ответ.

Теги:
time-series

1 ответ

0

Я споткнулся здесь, пытаясь найти решение обратимой проблемы для моей модели ARIMA (p, d, q). Я не слишком уверен, применимо ли это в вашем случае, но я нашел свое решение в терминах, которые я пытался ввести d = 0. тогда как я уже применил разницу первого порядка к входным значениям ts, чтобы сделать мою серию неподвижной. поэтому, когда я поставил d = 1, проблема обратимости была решена.

Надеюсь, это поможет. Благодарю.

  • 1
    Это не дает ответа на вопрос. Как только у вас будет достаточно репутации, вы сможете комментировать любой пост; вместо этого предоставьте ответы, которые не требуют разъяснений от автора.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню