应用三次指数平滑法通过c 语言编程预测未来交通量
交运02 30210212 张兴如
指数平滑法是1960年美国人布朗首先提出来的,布朗认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续的未来,所以将较大的权数放在最近的资料。鉴于指数平均法的诸多优点且计算便捷,因此在理论上极被推崇,在实际中广泛应用。
交通量预测,作为道路工程可行性研究报告的一项重要内容,是工程建设规模、效益分析的重要依据。三次指数平滑预测法是传统时间序列分析预测中一种重要和常用的方法。在利用了经济变量所有历史数据的渐近形式下,三次指数平滑预测具有某类最优性。
(一)预测模型的建立
原始数列平滑修匀的计算公式:
(1)(1)1(1)t t t S X S αα-=+-
(2)(1)(1)1(1)t t t S S S αα-=+-
(3)(2)(3)1(1)t t t S S S αα-=+-
式中:(1)t S 、(2)t S 、(3)
t S ——对原始数列分别进行一次、二次和三次修匀后的新数列值; (1)、(2)、(3)——分别代表第一、二、三次修匀;
t X ——t 期运输量观测值;
t ——计算期(基期)期号;
α——平滑系数,一般取0.2~0.6。
三次指数平滑方程的预测公式:
2t T t t
t Y a bT c T +=++ (1)(2)(3)33t t t t a S S S =-+
(1)(2)(3)2[(65)2(54)(43)]2(1)
t t t t b S S S ααααα=---+-- 2
(1)(2)(3)2[2]2(1)
t t t t c S S S αα=-+-
式中:t T Y +——预测期运输量;
T ——预测的超前期数。
(二)案例
注:数据来自交通运输部与国家统计局网站
(三)程序编写
#include
main()
{
int n, T, x[15], i, j;
float a, b, c, q, s[15][3], Y;
Printf n ;
scanf("%d",&n);
Printf T ;
scanf("%d",&T);
Printf q ;
scanf("%f",&q);
for(i=0;i { Printf x%d=\n",i+1,i+1 ; scanf("%d",&x[i]); } s[0][0]=x[0]; s[0][1]=x[0]; s[0][2]=x[0]; for(j=1;j { s[j][0]=q*x[j]+(1-q)*s[j-1][0]; s[j][1]=q*s[j][0]+(1-q)*s[j-1][1]; s[j][2]=q*s[j][1]+(1-q)*s[j-1][2]; } a=3*s[n-1][0]-3*s[n-1][1]+s[n-1][2]; b=q*((6-5*q)*s[n-1][0]-2*(5-4*q)*s[n-1][1]+(4-3*q)*s[n-1][2])/(2*(1-q)*(1-q)); c=q*q*(s[n-1][0]-2*s[n-1][1]+s[n-1][2]); Y=a+b*T+c*T*T; printf("Y=%f\n",Y); getch(); } (四)实验结果 将上述历史数据带入,取0.4α=,4T =(预测2015年运输量),运行程序后得出结果。预测江苏省2015年公路交通运输总量为285266.8万吨。