1. 引言
房地产市场是反映一个国家经济状况的具体表现,是我国国民经济发展的支柱行业,是人民安居乐业的载体。房地产市场长期的低迷不利于刺激发展过程中投资者的热情,不利于国民经济的健康稳定。房价也是影响居民购买力、理财、教育文化和制定决策的重要考虑因素,但近年来的房价波动,使得人们在是否购房上面犹豫不决。本文意在利用2012年1月~2021年1月的月度数据,采用ARIMA模型对天津市新建商品房未来一段时间的价格指数进行预测,希望这个结果能够对天津市想要买房的人员有一个参考作用,也希望能够帮助到天津市政府,对改良房价提供帮助 [1]。
2. 数据来源
附录1为所搜集到的2012年1月到2021年1月天津市的房价数据。
3. 研究方法
1) ARIMA模型介绍
ARIMA模型(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。ARIMA(p, d, q)中,AR是“自回归”,p为自回归项数;MA为“滑动平均”,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)。是美国统计学家G.E.P.Box和英国统计学家G.M.Jenkins在前人时间序列研究的基础上新创立的一种对于时间模型识别、估计、检验及预测的分析方法 [2]。
一般来说,很多时间序列本身是非平稳的,在进行适当差分之后就会变成一个平稳时间序列,对差分平稳时间序列可以使用ARIMA模型进行拟合,ARIMA(p, d, q)模型的结构如下:
其中,
为均值为零,方差为
的白噪声,且
,
;
;
为平稳可逆的ARMA(p, q)模型的自回归系数多项式;
为平稳可逆的ARMA(p, q)模型的移动平滑系数多项式。
2) 差分运算:
为了将非平稳时间序列转化为平稳时间序列,我们需要对该序列做差分运算。对于一个序列
来说,相邻两时刻序列值之差称为一阶差分表示为
,对一阶向后差分一阶所得序列
在进行一阶向后差分运算就得到2阶向后差分,记为
,即
,本文中只用到2阶差分 [3]。
4. 实际序列模型建立
天津市住房指数未来走势实证分析
1) 序列平稳性检验
本文数据来源于安居客(https://tj.fang.anjuke.com/fangjia/),数据内容为2012年1月~2021年1月的月度时间序列数据,数据内容是天津市新建商品住房的价格,这里我们首先对这个数据进行时间序列分析,先画出其时序图,如下图所示:

Figure 1. Sequence diagram of stationary test
图1. 平稳检验时序图
图1为2012年~2020年天津市房价时序图,从图1可以看出,自2012年~2020年天津市房价前期总体呈上升趋势,在2017年之后有一个下降,且下降趋势过于明显且降幅过大,所以它很有可能不是一个平稳时间序列。
图2,图3为序列的自相关图和偏自相关图,从图2我们可以看到,自相关图具有很强的拖尾性,并且自相关系数长期大于0,表现出很强的自相关性。图3可以看出偏自相关1阶截尾。
由于该序列为非平稳的时间序列,所以我们对其进行差分处理,依据数据最优以及准确性原则,我们对其进行2阶差分。图4为差分之后的时序图,从图1可以看出从2012年1月到2021年1月天津市的新建商品房的销售价格的月度价格始终围绕在21000附近随即波动,没有什么明显的周期线特征和趋势,所以该序列可以基本视为平稳时间序列。

Figure 4. 2 Sequence diagram after order difference
图4. 2阶差分之后的时序图
但为了使结论更为严谨,我们做出其自相关图进行进一步分析,图5为销售价格的时间序列自相关图。从平稳序列的自相关图中可以看出,在新建商品住房的价格指数ACF在延迟2阶之后,全部衰减到2倍标准差之内,且自相关图在延迟2阶之后具有明显的截尾特征,所以可以认为该序列为非常强的平稳序列。下面我们在所给的自相关图的基础上做出它的偏自相关图,图6所示,来进一步确认该序列的截尾关图如下所示:

Figure 5. Second order difference sequence autocorrelation graph
图5. 2阶差分序列自相关图

Figure 6. Second partial autocorrelation diagram of order difference sequence
图6. 2阶差分序列偏自相关图
2) 模型选择与参数估计
此时选择ARIMA(p, d, q)模型进行预测时,参数选择根据0,1,2从低阶到高阶选择,根据AIC准则作为选择最优值模型。根据附录2程序运算可得如下结果,根据AIC最下即最优原则,我们选择ARIMA(1, 2, 1)模型。
3) 白噪声检验
对残差序列进行白噪声检验,得出p值 = 0.2835 > 0.05,表2。残差序列白噪声检验说明模型显著。即ARIMA(1, 2, 1)模型对时间序列拟合成功。
根据估计结果,确定了该模型的拟合结果为:
,
4) 模型预测
运用上述得到的ARIMA(1, 2, 1)模型对天津市2021年房价分别进行置信水平为80%和90%双层置信区间进行预测,并给出预测表(表3)及预测图(图7)。

