使用 statsmodels.tsa.arima 对 ARIMAX 系数的零限制
Zero-restrictions on ARIMAX coefficients using statsmodels.tsa.arima
我正在尝试将 p=96 和 q=96 的 ARIMAX 模型估计为仅非零系数(意味着所有滞后阶数 <96 的系数为零)。的文档
statsmodels.tsa.arima.model.ARIMA¶ 表示可以为滞后阶数 p 和 q 提供一个列表。我首先使用下面的代码尝试了这个。
p=[96]
q=p.copy()
d=0
order_tuple=(p,d,q)
for i in range(start,len(df_series)+1 -(96)):
endog= df_series.iloc[0:i-1,:]['1']
exog=df_series.iloc[0:i-1,:]['temp']
ARIMAX=ARIMA(endog.values, exog=exog.values, order=order_tuple)
ARIMAX_fit=ARIMAX.fit()
但是尝试拟合模型后出现如下错误:
--> 428 _check_estimable(len(self.endog), sum(order))
429 self.k_ar = k_ar = order[0]
430 self.k_ma = k_ma = order[1]
TypeError: unsupported operand type(s) for +: 'int' and 'list'
我也尝试过 pyflux ARIMAX 模型,但这不允许零限制。知道如何解决这个问题吗?
提前致谢!
看来您使用的是旧型号。您需要执行以下任一操作:
from statsmodels.tsa.arima.model import ARIMA
ARIMA(...)
或
import statsmodels.api as sm
sm.tsa.arima.ARIMA(...)
我正在尝试将 p=96 和 q=96 的 ARIMAX 模型估计为仅非零系数(意味着所有滞后阶数 <96 的系数为零)。的文档 statsmodels.tsa.arima.model.ARIMA¶ 表示可以为滞后阶数 p 和 q 提供一个列表。我首先使用下面的代码尝试了这个。
p=[96]
q=p.copy()
d=0
order_tuple=(p,d,q)
for i in range(start,len(df_series)+1 -(96)):
endog= df_series.iloc[0:i-1,:]['1']
exog=df_series.iloc[0:i-1,:]['temp']
ARIMAX=ARIMA(endog.values, exog=exog.values, order=order_tuple)
ARIMAX_fit=ARIMAX.fit()
但是尝试拟合模型后出现如下错误:
--> 428 _check_estimable(len(self.endog), sum(order))
429 self.k_ar = k_ar = order[0]
430 self.k_ma = k_ma = order[1]
TypeError: unsupported operand type(s) for +: 'int' and 'list'
我也尝试过 pyflux ARIMAX 模型,但这不允许零限制。知道如何解决这个问题吗?
提前致谢!
看来您使用的是旧型号。您需要执行以下任一操作:
from statsmodels.tsa.arima.model import ARIMA
ARIMA(...)
或
import statsmodels.api as sm
sm.tsa.arima.ARIMA(...)