灰色 GM(1,1)模型在重庆商品房销售价格预测中的应用

灰色 GM(1,1)模型在重庆商品房销售价格预测中的应用
AdamCY888

摘要:本文针对重庆市商品房价格预测问题,介绍了GM(1,1)模型基本原理,利用Python程序设工具,建立GM(1,1)灰色预测模型并进行预测,得到未来三年的预测价格并进行模型评价,从而为购房者提供决策。
关键词:GM(1,1)、重庆、商品房、销售价格、预测

文章目录

    • 一、 引言
    • 二、GM(1,1)模型基本原理
      • 2.1、模型的建立方法
      • 2.2、模型基本特点
    • 三、房价预测模型的建立
      • 3.1、原始数据的获取
      • 3.2、模型的应用
      • 3.3、房价预测及评价
    • 四、结论
    • 参考文献
    • 附录一

一、 引言

    我国的房地产市场已进入快速发展时期,如何采取有效的措施对商品房价格进行价格引导,减少或消除价格偏离导致的不利影响,是事关我国房地产行业可持续发展的一个重要课题。因此,对商品房销售价格的合理分析和准确预测成为当务之急。
    重庆由于其独特的背景在全国各地的房价中处于“低价格”水平,在选择对象中具有研究价值,选取灰色 GM(1,1)模型对重庆市区 2021、2022、2023 年商品房价格进行预测分析,并拟合2012-2020年房价数据进行对比,测算其相对误差。

二、GM(1,1)模型基本原理

    灰色系统理论由我国学者邓聚龙等于 20 世纪 80 年代提出, 灰色系统是指相对于一定的认识层次,系统内部的信息部分已知, 部分未知, 即信息不完全的系统。
    灰色系统理论认为, 由于各种环境因素对系统的影响, 使得表现系统行为特征的离散数据呈现出离乱, 但是这一无规的离散序列是潜在的有规序列的一种表现, 系统总是有其整体功能, 也就必然蕴含着某种内在规律。因而任何随机过程都可看作是在一定时空区域变化的灰色过程, 随机量可看作是灰色量, 通过生成变换可将无规序列变成有规序列。
    GM(1,1)模型的基本原理是基于原始数据逐步变化特性,在数据处理过程中,对原始数列进行累加生成,能够生成具有指数增长规律的数列,通过建立一阶微分方程并对数据进行累减生成,即可得到预测数据。

2.1、模型的建立方法

(1)累加生成
    将原始数列作为随机数列做一次累加,得到累加生成序列 x i ( 1 ) ( i = 0 , 1 , 2 , . . . n ) x_{i}^{(1)}(i=0,1,2,...n) xi(1)(i=0,1,2,...n) 并且满足指数增长规律,因此, x i ( 1 ) ( i = 0 , 1 , 2 , . . . n ) x_{i}^{(1)}(i=0,1,2,...n) xi(1)(i=0,1,2,...n) 满足一阶线性微分方程:
d X ( 1 ) d t + a X ( 1 ) = u \frac{\mathrm{d} X^{(1)}}{\mathrm{d}t}+aX^{(1)}=u dtdX(1)+aX(1)=u
    其中, t t t 代表时间, X ( 1 ) X^{(1)} X(1)是时间的函数。

(2)参数估计
     a a a 为待辨识参数,亦称发展系数,利用最小二乘法求解其近似值。计 u u u 为灰作用量,即待辨识内生变量,则:
a ^ = ( B T B ) − 1 B T y n = ( a u ) \hat{a}=(B^{T}B)^{-1}B^{T}y_{n}=\binom{a}{u} a^=(BTB)1BTyn=(ua)
    然后,将近似值代入原微分方程进行求解。其中:
B = ( − 1 2 ( x 1 ( 1 ) + x 2 ( 1 ) ) 1 − 1 2 ( x 2 ( 1 ) + x 3 ( 1 ) ) 1 : : − 1 2 ( x n − 1 ( 1 ) + x n ( 1 ) ) 1 ) B=\begin{pmatrix} -\frac{1}{2}(x_{1}^{(1)}+x_{2}^{(1)}) & 1 \\ -\frac{1}{2}(x_{2}^{(1)}+x_{3}^{(1)})& 1 \\ : & :\\ -\frac{1}{2}(x_{n-1}^{(1)}+x_{n}^{(1)}) & 1\\ \end{pmatrix} B=21(x1(1)+x2(1))21(x2(1)+x3(1)):21(xn1(1)+xn(1))11:1

