一、获取代码方式


二、时间序列简介

1 时间序列模型概述

1.1 时间序列的不同分类

时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序 列的方法构成数据分析的一个重要领域,即时间序列分析。 时间序列根据所研究的依据不同,可有不同的分类。

(1)按所研究的对象的多少分,有一元时间序列和多元时间序列。

(2)按时间的连续性可将时间序列分为离散时间序列和连续时间序列两种。

(3)按序列的统计特性分,有平稳时间序列和非平稳时间序列。如果一个时间序列的概率分布与时间t无关,则称该序列为严格的(狭义的)平稳时间序列。如果序列的 一、二阶矩存在,而且对任意时刻t满足:

①均值为常数

②协方差为时间间隔 的函数。 则称该序列为宽平稳时间序列,也叫广义平稳时间序列。我们以后所研究的时间序列主 要是宽平稳时间序列。

(3)按时间序列的分布规律来分,有高斯型时间序列和非高斯型时间序列。

确定性时间序列分析方法概述

时间序列预测技术就是通过对预测目标自身时间序列的处理,来研究其变化趋势 的。一个时间序列往往是以下几类变化形式的叠加或耦合。 我们常认为一个时间序列可以分解为以下四大部分:

(1)长期趋势变动。它是指时间序列朝着一定的方向持续上升或下降,或停留在 某一水平上的倾向,它反映了客观事物的主要变化趋势。

(2)季节变动。

(3)循环变动。通常是指周期为一年以上,由非季节因素引起的涨落起伏波形相 似的波动。

(4)不规则变动。通常它分为突然变动和随机变动。

三种时间序列模型

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列

如果在预测时间范围以内,无突然变动且随机变动的方差 \small \sigma ^{2} 较小,并且有理由认 为过去和现在的演变趋势将继续发展到未来时,可用一些经验方法进行预测。

2 移动平均法

移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数, 以反映长期趋势的方法。当时间序列的数值由于受周期变动和不规则变动的影响,起伏 较大,不易显示出发展趋势时,可用移动平均法,消除这些因素的影响,分析、预测序列的长期趋势。 移动平均法有简单移动平均法,加权移动平均法,趋势移动平均法等。

2.1 简单移动平均法

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_算法_02

近N 期序列值的平均值作为未来各期的预测结果。一般 N 的取值范围: 5≤N≤ 200。当历史序列的基本趋势变化不大且序列中随机变动成分较多时,N 的 取值应较大一些。否则 N 的取值应小一些。在有确定的季节变动周期的资料中,移动平均的项数应取周期长度。选择佳 N 值的一个有效方法是,比较若干模型的预测误 差。预测标准误差小者为好。

简单移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况。 如果目标的发展趋势存在其它的变化,采用简单移动平均法就会产生较大的预测偏差和滞后。

2.2 加权移动平均法

在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据等同看待是不尽合理的,应考虑各期数据的重要性,对近期数据给予较大的权重,这就 是加权移动平均法的基本思想。

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_03

在加权移动平均法中, 的选择,同样具有一定的经验性。一般的原则是:近期 数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。

2.3 趋势移动平均法

简单移动平均法和加权移动平均法,在时间序列没有明显的趋势变动时,能够准确 反映实际情况。但当时间序列出现直线增加或减少的变动趋势时,用简单移动平均法和 加权移动平均法来预测就会出现滞后偏差。因此,需要进行修正,修正的方法是作二次 移动平均,利用移动平均滞后偏差的规律来建立直线趋势的预测模型。这就是趋势移动平均法。 一次移动的平均数为

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_算法_04

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_05

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_算法_06

趋势移动平均法对于同时存在直线趋势与周期波动的序列,是一种既能反映趋势变 化,又可以有效地分离出来周期变动的方法。

3 一般自回归模型 AR(n)

白噪声序列

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列_07

移动平均模型 MA(m)

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_算法_08

自回归移动平均模型

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_09

ARMA 模型的特性

在时间序列的时域分析中,线性差分方程是极为有效的工具。事实上,任何一个 ARMA 模型都是一个线性差分方程。

AR(1)系统的格林函数

格林函数就是描述系统记忆扰动程度的函数。

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_矩阵_10

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_matlab_11

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_matlab_12

由于格林函数就是差分方程解的系数函数,格林函数的意义可概括如下:

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_矩阵_13

ARMA (2,1)系统的格林函数 的隐式

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_算法_14

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列_15

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列_16

逆函数和可逆性

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_17

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_矩阵_18

4 时间序列建模的基本步骤

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_matlab_19

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_20

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列_21

三、部分源代码

clear
syms a b;
c=[a b]';
A=[89677,99215,109655,120333,135823,159878,182321,209407,246619,300670];
B=cumsum(A); % 原始数据累加
n=length(A);
for i=1:(n-1)
C(i)=(B(i)+B(i+1))/2; % 生成累加矩阵
end
% 计算待定参数的值
D=A;D(1)=[];
D=D';
E=[-C;ones(1,n-1)];
c=inv(E*E')*E*D;
c=c';
a=c(1);b=c(2);
% 预测后续数据
F=[];F(1)=A(1);
for i=2:(n+10)
F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a ;
end
G=[];G(1)=A(1);
for i=2:(n+10)
G(i)=F(i)-F(i-1); %得到预测出来的数据
end
Y=xlsread('sdata','Sheet1','E1:E227');
N = length(Y);

%% 原始数据可视化
figure(1)
plot(Y); xlim([1,N])
set(gca,'XTick',[1:18:N])
title('原始股票价格')
ylabel('元')

%% ARIMA模型
model = arima('Constant',0,'D',1,'Seasonality',12,...
'MALags',1,'SMALags',12)
Y0 = Y(1:13);
[fit,VarCov] = estimate(model,Y(14:end),'Y0',Y0);

%% 评估预测效果
Y1 = Y(1:100);
Y2 = Y(101:end);

Yf1 = forecast(fit,100,'Y0',Y1);

figure(2)
plot(1:N,Y,'b','LineWidth',2)

hold on
plot(101:200,Yf1,'k--','LineWidth',1.5)
xlim([0,200])
title('Prediction Error')
legend('Observed','Forecast','Location','NorthWest')
hold off

%% 预测未来股票趋势.
[Yf,YMSE] = forecast(fit,60,'Y0',Y);
upper = Yf + 1.96*sqrt(YMSE);
lower = Yf - 1.96*sqrt(YMSE);

四、运行结果

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_数据_22

【价格预测】基于matlab时间序列股票价格预测【含Matlab源码 450期】_时间序列_23

五、matlab版本及参考文献

1 matlab版本

2014a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.

[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.

[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.