经济增长一直以来都是我国宏观经济政策的目标之一,研究影响经济增长的因素对促进我国经济快速发展有着重要意义。本实验运用 R 语言编写代码拟合多元线性回归模型,对模型拟合结果进行诊断,即对假设前提进行检验,并选择最优模型,最终进行区间预测,定性的研究影响我国经济增长的因素。
本课程难度为简单,属于初级级别课程,适合具有 R 语言基础的用户,熟悉 R 语言基础知识,加深巩固一些基础操作,并学会运用 R 语言的回归方法。
拟合多元线性回归模型需要用到 OLS 估计方法,也叫普通最小二乘估计法。
当满足估计准则,残差平方和最小时的模型参数值就是我们所要的参数估计值。
本次实验所需的数据已经上传,在实验楼环境下需要用到 wget
命令来获取。
wget http://labfile.oss.aliyuncs.com/courses/894/yeardata.csv
在实验之前,先在实验楼环境下启动 R 软件。
sudo R
首先,下载本次试验需要用到 car
软件包,其中镜像选择 China。
install.packages("Matrix")
install.packages("lme4")
install.packages("pbkrtest")
install.packages("car")
注意,此加载过程耗时可能会比较多,请耐心等待。
然后,再调用程序包
library(car)
导入我们上传的 CSV 文件需要 read.csv
命令,csv
是文件的后缀,如果我们导入的是 excel 文件,应使用 read.xlsx
命令等。data 是导入后 R 的数据框。
data<-read.csv("yeardata.csv")
data #表示查看导入的数据
可以看到 data 数据集中有 GDP、Consumption、M0、EM 和 Investment 五个变量,它们分别代表国内生产总值、消费、货币供应量、进出口总额、投资五个因素。其中国内生产总值 GDP 代表我国的经济增长状况,是响应变量;其他四个变量是影响经济增长的因素,都是解释变量。
查看变量之间的相关性,我们可以用 cor
函数得出变量之间的相关系数矩阵,或者用 scatterplotMatrix
函数,直接绘制散点图矩阵来查看变量之间的相关性。scatterplotMatrix 函数默认在非对角线区域绘制变量间的散点图,并添加平滑(loess)和线性拟合曲线。
cor(data)
由相关系数矩阵结果我们可以看到各个变量之间的相关系数都达到了 0.9 以上,是高度线性相关的,可以拟合线性回归模型。
当然,如果我们只是对数据中的部分变量求相关系数矩阵,也可以使用下面的命令:
cor(data[c("GDP","Consumption","M0")])
我们再以图形的方式展现出来:
scatterplotMatrix(data,spread=FALSE,main="Scatter Plot Matrix via car package") #spread=FALSE 表示删除了残差正负均方根在平滑曲线上的展开和非对称信息
通过 car
包绘制的散点图矩阵我们可以看出 GDP 和 Consumption、M0、EM、Investment之间基本都呈现正相关的线性关系。
由变量间相关性实验结果,我们可以知道各个变量之间有正相关的线性关系,选择的解释变量比较合适,因此我们可以拟合以 GDP 为因变量,其他四个变量 Consumption、M0、EM、Investment 为自变量的多元回归模型。
拟合多元线性回归模型,需要用到 lm
函数。函数调用方式为:
GDP<-data[,1] #表示将 data 数据框中的第一列赋值给 GDP
Consumption<-data[,2] #表示将 data 数据框中的第二列赋值给 Consumption
M0<-data[,3] #表示将 data 数据框中的第三列赋值给 M0
EM<-data[,4] #表示将 data 数据框中的第四列赋值给 EM
Investment<-data[,5] #表示将 data 数据框中的第一列赋值给 Investment
fit<-lm(GDP~Consumption+M0+EM+Investment)
fit
当然也可以直接在函数拟合时,加入data=*
命令来代替前面的变量赋值,结果都一样。
fit<-lm(GDP~Consumption+M0+EM+Investment,data=data) #lm函数中,符号“~”左边表示因变量,右边的表示自变量,多个自变量之间用“+”连接;data=* 表示变量来自 * 数据框中,此处为 data。
fit #查看模型拟合结果
所得的多元回归方程为:
还可以运用 summary
函数来查看模型的详细拟合结果:
summary(fit)
Residuals
列出了残差的最小值(Min)、四分之一分位数(1Q)、中位数(Median)、四分之三分位数(3Q)、最大值(Max)。
Coefficients
列出了每个自变量(包括截距项)的估计值(Estimate)、标准差(Std.Error)、t 值(t value)和 P 值(Pr(>|t|))。可以看到在 5% 的显著性水平上,除了自变量 Investment 不显著,其他自变量都是显著的。
判断模型拟合效果的可决系数也叫判定系数 R^2 的值。可以看到R^2接近于 1 ,说明模型拟合效果很好。
还有判断模型联合显著性的 F 统计量的值:F-statistic=2.242e+04,自由度为(4,33),P-value <2.1*e-16。结果表面在 1% 的显著性水平下,模型是联合显著的,模型拟合的很好。
我们上面拟合的多元线性回归模型是基于我们在理论模型中提到的假设条件而成的,所以在确认我们的回归模型之前要先进行假设检验,即回归模型的诊断。
回归模型的诊断,最常用的的方法是使用 plot
函数。
par(mfrow=c(2,2)) #将图形以两行两列的形式列在一个图形窗口
plot(fit)
Residuals vs Fitted
图(左上)主要用于检验假定 1:线性于参数,图中显示结果残差值和拟合值基本没有比较明显的关联,则说明自变量与因变量之间是线性关系,满足假定 1。
Normal Q-Q
图(右上)主要检验误差项的正态性,若满足正态性的假设,则图上的圆点应落在 45 度
角的直线上;反之,则不满足正态性的假设。从图中结果来看,基本满足正态性的假设。
Scale-Location
图(左下)主要检验误差的同方差性的假设,若水平线周围的点随机分布,则满足同方差假设;反之,则不满足。而观察此处结果,满足同方差性的假设。
Residuals vs Leverage
图(右下)主要用于观察数据中的单个值,不用于假设检验。
至于其他假设检验我们不在此处学习。
对于模型的最优选择问题,我们可以使用赤池信息准则(AIC
)来进行比较,它的原理是在可决系数于自变量的个数之间权衡,选择二者的最佳组合。AIC 值越小,表明模型拟合效果越好。
fit1<-lm(GDP~Consumption+M0+EM+Investment,data=data)
fit2<-lm(GDP~Consumption+M0+EM,data=data)
fit3<-lm(GDP~Consumption+M0,data=data)
fit4<-lm(GDP~Consumption,data=data)
AIC(fit1,fit2,fit3,fit4)
AIC 准则结果表面 fit2 AIC 值最小,拟合结果最好,即选择 Consumption、M0、EM 三个变量为自变量的多元线性回归模型为最优模型。这于前面模型详细拟合结果里 Investment 的 t 检验结果不显著,而其他三个变量 t 检验结果显著刚好一致。
由以上实验表明选择影响 GDP 增长的因素主要有:消费、货币供应量、以及进出口。
重新拟合最优模型:
fit<-lm(GDP~Consumption+M0+EM,data=data)
summary(fit)
由此得出多元回归方程为:
注,括号里为标准差
回归方程的截距项是 -761.13,消费(Consumption)每变动一个单位引起以 GDP 为代表的经济增长 1.67 个单位,货币(M0)每增加一个单位的供应会引起 GDP 增加 1.38 ,同理进出口总额(EM)每增加一个单位会引起 GDP 增加 0.43。也就是说,为了促进我国经济的快速发展,可以采取刺激消费来促进经济增长;也可以适当的增加货币供应量但不能过多投放,因为会引起通货膨胀;还可以扩大对外开放程度来增加进出口从而促进经济增长。
进行模型的预测,需要用到 predict
函数。实验数据时间为 1978-2015 年,假设 2016 年的自变量(Consumption,M0,EM)的值为 (330000,65000,250000),相应 GDP 的概率为 0.95 的预测区间。
new<-data.frame(Consumption=c(330000),M0=c(65000),EM=(250000)) #导入自变量的值
lm.pred<-predict(fit,new,interval="prediction",level=0.95) #进行预测
lm.pred
结果显示,当自变量(Consumption,M0,EM)=(330000,65000,250000) 时,我们可以预测到GDP的值为 746156.6,95% 的预测区间为(734914.7,757398.5)
本次实验完整的研究了多元线性回归模型,首先简单的介绍了多元线性回归模型的基本理论,然后运用 R 语言实现多元回归模型的拟合,学习了如何求变量间的相关系数矩阵和画散点图矩阵,然后运用 lm 函数拟合回归模型,对模型拟合结果进行假设检验,并运用赤池信息准则选择最优模型,最终对拟合的最优模型进行预测。通过本次实验会学会如何运用 R 语言进行多元线性回归分析,更加熟练运用 R 语言。