y n = [ x 2 ( 0 ) x 3 ( 0 ) : x n ( 0 ) ] y_{n}=\begin{bmatrix} x_{2}^{(0)}\\ x_{3}^{(0)}\\ :\\ x_{n}^{(0)}\\ \end{bmatrix} yn=x2(0)x3(0):xn(0)

(3)求解模型
    对原微分方程求解,可以得到离散时间响应函数,原微分方程的近似解为:
X i + 1 ( 1 ) = [ X i ( 0 ) − u a ] e − a i + u a X_{i+1}^{(1)}=[X_{i}^{(0)}-\frac{u}{a}]e^{-ai}+\frac{u}{a} Xi+1(1)=[Xi(0)au]eai+au

(4)模型预测
    若检验合格,则可以用模型进行预测。
    计算出:
X i + 1 ( 2 ) = X i + 1 ( 1 ) − X i ( 1 ) , X i + 2 ( 2 ) = X i + 2 ( 1 ) − X i + 1 ( 1 ) , . . . X_{i+1}^{(2)}=X_{i+1}^{(1)}-X_{i}^{(1)},X_{i+2}^{(2)}=X_{i+2}^{(1)}-X_{i+1}^{(1)},... Xi+1(2)=Xi+1(1)Xi(1),Xi+2(2)=Xi+2(1)Xi+1(1),...
    即得到 X i + 1 ( 0 ) , X i + 2 ( 0 ) , . . . X_{i+1}^{(0)},X_{i+2}^{(0)},... Xi+1(0),Xi+2(0),...的预测值。

2.2、模型基本特点

    灰色系统理论核心和基础的灰色模型(GreyMode1), 简称 GM 模型, 概括而言具有以下 3 个特点:
    (1)建模所需信息较少, 通常只要有 4 个以上数据即可建模;
    (2)不必知道原始数据分布的先验特征, 对无规或不服从任何分布的任意光滑离散的原始序列, 通过有限次的生成即可转化成为有规序列;
    (3)建模的精度较高, 可保持原系统的特征, 能较好地反映系统的实际状况。
    本文选用灰色 GM(1,1)模型,并借助Python程序设计,使得对重庆房价进行预测研究具有可行性。

三、房价预测模型的建立

3.1、原始数据的获取

    重庆市区为四个直辖市之一,吸引着各地的眼光,外来人口不断增加,房地产行业也不断发展,如何更好的掌握商品房销售价格增长规律,对城市的发展至关重要。以重庆市区 2012-2020 年商品房销售价格为例,对模型的灵敏性进行检验,通过“安居客”平台统计资料可查得相关数据。通过Python程序设计计算GM(1,1)参数并进行拟合预测,代码见附录一。

3.2、模型的应用

    根据灰色预测模型构建原理可得原始数据为:
     [ 6550 , 6896 , 6718 , 6289 , 7493 , 9925 , 12080 , 11187 , 11275 ] T [ 6550, 6896, 6718, 6289, 7493,9925,12080,11187,11275]^{T} [6550,6896,6718,6289,7493,9925,12080,11187,11275]T
    对原始数列进行累加,生成累加生成序列为:
     [ 6550 , 13446 , 20164 , 26453 , 33946 , 43871 , 55951 , 67138 , 78413 ] T [6550, 13446, 20164, 26453, 33946, 43871, 55951, 67138, 78413]^{T} [6550,13446,20164,26453,33946,43871,55951,67138,78413]T

    可求得参数B 矩阵:
