表1 1950-2009年的新疆社会消费品零售总额
年份 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 社会消费品零售总额 21920 29023 36646 43198 52216 61379 71464 85578 92490 110526 119059 106780 105454 100837 年份 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 社会消费品零售总额 112970 121349 129530 122971 131318 132306 137958 143416 154676 158035 168486 181377 193457 218865 年份 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 社会消费品零售总额 293590 340739 364133 413324 461439 573842 638981 723913 886986 981497 1043041 1215180 1382452 1683737 年份 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 社会消费品零售总额 2536475 2953597 3104197 3275210 3473958 3744999 4063487 4428871 4211680 5636520 6402000 7332000 8575000 1964 105406 1979 247796 1994 1971086 2009 数据来源:《新疆统计年鉴2010》,《新疆五十年》
模型应用
data a;
input date cost; 1950 21920 1951 29023 1952 36646 1953 43198 1954 52216 1955 61379 1956 71464
cards;
1957 85578 1958 92490 1959 110526 1960 119059 1961 106780 1962 105454 1963 100837 1964 105406 1965 112970 1966 121349 1967 129530 1968 122971 1969 131318 1970 132306 1971 137958 1972 143416 1973 154676 1974 158035 1975 168486 1976 181377 1977 193457 1978 218865 1979 247796 1980 293590 1981 340739 1982 364133 1983 413324 1984 461439 1985 573842 1986 638981 1987 723913 1988 886986 1989 981497 199****3041199****5180199****2452199****3737199****1086199****6475199****3597199****4197199****5210199****39582000 3744999
2001 4063487 2002 4428871 2003 4211680 2004 5636520 2005 6402000 2006 7332000 2007 8575000 ;
proc print data=a; Run;
程序说明:这段程序是录入1950年到2009年的新疆社会消费品零售总额的数据。
data a; set work.a;
proc gplot data=a; plot cost*date;
symbol v=dot i=join c=black l=1 w=2; run;
程序说明:这段程序首先建立数据集a,然后调用gplot过程作图来显示新疆社会消费品零售总额趋势图,结果如下图。
新疆社会消费品零售总额的时序图
从图中发现,随着时间的增加波动越来越大,因而此序列是非平稳的,从而有必要对原数据进行函数变换,我们这里对原数据取对数,程序如下:
data a; set work.a; lc=log(cost); proc gplot data=a; plot lc*date;
symbol v=dot i=join c=black l=1 w=2; run;
新疆社会消费品零售总额取对数后的时序图
上图取对数后的序列还是不平稳,但序列的原始数据趋势图只能大概的看出此序列的平稳性,为了进一步了解新疆社会消费品零售总额取对数后序列(lnin)的性质,下面给出lc序列的ACF,程序如下:
proc arima data=a;
identify var=lc nlag=30 esacf p=(0:6) q=(0:6) minic p=(0:6) q=(0:6); run;
新疆社会消费品零售总额取对数后的ACF
从这个图上可以看出,自相关函数缓慢衰减,从而表明序列lc是非平稳的,这和我们从lc的序列图上观察的结果是相同的。因此需要对变量lnin进行一阶差分操作并对差分后的序列进行平稳性识别,程序如下:
identify var=lc(1) nlag=30 esacf p=(0:8) q=(0:8) minic p=(0:6) q=(0:6); run;
识别过程结果会给出三个可能不同的模型,分别对这三个模型进行估计,已得到拟合最好模型。 模型一
差分后的对数序列的自相关函数图 差分后的对数序列的偏自相关函数图
由图可知,建议对一阶差分后的lc序列拟合ARMA(2,2)过程,接着进行模型的估计检验过程,程序如下:
estimate p=2 q=2 method=ml; run;
极大似然估计结果(显着性检验)
结果发现,系数除了常数项外其他都显着为0,此模型拟合效果差,排除这种模型的可能。 模型二
ESACF的建议模型 通过ESACF,建议对一阶差分后的lc序列拟合ARMA(5,1)过程,接着进行模型的估计检验过程,程序如下:
estimate p=5 q=1 method=ml; run;
lc序列估计模型arima(1,1,1)结果
此模型拟合效果挺好,可以考虑选择这个模型。 模型三
最小信息准则建议模型
由最小信息准则,拟合模型ARMA(2,0),程序如下:
estimate p=2 method=ml; run;
lc序列估计模型arima(2,1,0)结果
结果不仅各系数显着不为0,而且残差序列经验证也是白噪声序列,符合要求。 AIC与SBC所计算出来的值越小,则代表模型的配适度越佳,故两个模型比较,选择ARIMA(2,1,0)模型。
所以最终估计结果对应的模型为:
下面利用我们拟合的模型进行预测,我们预测未来10年的新疆社会消费品零售总额,预测程序如下:
forecast lead=10 id=date out=pred1; run;
程序说明:调用arima过程中的forecast语句来进行预测,lead是指向后预测的步数,id指定变量用来识别观测的周期,interval指定观测间隔的时间,不写明的时候默认值为1,id和interval一般一起使用,将预测结果输出到数据集pred1中,预测结果如下:
对lc未来五年的预测结果
变换预测值,以获取原度量下的预测值,程序如下:
data w; set pred1; y=exp(lc);
forecast1=exp(forecast); run;
proc print data=w; run;
程序说明:对取对数后的序列lnin再进行exp函数变换,以得到原序列,同时预测十年的值。
61 Year Cost 2010 62 2011 63 2012 64 2013 65 2014 66 2015 67 2016 68 2017 69 2018 70 2019 对原始序列的未来十年预测结果
因篇幅问题不能全部显示,请点此查看更多更全内容