时序分析(6) -- ARIMA(p,d,q)模型

时序分析(6)

ARIMA(p,d,q)模型

    上一篇文章我们探讨了ARIMA模型时序数据进行建模,这一节我们主要讨论ARMA模型的一个非常重要的扩展模型ARIMA。
    首先我们介绍ARIMA模型的基本概念:

Autoregressive Integrated Moving Average Models - ARIMA(p, d, q)

    我们以前提到过金融时序大多数都不是平稳时序,也就是说其统计特性随着时间的推移而变化,但是通过差分我们有时可以将其变成平稳时序。在前面文章中我们看到了把指数数据变换成收益率后就是平稳过程了;把随机步行序列进行一阶差分以后就变成了白噪声。
    ARIMA模型中的参数d就代表我们对原始序列进行差分的次数

导入python包和数据

如同系列文章前面一样

我们将对四个指数数据进行ARIMA建模,注意:不是对收益率数据建模。
  • 国内股票
    以ARIMA建模, 模型比较准则为AIC,得到阶数为(3,1,2)
best_aic = np.inf
best_order = None
best_mdl_gg = None
Y = indexs_sub['国内股票']
pq_rng = range(5) # [0,1,2,3,4]
d_rng = range(2) # [0,1]
for i in pq_rng:
    for d in d_rng:
        for j in pq_rng:
            try:
                tmp_mdl = smt.ARIMA(Y, order=(i,d,j)).fit(method='mle', trend='nc')
                tmp_aic = tmp_mdl.aic
                if tmp_aic < best_aic:
                    best_aic = tmp_aic
                    best_order = (i, d, j)
                    best_mdl_gg = tmp_mdl
            except: continue
print('aic: {:6.5f} | order: {}'.format(best_aic, best_order))

aic: 14191.66013 | order: (3, 1, 2)

得到p,d,q分别为3,1,2,这是符合我们的预期的。

print(best_mdl_gg.summary())

在这里插入图片描述
残差Plot

_ = tsplot(best_mdl_gg.resid, lags=30)

在这里插入图片描述
从QQ-plot上看,残差并非正态分布。

以下代码类似

  • 香港股票
    以ARIMA建模
    比较准则为AIC,拟合参数为(3,1,2)

aic: 17054.58001 | order: (3, 1, 2)
在这里插入图片描述
残差Plot
在这里插入图片描述

  • 国内债劵
    以ARIMA建模,比较准则AIC,得到(3,0,1).
    aic: -14105.28291 | order: (3, 0, 1)
    在这里插入图片描述
  • 国内货币
    以ARIMA建模
    比较准则AIC,得到(4,1,4).
    aic: -19130.92496 | order: (4, 1, 4)
    在这里插入图片描述
最后,我们尝试对国内股票收益率用ARIMA模型建模。

aic: -6601.86081 | order: (3, 0, 2)
如我们所料,得到了参数(3,0,2)
其实,我们采用了如此多的模型来为时序数据进行建模,最主要的目的是为了能够预测。下面,我们需要评估一下采用ARIMA模型预测数据的效果。

预测国内股票收益率21天数据,并分别估算其95%和99%置信水平。
n_steps = 21

f, err95, ci95 = best_mdl_gg.forecast(steps=n_steps) # 95% CI
_, err99, ci99 = best_mdl_gg.forecast(steps=n_steps, alpha=0.01) # 99% CI

idx = pd.date_range(Y.index[-1], periods=n_steps, freq='D')
fc_95 = pd.DataFrame(np.column_stack([f, ci95]),
                     index=idx, columns=['forecast', 'lower_ci_95', 'upper_ci_95'])
fc_99 = pd.DataFrame(np.column_stack([ci99]),
                     index=idx, columns=['lower_ci_99', 'upper_ci_99'])
fc_all = fc_95.combine_first(fc_99)
fc_all.tail()

在这里插入图片描述

plt.style.use('bmh')
fig = plt.figure(figsize=(9,7))
ax = plt.gca()
ts = indexs_logret[['国内股票']].iloc[-500:].copy()
ts.plot(ax=ax, label='GG Returns')
# in sample prediction
pred = best_mdl_gg.predict(ts.index[0], ts.index[-1])
pred.plot(ax=ax, style='r-', label='In-sample prediction')
styles = ['b-', '0.2', '0.75', '0.2', '0.75']
fc_all.plot(ax=ax, style=styles)
plt.fill_between(fc_all.index, fc_all.lower_ci_95, fc_all.upper_ci_95, color='gray', alpha=0.7)
plt.fill_between(fc_all.index, fc_all.lower_ci_99, fc_all.upper_ci_99, color='gray', alpha=0.2)
plt.title('{} Day Return Forecast\nARIMA{}'.format(n_steps, best_order))
plt.legend(loc='best', fontsize=10)

在这里插入图片描述

