【问题标题】:Why is statsmodels select_order function different from params for AR model?为什么 statsmodels select_order 函数与 AR 模型的参数不同?
【发布时间】:2017-04-12 17:18:28
【问题描述】:
import pandas as pd
import numpy as np
import statsmodels.tsa.api as smt
import pandas_datareader.data as web   

start = '2007-01-01'
end = '2015-01-01'
get_px = lambda x: web.DataReader(x, 'yahoo', start=start, end=end)['Adj Close']    
symbols = ['SPY','TLT','MSFT']
# raw adjusted close prices
data = pd.DataFrame({sym:get_px(sym) for sym in symbols})
# log returns
lrets = np.log(data/data.shift(1)).dropna()   

# Select best lag order for MSFT returns    
max_lag = 30
mdl = smt.AR(lrets.MSFT).fit(maxlag=max_lag, ic='aic', trend='nc')
est_order = smt.AR(lrets.MSFT).select_order(maxlag=max_lag, ic='aic', trend='nc')

print('best estimated lag order = {}'.format(est_order))
print mdl.params

输出将是这样的。

best estimated lag order = 23
L1.MSFT    -0.075405
L2.MSFT    -0.067423
L3.MSFT     0.031371
L4.MSFT    -0.063610
L5.MSFT    -0.045080
L6.MSFT    -0.001510
L7.MSFT    -0.051875
L8.MSFT    -0.015192
L9.MSFT    -0.018665
L10.MSFT    0.044720
L11.MSFT    0.041655
L12.MSFT    0.034231
L13.MSFT   -0.042473
L14.MSFT   -0.008583
L15.MSFT    0.022171
L16.MSFT    0.009983
L17.MSFT    0.038606
L18.MSFT   -0.073060
dtype: float64

这里的问题是,尽管 statsmodels 确定 AR 模型的理想滞后是 23,但当您检查参数时,只有 18 个参数。不应该一样吗?如果“select_order”中的订单数小于参数数组的长度,这可能是有意义的。我知道“select_order”在这种情况下使用 AIC 标准决定理想的滞后顺序。

有人可以解释为什么吗?假设 23 确实是理想的滞后顺序,我如何获得额外的 5 个参数,因为我这里最多只能获得 18 个参数?

【问题讨论】:

  • 根据代码,默认method不同,“cmle”为fit,“mle”为select_order。尝试使用相同的方法参数。

标签: python statistics time-series statsmodels autoregressive-models


【解决方案1】:

并非所有 23 个滞后都有助于拟合 - 如果它们为零,它们就会被丢弃并且不计入。

【讨论】:

    【解决方案2】:

    关键是 maxlag 就是这样; statsmodels 的 select_order 方法可以选择的最大滞后数作为最佳滞后数。如果 select_order 将选择的最佳滞后数大于您的 maxlag,则无需选择 maxlag。它可能会选择可能低于 maxlag 的次佳滞后数。假设如果 maxlag 无限大,则 select_order 将选择 15。如果您的 maxlag 为 10,则不必选择 10 作为最佳滞后数,因为它最接近理想的 15 数。相反,它将研究可能的10个滞后并解决问题;考虑到该数字不能超过 10 的约束,选择最佳的滞后数。如果信息标准比数字为 10 的情况更好,那么该数字很可能会变成 7。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-12
      • 2020-05-13
      • 1970-01-01
      • 2021-07-02
      • 2021-01-09
      • 2021-05-13
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多