灰色预测案例分析

蔬菜产量预测

由1990-2001年某地蔬菜产量,建立模型预测该地2002年蔬菜产量,并对预测结果做检验。

 

1.画图

t=1990:2001; 
X0=[19519,19578,19637,19695,16602,25723,30379,34473,38485,40514,42400,48337];
hold on
plot(t,X0,'linewidth',1)
xlabel('年份')
ylabel('产量')
hold off

图像具有指数趋势,可以使用灰色预测。

 

2.编写灰色预测函数

function [X,c,error1,error2,A,B]=GM11(X0,k)
format long;
n=length(X0);
X1=[];
X1(1)=X0(1);
for i=2:n
    X1(i)=X1(i-1)+X0(i);
end
for i=1:n-1
    B(i,1)=-0.5*(X1(i)+X1(i+1));
    B(i,2)=1;
    Y(i)=X0(i+1);
end
alpha=(B'*B)^(-1)*B'*Y';
a=alpha(1,1);
b=alpha(2,1);
d=b/a;
c=X1(1)-d;
X2(1)=X0(1);
X(1)=X0(1);
for i=1:n-1
    X2(i+1)=c*exp(-a*i)+d;
    X(i+1)=X2(i+1)-X2(i);
end
for i=(n+1):(n+k)
    X2(i)=c*exp(-a*(i-1))+d;
    X(i)=X2(i)-X2(i-1);
end
for i=1:n
    error(i)=X(i)-X0(i);
    error1(i)=abs(error(i));
    error2(i)=error1(i)/X0(i);
end
c=std(error1)/std(X0);
A=(X0(1)-(b/a))*(1-exp(a));
B=-a;

 

3.建立模型

>> [X1,c1,e1,e2,A,B]=GM11(X0,k)

X1 =

   1.0e+04 *

  1 至 5 列

   1.951900000000000   1.695769385830782   1.885790370699693   2.097104330304606   2.332097268346191

  6 至 10 列

   2.593422554345592   2.884030883565190   3.207203594115656   3.566589717441861   3.966247180534730

  11 至 13 列

   4.410688625094434   4.904932361001952   5.454559029427991


c1 =

   0.163969348419772


e1 =

   1.0e+03 *

  1 至 5 列

                   0   2.620306141692184   0.779096293003065   1.276043303046055   6.718972683461907

  6 至 10 列

   0.211225543455919   1.538691164348100   2.400964058843441   2.819102825581387   0.851528194652696

  11 至 12 列

   1.706886250944343   0.712323610019521


e2 =

  1 至 5 列

                   0   0.133839316666267   0.039674914345525   0.064790215945471   0.404708630494031

  6 至 10 列

   0.008211543888968   0.050649829301429   0.069647667996503   0.073251989751368   0.021018121998635

  11 至 12 列

   0.040256751201518   0.014736611912604


A =

     1.524895796797355e+04


B =

   0.106210475032772

 

4.再次画图分析

t=1990:2001; 
X0=[19519,19578,19637,19695,16602,25723,30379,34473,38485,40514,42400,48337];
p=1:12;
X1=A.*exp(B.*p);
hold on
plot(t,X0,'linewidth',1)
plot(t,X1,'linewidth',1)
xlabel('年份')
ylabel('产量')
hold off

 

后六个数据需要残差修正。

 

5.残差修正灰色预测

对后六个数据的残差序列作GM(1,1)模型。

>> E0=[1538.7,2400.9,2819.1,851.53,1707,712.3];
[E1,c1,e1,e2,a,b]=GM11(E0,0)

E1 =

   1.0e+03 *

  1 至 5 列

   1.538700000000000   2.662167251695292   2.059445314123276   1.593181269570276   1.232480678318035

  6 列

   0.953443686189585


c1 =

   0.362653144399383


e1 =

   1.0e+02 *

  1 至 5 列

                   0   2.612672516952921   7.596546858767238   7.416512695702757   4.745193216819652

  6 列

   2.411436861895847


e2 =

  1 至 5 列

                   0   0.108820547167850   0.269467094419043   0.870963171667793   0.277984371225522

  6 列

   0.338542308282444


a =

     3.441283158817899e+03


b =

  -0.256703865781852

可以得到

模型建立成功。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
灰色预测模型是一种基于灰色理论的预测方法,其原理是根据系统的发展趋势和特征进行数据处理和分析,从而得出未来的预测结果。R语言是一种开源的编程语言,拥有丰富的数据分析和预测函数库,可以用于实现灰色预测模型。 要编写灰色预测模型的R语言代码,可以按照以下步骤进行: 1. 数据预处理:首先,要将原始数据进行处理,包括去除异常值、平滑数据等。R语言提供了许多函数用于数据处理,如去除异常值的函数(如outliers()),平滑数据的函数(如smooth())等。 2. 数据建模:接下来,根据处理后的数据,建立灰色预测模型。常用的灰色预测模型包括GM(1,1)模型、GM(2,1)模型等。以GM(1,1)模型为例,可以使用R语言中的灰色包forecast来进行建模。使用gm()函数进行GM(1,1)模型建模。 3. 模型评估与优化:完成模型建立后,需要对模型进行评估,包括计算预测精度、预测误差等指标,并对模型进行优化。R语言提供了各种评估模型和优化模型的函数,如accuracy()函数用于计算预测精度,optim()函数用于模型优化。 4. 模型预测与结果展示:最后,使用建立好的模型进行预测,并将预测结果进行展示。R语言提供了预测函数,如predict()函数来进行模型预测,并提供了绘图函数,如plot()函数来展示预测结果。 综上所述,想要编写灰色预测模型的R语言代码,主要涉及数据预处理、模型建立、模型评估与优化、模型预测与结果展示等步骤。R语言提供了丰富的函数和库来实现这些步骤,通过逐步完成这些步骤,可以编写出完整的灰色预测模型的R语言代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值