总结

    本文展示了采用Python语言为四个指数时序数据进行ARIMA建模,介绍了ARIMA模型的基本概念,并使用ARIMA模型对四指数数据进行建模其对国内股票收益率的预测进行了评估。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在SPSS中确定ARIMA模型的p、q、d值,可以通过以下步骤进行: 1. 打开SPSS软件,选择“分析”菜单,然后选择“时间序列”子菜单。 2. 在“时间序列”对话框中,选择“建立模型”选项卡。 3. 在“建立模型”选项卡中,选择“ARIMA模型类型,并输入时间序列数据。 4. 在“ARIMA模型设置中,输入p、q、d值,可以通过观察自相关图和偏自相关图来确定。 5. 点击“确定”按钮,SPSS会自动计算ARIMA模型的参数,并输出模型的结果和预测值。 需要注意的是,ARIMA模型的p、q、d值的确定需要根据具体的时间序列数据和分析目的来确定,建议在使用SPSS进行ARIMA模型分析时,结合实际情况进行参数的选择和调整。 ### 回答2: ARIMA模型是一种广泛应用于时间序列数据分析与预测的一种模型ARIMA模型包含三个主要参数:AR阶数(p)、I阶数(d)和MA阶数(q)。在SPSS中使用ARIMA模型进行预测时,需要确定这三个参数。下面就一一说明。 1.确定AR阶数(p) AR阶数(p)是指ARIMA模型中自回归项的最大阶数。自回归项指的是当前时点的数据受到过去若干个时点数据的影响。可以通过ACF图和PACF图来确定AR阶数。ACF图反映了时间序列数据自身的相关性程度,PACF图反映了当前时点与若干个时点后的相关性程度。通过观察ACF和PACF图中横轴对应的时间点和纵轴对应的相关系数,可以大致确定AR阶数。 2.确定I阶数(d) I阶数(d)是指ARIMA模型中差分阶数,即将原始数据进行d阶差分后得到的数据。差分的目的是消除时间序列数据的非平稳性,使得数据趋于平稳。可以通过ADF检验来确定I阶数。ADF检验是用来检测时间序列数据是否具有单位根的检验方法,单位根指的是时间序列数据的均值和方差不稳定以及时间序列的时间依存关系。 3.确定MA阶数(q) MA阶数(q)是指ARIMA模型中滑动平均项的最大阶数。滑动平均项指的是当前时点的数据受到之前若干个时点数据的白噪声影响,白噪声是指时间序列数据在时间上无关联的随机变量。同样可以通过ACF图和PACF图来确定MA阶数。 通过以上三个步骤来确定ARIMA模型的三个参数p、d、q,然后使用SPSS软件进行模型拟合和预测。需要注意的是,在确定ARIMA模型参数时,要保证时序数据的平稳性、异方差性等前提。此外,需要结合实际情况和经验进行参数调整和模型优化。 ### 回答3: ARIMA模型是时间序列分析中一种比较常见的模型,其包含了自回归(AR)、移动平均(MA)和差分(I)三部分,用于对未来时间序列进行预测。其中,AR部分用于描述时间序列的自身历史信息对未来的影响,MA部分用于描述时间序列的噪声对未来的影响,I部分则用于描述时间序列的趋势(或季节性)。 在确定ARIMA模型时,需要根据具体的时间序列数据来确定模型的参数p、q和d。其中,p代表AR模型中的自回归项数,q代表MA模型中的移动平均项数,d代表差分次数。下面介绍在SPSS中如何确定ARIMA模型的参数。 1. 原始数据检查与处理 首先,在进行ARIMA模型分析之前,需要对原始数据进行检查和处理。对于包含缺失值或异常值的数据,需要进行数据清洗和插补处理,保证数据的完整性和准确性。此外,还需要对时间序列数据进行平稳性检验,判断是否具有平稳性(即均值和方差不随时间发生明显变化),如果不平稳,则需要进行差分操作。 2. ARIMA模型建立与估计 在SPSS中,可以首先建立一个初步的ARIMA模型,然后利用最大似然法或最小二乘法对模型参数进行估计,得到最优的ARIMA模型。具体步骤如下: (1)在SPSS中打开“Time Series Modeler”工具,在“Variables”列表中选择要分析的时间序列变量,并设置时间间隔(如间隔为1表示按时间顺序每一步前进1单位)。 (2)在“Data”选项卡中进行数据检查和处理,确保数据符合模型建立的要求。 (3)在“Models”选项卡中选择“ARIMA”,并设置p、q和d的取值范围。 (4)选择“Estimation”选项卡,在“Method”中选择最大似然法或最小二乘法,并设置模型的估计方法和估计范围。 3. 模型诊断与优化 建立ARIMA模型后,需要对其进行诊断和优化,以保证其预测精度和可靠性。在SPSS中,可以通过Residual Check方法来进行模型检验和优化。具体步骤如下: (1)选择“Models”选项卡中的“Results”选项,查看模型参数的估计结果和拟合情况。 (2)选择“Diagnostic Checking”选项卡,在该选项卡下可以进行Residual Check操作,检查模型残差(即实际值和预测值之差)是否符合正态分布,是否具有独立性和同方差性。 (3)如果模型诊断结果不理想,则需要进行模型调整和优化,如调整参数取值范围、增加AR或MA的次数等,以提高模型预测精度。 总之,在SPSS中确定ARIMA模型的参数需要经过多个步骤的数据处理、模型建立和优化,仅有科学的方法和严谨的分析才能得到可靠的预测结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值