时间序列分析

转自https://blog.csdn.net/qq_29831163/article/details/89440215
人家写的真好啊。。。。

时间序列

时间序列预测技术就是通过对预测目标自身时间序列的处理,来研究其变化趋势 的。一个时间序列可以分解为:

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

(2)季节变动。

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

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

移动平均法

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

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

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gLU1kprL-1617109063596)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210330192218920.png)]

clc,clear 
y=[533.8  574.6  606.9  649.8   705.1  772.0  816.4  892.7  963.9  1015.1  1102.7]; m=length(y);   
 n=[4,5];   %n 为移动平均的项数 
for i=1:length(n)    
 %由于 n 的取值不同,yhat 的长度不一致,下面使用了细胞数组    
    for j=1:m-n(i)+1         
        yhat{i}(j)=sum(y(j:j+n(i)-1))/n(i);     
    end    
    y12(i)=yhat{i}(end);     
    s(i)=sqrt(mean((y(n(i)+1:m)-yhat{i}(1:end-1)).^2)); 
end 
y12,s 

加权移动平均法

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

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyzRHXCH-1617109063598)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210330192446726.png)]

y=[6.35 6.20    6.22    6.66    7.15    7.89    8.72    8.94    9.28    9.8]; 
w=[1/6;2/6;3/6]; 
m=length(y);n=3; 
for i=1:m-n+1     
    yhat(i)=y(i:i+n-1)*w; 
end 
yhat 
err=abs(y(n+1:m)-yhat(1:end-1))./y(n+1:m)  # 计算各年的相对误差 %
T_err=1-sum(yhat(1:end-1))/sum(y(n+1:m)) # 总的平均相对误差
y1989=yhat(end)/(1-T_err) # 修正预测值

**近期 数据的权数大,远期数据的权数小。**至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。

趋势移动平均法

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

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKg4jqMl-1617109063602)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210330193501616.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0AYBAHL-1617109063606)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210330193529864.png)]

clc,clear 
load y.txt   %把原始数据保存在纯文本文件 y.txt 中 
m1=length(y);    
n=6;   %n 为移动平均的项数 
for i=1:m1-n+1     
    yhat1(i)=sum(y(i:i+n-1))/n; 
end 
yhat1 
m2=length(yhat1); 
for i=1:m2-n+1    
    yhat2(i)=sum(yhat1(i:i+n-1))/n; 
end 
yhat2   
plot(1:21,y,'*') 
a21=2*yhat1(end)-yhat2(end) 
b21=2*(yhat1(end)-yhat2(end))/(n-1) 
y1986=a21+b21 
y1987=a21+2*b21 

指数平滑法

对各期观测值依时间顺序进行加权平均作为预测值。指数平滑法可满足这一要求,而且具有简单的递推形式。

一次指数平滑法

img

img

img

img

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2QYO60v0-1617109063608)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210330195646744.png)]

clc,clear 
load dianqi.txt   %原始数据以列向量的方式存放在纯文本文件中 
yt=dianqi;
n=length(yt); 
alpha=[0.2 0.5 0.8];
m=length(alpha); 
yhat(1,1:m)=(yt(1)+yt(2))/2; 
for i=2:n     
    yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:); 
end 
yhat 
err=sqrt(mean((repmat(yt,1,m)-yhat).^2)) 
xlswrite('dianqi.xls',yhat) 
yhat1988=alpha*yt(n)+(1-alpha).*yhat(n,:) 

二次指数平滑法

img

clc,clear 
load fadian.txt   %原始数据以列向量的方式存放在纯文本文件中 
yt=fadian; 
n=length(yt); 
alpha=0.3; 
st1(1)=yt(1); 
st2(1)=yt(1); 
for i=2:n     
    st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);    
    st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1); 