Table 3. Comparison between predicted and actual housing prices in Tianjin
表3. 天津市房价预测值与实际值对比
从预测图中可以看出,预测数据与实际数据的误差区域狭窄,说明预测与实际情况直接基本吻合,由此说明ARIMA(1, 2, 1)模型拟合效果良好,以此模型来得出的预测结果基本上是可信的,从图中也可以看出在接下来5个月天津市的房价将会持续下降,且这个预测的95%的置信区间为(16,665, 22,314)。这说明天津市在未来一段时间内房价市场将会持续低迷,也不会有明显的好转,从天津目前的房价情况来看,可以折射出我国房价在2021年也基本上看不到有回暖的趋势 [4]。图8为天津市房价模型的个性化预测图,散点图为观测值序列,实线为拟合值,虚线为置信度为95%的置信线。
5. 模型评价
模型优点:
① 该模型是经历一系列的差分以及参数估计来确定的,准确度较高。
② 根据所得到的房价预测情况,可对居民购房决策提供一定的参考。
③ 通过预测值与实际值的对比,我们发现实际值在预测范围之内,我们有理由相信该模型具有很强的可信度。
模型缺点:
虽然实际值整体在预测范围之内,但是我们发现预测值整体偏高,可能是由于在数据采集过程中有数据缺失,或者在差分时处理完善,也表明该模型还具有改良空间。
6. 结论
本文搜集了2012年1月~2021年1月天津市的房价情况,分别采用了差分、参数估计、模型预测的方法建立模型,在此基础上对序列进行分析,并预测了5期序列值。该模型也较好总结了天津市近10年房价的整体情况,以及总体发展趋势,序列结果具有较高可信度。这就是政府必须积极采取宏观措施,使得房地产市场走出目前的窘境,当然目前房地产出现如此情况,也并非政府的不作为而引发,而是“炒房”所引起的。房地产经济对于国民经济的发展具有重要作用,房地产的良性发展,对我们国家经济的发展有一个带动作用,因此调整好产业结构,对提高人民美好生活的向往有着重要作用 [5]。由于房地产价格的高低不定的原因,使得居民购买时内心也是飘忽不定,由此造成买房热情浓缩,在买房问题上犹豫不决。在这里我们利用指数平滑模型对天津市房价进行预测,从中发现了房价随时间变化的过程。揭示了天津市房地产价格发展变化规律,并通过对数据的合理分析对数据进行了预测,为近期人们在天津市购房提供了理论性的保障。我们还通过对实际问题的调查,对其依据房价构成模型选择的指标进行分析,揭示了房价波动是宏观政策调控的结果。为了保证房价稳健发展使房价能很好的通过市场机制调整,这里给出了合理的调控建议,有参考意义。 时间序列模型对短期经济预测的准确度较高,所以从计量经济学真正的应用到生产中之后,就一直在延续和发展中求完善 [6]。
基金项目
校级大创项目资助(项目编号:202112026419)。
附录
附录1:原始数据
附录2:程序
a<-read.table(D:/Gemini/天津房价.csv,sep=,header=T);a
x1<-ts(a$房价,start=c(2012,1),frequency=12)
plot(x1)
acf(x1)
pacf(x1)
x.fix<-diff(x1,1,2)
plot(x.fix)
acf(x.fix)
pacf(x.fix)
z1.fix<-arima(x1,order=c(1,2,0),method=ML)
for(i in 1:2)print(Box.test(z1.fix$residuals,lag=6*i))
z1.fix$aic
z2.fix<-arima(x1,order=c(1,2,1),method=ML)
for(i in 1:2)print(Box.test(z2.fix$residuals,lag=6*i))
z2.fix$aic
z3.fix<-arima(x1,order=c(2,2,0),method=ML)
for(i in 1:2)print(Box.test(z3.fix$residuals,lag=6*i))
z3.fix$aic
z4.fix<-arima(x1,order=c(2,2,1),method=ML)
for(i in 1:2)print(Box.test(z4.fix$residuals,lag=6*i))
z4.fix$aic
x1.fix<-arima(x1,order=c(1,2,1));x1.fix
library(forecast)
x.fore<-forecast(x1.fix,h=5)
x.fore
plot(x.fore)
Q1<-x1.fore$fitted-1.96*sqrt(x1.fix$sigma2)
Q2<-x1.fore$fitted+1.96*sqrt(x1.fix$sigma2)
B1<-ts(x1.fore$lower[,2])
B2<-ts(x1.fore$upper[,2])
J1<-min(x1,Q1,B1)
J2<-max(x1,Q2,B2)
plot(x1,type=o,pch=1,ylim=c(J1,J2))
lines(x1.fore$fitted,col=4,lwd=2)
lines(x1.fore$mean,col=4,lwd=2)
lines(Q1,col=6,lty=2,lwd=2)
lines(Q2,col=6,lty=2,lwd=2)
lines(B1,col=7,lty=2,lwd=2)
lines(B2,col=7,lty=2,lwd=2)