学习笔记-ARIMA模型

ARIMA模型是基于时间序列的预测模型,也叫做差分整合移动平均自回归模型,又称整合移动平均自回归模型,时间序列预测分析方法之一。ARIMA(p,d,q)中,AR"自回归"p为自回归项数;MA"滑动平均"q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数) 将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列的过去值及现在值来预测未来值。符合问题二中利用数字经济板块指数中成交量的预测。

ARIMA模型定义

具有如下结构的模型称为差分整合移动平均自回归模型,简记为ARIMA(p,d,q)模型:

1-z=1pϕi1-LdXt=1+0=1qθiLiεt#3

其中L是滞后算子(Lag operator)

ARIMA模型含有三个参数:p,d,q

p--代表预测模型中采用的时序数据本身的滞后数(lags)

d--代表时序数据需要进行几阶差分化,才是稳定的

q--代表预测模型中采用的预测误差的滞后数(lags)

通常在时间序列分析中,采用自相关函数(ACF)、偏自相关函数(PACF)来判别ARIMA(p,d,q)模型的系数和阶数。自相关函数(ACF)描述时间序列观测值与其过去的观测值之间的线性相关性。偏自相关函数(PACF)描述在给定中间观测值的条件下时间序列观测值与其过去的观测值之间的线性相关性。若平稳序列的偏相关函数是截尾的,而自相关函数是拖尾的,可断定序列适合AR模型;若平稳序列的偏相关函数是拖尾的,而自相关函数是截尾的,则可断定序列适合MA模型;若平稳序列的偏相关函数和自相关函数均是拖尾的,则序列适合ARMA模型。

ARIMA建模流程以及流程图如图所示:

 

(1) 获得数据

(2) 判断序列的平稳性

(3) 对序列进行差分平稳化处理

(4) 对平稳的一阶差分序列进行白噪声检验

(5) 拟合与预测

(6) 结果分析

 

案例:华中杯2021年量化投资问题成交量及收盘价预测

 代码实现:

%% 数据导入及预处理
Data=xlsread('训练集-成交量');
Y=Data';
data=Y(1:6240);

plot(Y) %原始数据图

figure %未差分时ACF和PACF图
autocorr(Y)
figure
parcorr(Y)
%% 差分及平滑性检验
y_h_adf = adftest(Y);
y_h_kpss = kpsstest(Y); %平滑性检验,yd1_h_adf =1,yd1_h_kpss =0,通过检验

Yd1 = diff(Y); %一阶差分
figure
plot(Yd1) %差分结果作图

yd1_h_adf = adftest(Yd1); % 一阶差分,如果依旧不平稳的话,再次求差分,直至通过检验
yd1_h_kpss = kpsstest(Yd1);
Yd1=Yd1';
Y=Y'; %Yd2转换成列向量

%% 模型参数选择
LOGL = zeros(4,4); % Initialize
PQ = zeros(4,4);
for p = 1:4
    for q = 1:4
        Mdl = arima(p,1,q);
        [~,~,logL] = estimate(Mdl,Yd1,'Display','off');
        LOGL(p,q) = logL;
        PQ(p,q) = p + q;
     end
end

LOGL = reshape(LOGL,16,1);
PQ = reshape(PQ,16,1);
[~,bic] = aicbic(LOGL,PQ+1,100);

a=reshape(bic,4,4); %reshape 重构数组

a_max=max(a(:));
[x,y]=find(a==min(a(:)));%找最佳lags值 x=2,y=1,即对应ARMA(2,1)模型

Mdl = arima(x, 1, y);  %第二个变量值为1,即一阶差分
EstMdl = estimate(Mdl,Y);
[res,~,logL] = infer(EstMdl,Y);   %res即残差

stdr = res/sqrt(EstMdl.Variance);
%% 残差检验相关图片
figure
histogram(stdr,10)
figure
autocorr(stdr)
figure
parcorr(stdr)
figure
qqplot(stdr)

diffRes0 = diff(res);  
SSE0 = res'*res;
DW0 = (diffRes0'*diffRes0)/SSE0 % Durbin-Watson statistic,该值接近2,则可以认为序列不存在一阶相关性。

%% 预测
step = 1; %预测步数为1
forData=zeros(1,6240);
for i=5328:6240
EstMdl = estimate(Mdl,Y(1:i));
[forData(i+1),YMSE] = forecast(EstMdl,step,'Y0',Y(1:i));   
lower = forData(i+1) - 1.96*sqrt(YMSE); %95置信区间下限
upper = forData(i+1) + 1.96*sqrt(YMSE); %95置信区间上限
end

%% 预测结果与原始数据对比
figure()
plot(5329:6240,Y(5329:6240))
hold on
plot(5329:6240,forData(5329:6240))
legend('原始数据','预测数据')

%% 优度函数计算,均方根百分比误差
RMSPE = sqrt(sum((format(1:end,1)-Data(1:end,1)).^2)/sum(Data(1:end,1)).^2); 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GARCH-ARIMA模型是一种结合了GARCHGeneralized Autoregressive Conditional Heteroskedasticity)模型和ARIMA(Autoregressive Integrated Average)模型的时间序列模型。它可以用于对具有异差性(条件异方差性)和自相关性的金融时间序列数据进行建模和预测。 GARCH模型用于建模时间序列数据的异方差性,即条件方差与过去观测值的相关性。它基于一个条件方差的递归函数,其中包含了过去观测值的平方和条件方差的线性组合。GARCH模型可根据条件方差的阶数来进行建模,包括ARCH(Autoregressive Conditional Heteroskedasticity)和GARCH两个部分。ARCH部分表示过去观测值的方对当前条件方差的影响,而GARCH部分表示过去条件方差对当前条件方差的影响。 ARIMA模型则用于建模时间序列数据的自相关性和趋势性。ARIMA模型包含了自回归(AR)、差分(I)和移动平均(MA)这三个部分。AR部分表示当前观测值与过去观测值之间的自相关关系,MA部分表示当前观测值与过去残差之间的移动平均关系,而差分部分用于平稳化非平稳时间序列。 通过结合GARCH模型和ARIMA模型,GARCH-ARIMA模型能够同时捕捉时间序列数据的异方差性和自相关性。这使得它在金融市场中对波动率建模和预测非常有用。通过对GARCH-ARIMA模型进行参数估计和模型拟合,可以对未来的波动率进行预测,从而帮助金融市场参与者进行风险管理和投资决策。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值