B = [ − 9.99800 e + 03 1 − 1.68050 e + 04 1 − 2.33085 e + 04 1 − 3.01995 e + 04 1 − 3.89085 e + 04 1 − 4.99110 e + 04 1 − 6.15445 e + 04 1 − 7.27755 e + 04 1 ] B = \begin{bmatrix} -9.99800e+03 & 1\\ -1.68050e+04 & 1\\ -2.33085e+04& 1\\ -3.01995e+04& 1\\ -3.89085e+04 & 1\\ -4.99110e+04 & 1\\ -6.15445e+04 & 1\\ -7.27755e+04 & 1 \end{bmatrix} B=9.99800e+031.68050e+042.33085e+043.01995e+043.89085e+044.99110e+046.15445e+047.27755e+0411111111

     y y y矩阵为:
y = [ 6896 , 6718 , 6289 , 7493 , 9925 , 12080 , 11187 , 11275 ] T y= [6896,6718, 6289, 7493, 9925,12080,11187,11275]^{T} y=[6896,6718,6289,7493,9925,12080,11187,11275]T
    将以上参数带入公式 GM(1,1)求解,最小二乘估计参数为:
     a a a = -0.09682929, b b b =4549.89922748 , b / a b/a b/a = -46988.87347486
    将求解的 a a a b b b 数值带入公式,可以得到 GM(1,1)模型的函数式将 2012-2020 年原始数据带入公式,即可求得相对应的预测值。

3.3、房价预测及评价

    模型通过对房价进行预测,求得 2021-2023 年重庆市区商品房销售价格预测值,以及2012-2020 年的拟合值以及相对误差。

2021-2023 年重庆市区商品房销售价格预测值(元/m2)
年份 2021 2022 2023
预测价格 13494 14849 16341
2012-2020 年重庆市区商品房销售价格、检验值以及拟合相对误差
年份 2012 2013 2014 2015 2016 2017 2018 2019 2020
实际价格 6550 6896 6718 6289 7493 9925 12080 11187 11275
拟合价格 6550 6275 6905 7599 8362 9202 10126 11143 12262
相对误差 —— -9.01% 2.78% 20.82% 11.60% -7.29% -16.18% -0.39% 8.76%

四、结论

    (1)求得 2021、2022、2023 年的预测值
    (2)从上述对于 2012-2020 年的拟合值中可以发现,其拟合值并不等于真实值,且相对误差有一定波动,模型效果一般。
    (3)针对上述(2)尚需改进的地方在于对拟合结果进行检验,判断GM(1,1)模型在本 问题研究中拟合效果的优良程度。

参考文献

[1]赵泰,迟建英.灰色 GM(1,1)模型在商品房销售价格预测中的应用[J].价值工程,2019.23(35):76—77
[2]王全意. 重庆直辖以来城乡居民收入差距变化趋势预测[J].重庆理工大学学报(社会学科),2011,25(1):45—50

附录一

#项目:实现GM(1,1)模型,求解参数及预测拟合。
#author:AdamCY888

import numpy as np
from math import e
m = 0
x0 = [ 6550, 6896,  6718, 6289, 7493,9925,12080,11187,11275]##2012-2020 年数据
x1 = list()
b = list()
for i in x0:
      m += i
      x1.append(m) ## x1 为 x0 的一次累加向量
for i in range(len(x0)-1):
      b.append(list((-0.5*(x1[i]+x1[i+1]),1)))
B = np.mat(b) ##高维列表转换为矩阵
Y = np.transpose(np.mat(x0[1:])) 
a = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(B),B)),np.transpose(B)),Y)
z = a[1]/a[0]
print("一次累加序列矩阵为:\n",x1)
print("B 矩阵为:\n",B)
print("Y 矩阵为:\n",Y)
print("最小二乘估计参数为:\n",a)
print("a = %s,b = %s"%(a[0],a[1]))
print("b/a = %s\n"%z)
mmm = list()
for i in range(len(x0)+2):
      A = (1-pow(e,float(a[0]))) * (x0[0] - z)*pow(e,-(float(a[0]))*(i+1) )
      mmm.append(A)
      print("%d 年的拟合值为%s" %(2013+i,A))
for i in range(len(x0)-1):
      AA = 100*abs(x0[i+1] - mmm[i])/x0[i+1]
      print("%d 年相对误差为:%s"%(2013+i,AA))

你可能感兴趣的:(Python_数据挖掘与分析,python,GM(1,1),数据分析,灰色模型)