我有2个1D np。数组X和Y,表示时间序列的值。我在尝试做时间序列预测。但是,当我应用以下代码时:
mod = RollingOLS(endog=Y, exog=X, window=75, min_nobs=None,expanding=True)
fit=mod.fit()
print("Akaike")
print(fit.aic)
我得到一个长度等于X和Y的数组,这使我认为建模不像我想的那样工作,因为我应该只得到一个值。
因此,我认为X和Y的格式是不充分的。如何解决这个问题?
根据文档,exog
应该是二维数组,[nobs, k]。
exog: array_likenobs x k数组,nobs是观测值的个数,k是回归量的个数。默认情况下不包含拦截,应该由用户添加。看到statsmodels.tools.add_constant。
您可能需要添加一个全是1的列。
import statsmodels.api as sm
X = sm.add_constant(X)
# if your statsmodel version is new
# X = statsmodels.tools.tools.add_constant(X)
https://www.statsmodels.org/stable/generated/statsmodels.regression.rolling.RollingOLS.html
https://www.statsmodels.org/stable/examples/notebooks/generated/rolling_ls.html
可能相关的问题
为什么我只能从statmodels OLS fit中获得一个参数