end 
xlswrite('fadian.xls',[st1',st2']) 
a=2*st1-st2 b=alpha/(1-alpha)*(st1-st2) 
yhat=a+b; 
xlswrite('fadian.xls',yhat','Sheet1','C2') 
str=char(['C',int2str(n+2)]); 
xlswrite('fadian.xls',a(n)+2*b(n),'Sheet1',str) 

三次指数平滑法

img

img

clc,clear 
load touzi.txt   %原始数据以列向量的方式存放在纯文本文件中 
yt=touzi; 
n=length(yt); 
alpha=0.3; 
st1_0=mean(yt(1:3)); 
st2_0=st1_0;
st3_0=st1_0; 
st1(1)=alpha*yt(1)+(1-alpha)*st1_0; 
st2(1)=alpha*st1(1)+(1-alpha)*st2_0; 
st3(1)=alpha*st2(1)+(1-alpha)*st3_0; 
for i=2:n     
    st1(i)=alpha*yt(i)+(1-alpha)*st1(i-1);     
    st2(i)=alpha*st1(i)+(1-alpha)*st2(i-1);     
    st3(i)=alpha*st2(i)+(1-alpha)*st3(i-1); 
end 
xlswrite('touzi.xls',[st1',st2',st3']) 
st1=[st1_0,st1];
st2=[st2_0,st2];
st3=[st3_0,st3]; 
a=3*st1-3*st2+st3; 
b=0.5*alpha/(1-alpha)^2*((6-5*alpha)*st1-2*(5-4*alpha)*st2+(4-3*alpha)*st3); c=0.5*alpha^2/(1-alpha)^2*(st1-2*st2+st3); 
yhat=a+b+c; 
xlswrite('touzi.xls',yhat','Sheet1','D1') 
plot(1:n,yt,'*',1:n,yhat(1:n),'O') 
legend('实际值','预测值',2) 
xishu=[c(n+1),b(n+1),a(n+1)]; 
yhat1990=polyval(xishu,2)

指数平滑预测模型是以时刻t为起点,综合历史序列的信息,对未来进行预测的。 选择合适的加权系数 α 是提高预测精度的关键环节。根据实践经验,α 的取值范围一 般以 0.1~0.3 为宜。 α 值愈大,加权系数序列衰减速度愈快,所以实际上 α 取值大小 起着控制参加平均的历史数据的个数的作用。 α 值愈大意味着采用的数据愈少。因此, 可以得到选择 α 值的一些基本准则。

序列趋势稳,预测偏差由随机因素造成,值小,减少修正幅度,使预测模型能包含更多历史数据的信息。如果预测目标的基本趋势已发生系统地变化,则 α 值应取得大一些。这样, 可以偏重新数据的信息对原模型进行大幅度修正,以使预测模型适应预测目标的新变 化。

指数平滑递推公式需要确定初始值S_0^1 S_0^2 S_0^3。

差分指数平滑法

当时间序列的变动具有直线趋势时,用一次指数平滑法会出现滞后偏差,其原因在于数据不满足模型要求。因此,我们也可以从数据变换的角度来考虑改进措施,即在运用指数平滑法以前先对数据作一些技术上的处理,使之能适合于 一次指数平滑模型,以后再对输出结果作技术上的返回处理,使之恢复为原变量的形态。 差分方法是改变数据变动趋势的简易方法。下面我们讨论如何用差分方法来改进指数平滑法。

一阶差分指数平滑法

img

指数平滑值实际上是一种加权平均数。因此把序列中逐期增 量的加权平均数(指数平滑值)加上当前值的实际数进行预测,比一次指数平滑法只用 变量以往取值的加权平均数作为下一期的预测更合理。从而使预测值始终围绕实际值上 下波动,从根本上解决了在有直线增长趋势的情况下,用一次指数平滑法所得出的结果 始终落后于实际值的问题。

img

α=0.4,差分指数平滑值即(26)

二阶差分指数平滑模型

img

差分方法和指数平滑法的联合运用,除了能克服一次指数平滑法的滞后偏差之外, 对初始值的问题也有显著的改进。因为数据经过差分处理后,所产生的新序列基本上是平稳的。这时,初始值取新序列的第一期数据对于未来预测值不会有多大影响。其次, 它拓展了指数平滑法的适用范围,使一些原来需要运用配合直线趋势模型处理的情况可用这种组合模型来取代。但是,于指数平滑法存在的加权系数 α 的选择问题,以及只能逐期预测问题,差分指数平滑模型也没有改进。

自适应滤波法

也是以时间序列的历史观测值进行 某种加权平均来预测的,它要寻找一组“佳”的权数,其办法是先用一组给定的权数 来计算一个预测值,然后计算预测误差,再根据预测误差调整权数以减少误差。这样反 复进行,直至找出一组“佳”权数,使误差减少到低限度。由于这种调整权数的过 程与通讯工程中的传输噪声过滤过程极为接近,故称为自适应滤波法。

img

img

img

clc,clear 
yt=0.1:0.1:1; 
m=length(yt); 
k=0.9; N=2; Terr=10000; 
w=ones(1,N)/N; 
while abs(Terr)>0.00001     
    Terr=[];     
    for j=N+1:m-1         
        yhat(j)=w*yt(j-1:-1:j-N)';         
        err=yt(j)-yhat(j);         
        Terr=[Terr,abs(err)];         
        w=w+2*k*err*yt(j-1:-1:j-N);     
    end     
    Terr=max(Terr); 
end 
w, yhat 

在开始调整权数时,首先要确定权数个数 N 和学习常数k 。一般说来,当时间序 列的观测值呈季节变动时, N 应取季节性长度值。如序列以一年为周期进行季节变动 时,若数据是月度的,则取 N =12 。若季节是季度的,则取N=4 。如果时间序列无 明显的周期变动,则可用自相关系数法来确定,即取 N 为高自相关系数的滞后时期。

k 的取值一般可定为1 / N,也可以用不同的k 值来进行计算,以确定一个能使S 小的k 值。

img

自适应滤波法有两个明显的优点:一是技术比较简单,可根据预测意图来选择权数 的个数和学习常数,以控制预测。也可以由计算机自动选定。二是它使用了全部历史数 据来寻求佳权系数,并随数据轨迹的变化而不断更新权数,从而不断改进预测。

趋势外推预测方法

趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物 未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:

(a)选择应预测的参数; (b)收集必要的数据; (c)利用数据拟合曲线;

(d)趋势外 推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。

趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络 曲线等。

指数曲线法

一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数 曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。

img

img

修正

任何事物的发展都是有一定限度的。例如某种畅销产 品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接 近于社会饱和量时。这时的预测模型应改用修正指数曲线。

img

三和法

img

img

img

img

function chanliang 
clc,clear 
global a b k 
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 
yt=xsh; n=length(yt);m=n/3 
cf=diff(yt); 
for i=1:n-2     
    bzh(i)=cf(i+1)/cf(i); 
end 
range=minmax(bzh) 
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 
b=((s3-s2)/(s2-s1))^(1/m) a=(s2-s1)*(b-1)/(b*(b^m-1)^2) 
k=(s1-a*b*(b^m-1)/(b-1))/m 
y=yuce(1:18) 
%************************************ 
%定义预测函数 
%************************************ 
function 
y=yuce(t) 
global a b k 
y=k+a*b.^t;  

Compertz 曲线

img

img

img

function chanliang2 
clc,clear 
global a b k 
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 
yt=log(xsh); n=length(yt);m=n/3; 
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 
b=((s3-s2)/(s2-s1))^(1/m) 
a=(s2-s1)*(b-1)/(b*(b^m-1)^2) 
k=(s1-a*b*(b^m-1)/(b-1))/m a=exp(a) 
k=exp(k) 
y=yuce(1:18) 
%************************************ %定义预测函数 %************************************ function y=yuce(t); 
global a b k 
y=k*a.^(b.^t); 

Logistic 曲线(生长曲线)

在发展时期则突然加快, 而到了成熟期又趋减慢,形成一条 S 形曲线,这就是有名的 Logistic 曲线(生长曲线)

img

img

function chanliang3 
clc,clear 
global a b k 
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 
yt=1./xsh; n=length(yt);m=n/3; 
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 
b=((s3-s2)/(s2-s1))^(1/m) 
a=(s2-s1)*(b-1)/(b*(b^m-1)^2) 
k=(s1-a*b*(b^m-1)/(b-1))/m 
y=yuce(1:18) 
%************************************ %定义预测函数 %************************************ function y=yuce(t); 
global a b k 
y=1./(k+a*b.^t);

img

当有几种趋势线可供选择时,应选择S 小的趋势线。

平稳时间序列模型

序列的统计特性不随时间的平移而变化,即均值和协方差不随时间的平移而变化。

自回归模型(Auto Regressive Model)简称 AR 模型,移动平均模型(Moving Average Model)简称 MA 模型,

自回归移动平均模型(Auto Regressive Moving Average Model)简称 ARMA 模型。

X(t) 为零均值(即中心化处理的)平稳序列

一般自回归模型 AR(n)

白噪声序列

img

img

使X_t消去后边的依赖性,转换为独立的序列a_t ,拟合AR(n)模型就是让序列X_t独立化。

移动平均模型 MA(m)

img

移动平均法预测明天的气温Xt,它可以等于过去5天气温[25,26,27,28,29]的加权和,权重W = [0.4,0.25,0.2,0.1,0.05],那么Xt = 250.4 + 260.25 +270.2+ 280.1+ 29*0.05 ;移动平均模型求当前时刻t的课堂学习效率Xt; 它的模型逻辑是Xt与之前的线性无关,与过去的扰动线性相关,比如 t-1时窗外传来了巨大的噪音,t-2时老师讲了个笑话之类的,,这些是独立的扰动因素。

自回归移动平均模型 ARMA

img

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

AR(1)系统的格林函数

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

img

img

后移算子

img

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

img

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

img

imgimg

时间序列建模的基本步骤

img

img

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值