• 大小: 1.44MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-25
  • 语言: Matlab
  • 标签: 灰色预测  matlab  

资源简介

本文参考了2篇论文,并给出了matlab实现,并附有论文。 本文采用最后的预测效果前50数据预测后面10个数据。效果如文件夹中result.jpg所示。可以通过CSDN交流。 本文仅仅提供入门级别的实现方法。

资源截图

代码片段和文件信息

%% 灰色预测模型
%   File Name            :mine
%   Create Date          :2016/08/09
%   Author               :ZYZ
%   Abstract Description :Grey Model-GM(11)
%   Note                 :本文参考了博士论文《灰色预测技术及其应用研究》4.2节和论文《灰色预测GM_1_1模型的Matlab实现》
%% 
clear all; close all;clc;
%load(‘TestData.mat‘);
data = xlsread(‘mine.xlsx‘‘1-1000‘‘A1:A60‘);%读取60个原始样本数据
%data=data+100;
n1=50;%用于训练的样本数目
x0_rawdata=data(1:n11)‘;%选取n1个作为训练样本

n2=size(data1);%训练+预测未来的样本数目
pre_rawdata=data(n1+1:n21)‘;
x=1:n2;

%E1加速指数变换
M=max(x0_rawdata);
m=min(x0_rawdata);
T=M/m;
T_power=0:n1-1;
Y=zeros(size(x0_rawdata));
Y=x0_rawdata.*(T.^T_power);

%E2几何平均生成变换生成变换后的x0_rawdata
x0=zeros(size(x0_rawdata));
for i=1:n1
  x0(1i)=(prod(Y(11:i)))^(1/i);
end

%1-AGO生成序列(累加)
x1=zeros(1n1);
x1(11)=x0(11);
for i=2:n1
    x1(1i)=x1(1i-1)+x0(1i);
end

%紧邻均值生成
z1=zeros(1n1-1);
for i=1:n1-1
   z1(1i)= 0.5*(x1(1i)+x1(1i+1));
end

%计算矩阵B和向量yn
B=zeros(n1-12);
B(:1)=-z1‘;
B(:2)=ones(n1-11);
yn=x0(2:end)‘;

%计算参数a和b
A=inv(B‘*B)*B‘*yn;
a=A(11);
b=A(21);

%微分方程的离散化解(时间响应序列)
xx1=zeros(1n2);
k=0:n2-1;
xx1(1:)=(x0(1)-b/a)*exp(-a*k) +b/a;


%还原:
xx0=zeros(1n2);
xx0(11)=x0(11);
for i=2:n2
    xx0(i)=xx1(i)-xx1(i-1);
end

%还原1:变换后的x0的预测;还原2:x0的预测
%还原1
Y_undo=zeros(size(xx0));
Y_undo(11)=xx0(11);
for i=2:n2
   Y_undo(1i)= (xx0(1i)^i)/(xx0(1i-1)^(i-1));
end

%还原2
xx0_undo=zeros(size(Y_undo));
T_power_undo=0:n2-1;
xx0_undo=Y_undo./(T.^T_power_undo);

%残差检验
e0=zeros(1n1);%绝对残差
e0=x0_rawdata-xx0_undo(1:n1);
q=zeros(1n1);%相对残差
q=e0./x0_rawdata;
q_mean=mean(abs(q));%平均相对误差(已加绝对值)
q_max=max(abs(q));%最大相对误差(已加绝对值)
fprintf(‘平均相对误差q_mean为(已绝对值化):%f.\n‘q_mean);
fprintf(‘最大相对误差q_max为(已绝对值化):%f.\n‘q_max);

%后验差检验
x0_rawdata_mean=mean(abs(x0_rawdata));
S1=sqrt(sum((x0_rawdata-x0_rawdata_mean).^2)/(n1-1));
e0_mean=mean(abs(e0));
S2=sqrt(sum((e0-e0_mean).^2)/(n1-1));
C=S2/S1;%方差比

p_num=length(find(abs(e0-e0_mean)<0.6745*S1));
p=p_num/n1;%小误差概率
fprintf(‘方差比C为:%f.\n‘C);
fprintf(‘小误差概率p为:%f.\n‘p);

%预测结果的残差检验
e0_pre=pre_rawdata-xx0_undo(n1+1:n2);%绝对残差
q_pre=e0_pre./pre_rawdata;%相对残差
q_pre_mean=mean(abs(q_pre));%平均相对误差(已加绝对值)
q_pre_max=max(abs(q_pre));%最大相对误差(已加绝对值)
fprintf(‘预测结果的平均相对误差q_pre_mean为(已绝对值化):%f.\n‘q_pre_mean);
fprintf(‘预测结果的最大相对误差q_pre_max为(已绝对值化):%f.\n‘q_pre_max);

%打印结果
plot(1:n2data(1:n21)‘‘k.-‘);
hold on;
plot(1:n2xx0_undo‘r.-‘);
legend(‘原始值‘‘预测值‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-24 10:17  GM\
     文件        2821  2016-10-24 10:15  GM\mine.m
     文件       10040  2016-10-24 10:16  GM\mine.xlsx
     文件         480  2016-10-24 10:23  GM\readme.txt
     文件       26064  2016-10-24 10:12  GM\result.jpg
     目录           0  2016-10-24 10:16  GM\灰色预测论文\
     文件      725101  2016-08-10 14:05  GM\灰色预测论文\灰色预测GM_1_1_模型的Matlab实现_朱登远.pdf
     文件      969246  2016-08-12 10:10  GM\灰色预测论文\灰色预测技术及其应用研究_崔立志.caj

评论

共有 条评论