【房价预测】基于matlab GM模型房价预测【含Matlab源码 346期】
一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【房价预测】基于matlab GM模型房价预测【含Matlab源码 346期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、灰色模型简介
1 灰色系统介绍
灰色系统是由华中科技大学的邓聚龙教授于80年代初创立,该系统作为新兴的横断学科,在短短的二十年里已得到了长足的发展。 其已经成为社会,经济,科教,科技等很多领域进行预测,决策,评估,规划,控制,系统分析和建模的重要方法之一。特别是它对于时间序列短,统计数据少,信息不完全系统的建模与分析,具有非常显著的功效。
灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。
2 灰色系统的基本原理
公理1 差异信息原理
”差异“是信息,凡信息必有差异。
公理2 解的非唯一性原理
信息不完全,不确定的解是非唯一的。该原理是灰色系统理论解决实际问题所遵循的基本法则。
公理3 最少信息原理
灰色系统理论的特点是充分开发利用已占有的”最少信息”。
公理4 认知根据原理
信息是认知的根据。
公理5 新信息优先原理
新信息对认知的作用大于老信息。
公理6 灰性不灭原理
“信息不完全”是绝对的。
3 灰生成技术
3.1 灰色序列生成
是一种通过对原始数据的挖掘,整理来寻求数据变化的现实规律的途径,简称灰生成。
3.2 灰生成特点
在保持原序列形式的前提下,改变序列中的数据的值与性质。一切灰色序列都能通过某种生成弱化其随机性,显现其规律性。
3.3 灰生成的作用
(1)统一序列的目标性质,为灰决策提供基础。
(2)将摆动序列转化为单调增长序列,以利于灰建模。
(3)揭示潜藏在序列中的递增势态,变不可比为可比序列。
4 常见的几种灰色生成类型:
4.1 累加生成算子(AGO)
定义 累加生成算子是对原序列中的数据依次累加得到的数列。
4.2 逆累加生成算子(IAGO)
逆累加生成算子其实就是累减生成,上面是累加,计算步骤跟上面差不多,就是变成了减号罢了。
首先我们先生成序列
4.3 均值生成算子(MEAN)
看到标题大家可能就知道怎么计算了,我们需要将序列中的前后相邻的两数取平均数,以获得生成新的序列。
4.4 级比生成算子
5 GM(1,1)模型
我们先简单说明一下模型成立的前提,灰色理论认为一个系统的行为现象虽然是朦胧的,数据是复杂的,但是他一定会包含一定的规律在其中,如果你了解过傅里叶,那么你可以很轻松的理解一个系统暗含规律的情况。灰数的生成就是为了从杂乱的数据中找到规律。因此灰色模型所用的数据是生成数据而非原始数据。
三、部分源代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
axis=[1999.00,2000.00,2001.00,2002.00,2003.00,2004.00,2005.00,2006.00,2007.00,2008.00,2009.00,2010.00];%年份
a=[3422.00,3565.00,3866.00,4134.00,5118.00,5855.00,6842.00,7196.00,10320.00,13411,15800,21600];%房价
a1=leija(a,12);%得到X1(k)
f=[0];
bf=cat(2,f,a1);
bf2=cat(2,a1,f);
bf3=ones(11,1);
B=-0.5*(bf+bf2);
B=B(2:12)';
B=cat(2,B,bf3);%得到矩阵B
Y=a(2:12)';%得到矩阵Y
A=(inv(B'*B))*B'*Y;%得到矩阵A
anum=A(1)
bnum=A(2)%两个系数
a1yuce=zeros(1,11);
for i=0:11
a1yuce(i+1)=(a(1)-bnum/anum)*exp(-anum*i)+bnum/anum;
end %生成X1(k)预测值
ayuce=leijian(a1yuce,12);%生成X(k)预测值
plot (axis,ayuce,'g')
hold on
plot(axis,a,'r')%做出图形
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%求的绝对残差序列
chazhi=(ayuce-a).^2;
chazhi=sqrt(chazhi);
%相对残差序列
xiangdui=chazhi./a;
%平均相对残差
meanxd=mean(xiangdui);
%求关联度
ayuce1=ayuce./ayuce(1);
a1=a./a(1);
zuix=zeros(1,12);
zuid=zeros(1,12);
for i=1:12
zuix(i)=min(sqrt((ayuce1(i)-a1).^2));
zuid(i)=max(sqrt((ayuce1(i)-a1).^2));
end
zuixiao=min(zuix');
zuida=max(zuid');
e=zeros(1,12);
for i=1:12
e(i)=(zuixiao+0.5*zuida)/(abs(ayuce1(i)-a1(i))+0.5*zuida);
end
R=mean(e)
%后验差检验
%原始序列的均值
meana=mean(a);
%原始序列的均方差
S1=sqrt(sum((a-meana).^2)/11);
%残差的均值
meanchazhi=mean(chazhi);
S2=sqrt(sum((chazhi-meanchazhi).^2)/11);
%方差比
C=S2/S1
%残差概率
k=0;
for i=1:12
if abs((chazhi(i)-meanchazhi))<0.6745*S1
k=k+1;
end
end
P=k/12
%GM(1,1)残差模型
eyuce=yuce(e,12);
ayuce=ayuce-eyuce;
%plot(axis,ayuce,'k')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%求的绝对残差序列
chazhi=(ayuce-a).^2;
chazhi=sqrt(chazhi);
%相对残差序列
xiangdui=chazhi./a;
%平均相对残差
meanxd=mean(xiangdui);
%求关联度
ayuce1=ayuce./ayuce(1);
a1=a./a(1);
zuix=zeros(1,12);
zuid=zeros(1,12);
for i=1:12
zuix(i)=min(sqrt((ayuce1(i)-a1).^2));
zuid(i)=max(sqrt((ayuce1(i)-a1).^2));
end
zuixiao=min(zuix');
zuida=max(zuid');
e=zeros(1,12);
for i=1:12
e(i)=(zuixiao+0.5*zuida)/(abs(ayuce1(i)-a1(i))+0.5*zuida);
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
四、运行结果
五、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/113891412
- 点赞
- 收藏
- 关注作者
评论(0)