1. 引言
GDP指的是在一定时期内,一个国家或地区经济的最终劳动产品和劳务的价值,常被认为是衡量区域经济发展水平的重要性综合指标 [1] 。其反映出国家或地区的经济实力和市场规模。山东是中国经济最发达的省份之一,仅次于广东省和江苏省。本文通过使用GM(1,1)模型和MATLAB软件对山东省未来五年的GDP进行预测,可以为经济部门的经济决策提供相关的依据。
灰色预测模型是由华中科技大学的邓聚龙教授提出的,现已在多个行业有了广泛应用。如徐学艳等将灰色预测模型应用于上海市海洋生产总值的预测 [2] 。一些学者也对灰色预测模型进行了不同方面的改进。彭官友为了对传统的灰色预测模型进行了修正,将累积法与灰色预测模型结合,提高了模型的预测精度 [3] 。姚裕盛提出了一种基于GM(1,1)灰色预测的残差修正模型,通过运用传统模型与改进后的残差修正模型分别进行预测,最后发现残差修正模型能够弥补传统灰色预测模型的不足,从而达到较高的预测精度 [4] 。刘芳芳利用缓冲算子改进灰色模型,对矿山事故预测进行了应用分析 [5] 。这些对灰色预测模型不同方面的改进,拓宽了模型的应用领域。同时,以往也有学者运用GM(1,1)模型对GDP进行预测,周思远运用GM(1,1)模型对横琴粤澳深度合作区的GDP进行了预测并提出相关建议 [6] 。刘昀对传统的GM(1,1)模型进行拓展,提出了2种灰色GM(1,1)模型,对苏州市GDP进行预测 [7] 。
2. 预测模型
2.1. GM(1,1)模型原理
白色系统是指系统内部特征是完全已知的,黑色系统是指系统内部信息完全未知的,而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另—部分信息未知或不确定。灰色系统理论是基于关联空间、光滑离散函数等概念定义灰导数与灰微分方程,进而用离散数据列建立微分方程形式的动态模型,即灰色模型是利用离散随机数经过生成变为随机性被显著削弱而且较有规律的生成数,建立起的微分方程形式的模型,这样便于对其变化过程进行研究和描述 [8] 。
灰色预测,是指对系统行为特征值的发展变化进行的预测,对既含有已知信息又含有不确定信息的系统进行的预测,也就是对在一定范围内变化的、与时间序列有关的灰过程进行预测。尽管灰过程中所显示的现象是随机的、杂乱无章的,但毕竟是有序的、有界的,因此得到的数据集合具备潜在的规律。灰色预测是利用这种规律建立灰色模型对灰色系统进行预测。
目前使用最广泛的灰色预测模型就是关于数列预测的一个变量、一阶微分的GM(1,1)模型。G表示grey (灰色),M表示model (模型)。它是基于随机的原始时间序列,经按时间累加后所形成的新的时间序列呈现的规律可用一阶线性微分方程的解来逼近。经证明,经一阶线性微分方程的解逼近所揭示的原始时间序列呈指数变化规律。因此,当原始时间序列隐含着指数变化规律时,灰色模型GM(1,1)的预测是非常成功的。
2.2. GM(1,1)模型简介
设原始数据序列为:
(1)
计算数列的级比:
(2)
如果所有的级比都落在可容覆盖区间
内,则数据列
可以建立GM(1,1)模型且可以
进行灰色预测。
对原始数据
作一次累加,记为:
(3)
其中
。
则GM(1,1)模型相应的微分方程为:
(4)
式中,
为发展系数;
为灰作用量。
设
为带估参数向量
可利用最小二乘法求解,解得:
(5)
式中,
,
。
求解微分方程,即可得预测模型:
(6)
从而相应地得到预测值:
(7)
2.3. GM(1,1)模型的检验
模型检验十分重要,是判断一个模型在此样本中可取性和有效性的一个重要步骤。GM(1,1)模型的检验方法有残差检验和级比偏差值检验。本文采取残差检验,通过计算相对残差来进行验证。
相对残差
,若对所有的
,则认为达到较高的要求;否
则,若对所有的
,则认为达到一般要求。
3. 山东省GDP数据预测
3.1. GM(1, 1)模型的建立
山东省是中国经济最活跃的省份之一,人均GDP增长速度十分迅速,生产总值逐渐上涨,仅次于广东省和江苏省。同时山东省也是一个排名位于前三的人口大省,故山东省的GDP增长也成了人们十分关注的一个问题。因此,本文选取了2011~2021年山东省的历史实际GDP数据,通过运用GM(1,1)模型,选用MATLAB软件进行计算,来预测2022~2026年山东省的GDP数据。表1为山东省2011~2021年的GDP数据与预测。
Table 1. GDP data and forecast of Shandong Province in 2011~2021
表1. 山东省2011~2021年的GDP数据与预测
原始序列
;累加序列
;故级比符合条件,数据列
可以建立GM(1,1)模型且可以进行灰色预测。
带入模型中的公式可得:
,
,
,
,
,
。
由此可得
,
,最终带入预测方程,求得预测值为390.6,443.1,474.0,507.0,542.3,580.0,620.3,663.5,709.6,759.0,811.8。
3.2. GM(1,1)模型的检验
建立GM(1,1)模型后,预测值是否可靠或者可信,需要进行模型检验。灰色预测模型的检验主要采用残差检验的方法,计算出相对残差。由表1数据可知,每年的相对残差的绝对值均小于0.05,精确度很高,可用于2022~2026年山东省GDP数据的预测。
4. 预测结果与分析
本文根据历史统计数据,选取山东省2011~2021年期间的GDP历史数据,建立GM(1,1)预测模型,预留2022年的实际数据作为预测结果的检验和对比分析。验证了GM(1,1)模型的精确度后,可以通过前面已计算的公式预测2022~2026年山东省GDP数据的预测值,分别为868.3,928.6,993.2,1062.3,1136.2。表2为2022~2026年山东省GDP数据的预测值。图1为实际值与预测值的对比。附件1为MATLAB代码。
Figure 1. GDP data and forecast of Shandong Province from 2011 to 2026
图1. 山东省2011~2026年的GDP数据与预测
Table 2. GDP data forecast of Shandong Province from 2022 to 2026
表2. 2022~2026年山东省GDP数据预测
根据公布的山东省2022年GDP数据可知,2022年山东省实际GDP数值为874.3百亿元,预测值为868.3百亿元,相对误差0.69%,预计2023~2026年山东省的GDP分别为928.6百亿元、993.2百亿元、1062.3百亿元和1136.2百亿元。
5. 结论
1) 通过对山东省2011~2021年GDP历史数据进行分析,建立GM(1,1)模型,对未来五年山东省GDP发展趋势进行预测,发现未来五年山东省GDP呈逐年上涨趋势。
2) 除残差检验外,预留2022年山东省实际GDP数据作为实证检验,得出相对误差为0.69%,预测值可信度较高。
3) 预计2026年山东省GDP可达1136.2百亿元。
附件1
clear;clc
a=[390.6,429.6,473.4,507.7,552.9,587.6,630.1,666.5,705.4,728.0,831.0];%近十年山东省GDP数据
n=length(a);%数据长度
k=1:n;%scatter(k,a,'r');
h=1:n+5;%scatter(h,b7,'b');
b=zeros(1,n);%初始化容器
b(1)=a(1);
for i=2:n
b(i)=b(i-1)+a(i);
end
%一次累加生成
b1=zeros(1,n-1);%初始化容器
for i=2:n
b1(i)=b(i-1)/b(i);
end
%级比
c=exp(-2/(n+1));%级比阈值最小值
d=exp(2/(n+1));%级比阈值最大值
coun=sum(c
if coun==n
disp('级比符合条件,数据列可以建立GM(1,1)模型且可以进行灰色预测')
else
disp('级比不符合条件,数据列不可以建立GM(1,1)模型且不可以进行灰色预测')
end
%计算模型背景值
b2=zeros(1,n-1);%初始化容器
for i=2:n
b2(i-1)=0.5*b(i-1)+0.5*b(i);
end
%计算最小二乘法估计
A=[(-b2)',ones(n-1,1)];
Y=a(2:n)';
b3=zeros(2,1);%初始化容器
b3=inv(A'*A)*(A'*Y);
%计算1-AGO的预测值
%x(k+1)=(b(1)-b3(2)/b3(1))exp(-b3(1)*k)+b3(2)/b3(1)
b4=zeros(1,n);%初始化容器
b4(1)=b(1);
for i=2:n
b4(i)=(b(1)-b3(2)/b3(1))*exp(-b3(1)*(i-1))+b3(2)/b3(1);
end
%计算预测值
b5=zeros(1,n);
b5(1)=b4(1);
for i=2:n
b5(i)=b4(i)-b4(i-1);
end
z=(a(i)-b5(i))/a(i);
if z<0.05
disp('相对残差的绝对值均<0.05,精确度高,可以进行预测')
b6=zeros(1,n+5);%初始化容器
b6(1)=b(1);
for i=2:n+5
b6(i)=(b(1)-b3(2)/b3(1))*exp(-b3(1)*(i-1))+b3(2)/b3(1);
end
%计算预测值
b7=zeros(1,n+5);
b7(1)=b4(1);
for i=2:n+5
b7(i)=b6(i)-b6(i-1);
end
disp([b7]);
scatter(k,a,'r');
hold on
scatter(h,b7,'b');
else
disp('存在相对残差的绝对值>0.05,精确度低,无法进行预测')
end