首页 理论教育Boston数据集的回归分析

Boston数据集的回归分析

【摘要】:MASS包中包含Boston数据集(波士顿房价),它记录了波士顿周围506个街区的medv(房价中位数).我们将设法用13个预测变量如rm(每栋住宅的平均房间数),age(平均房龄),lstat(社会经济地位低的家庭所占比例)等来预测medv(房价中位数).(1)首先查看Boston数据集(波士顿房价)中的变量>library(MASS)>fix(Boston)>names(Boston)结果如下

MASS包中包含Boston数据集(波士顿房价),它记录了波士顿周围506个街区的medv(房价中位数).我们将设法用13个预测变量如rm(每栋住宅的平均房间数),age(平均房龄),lstat(社会经济地位低的家庭所占比例)等来预测medv(房价中位数).

(1)首先查看Boston数据集(波士顿房价)中的变量

>library(MASS)

>fix(Boston)

>names(Boston)

结果如下:

[1]"c rim" "zn" "indus" "chas" "nox" "rm" "age"

[8]"dis" "rad" "tax" "pt ratio" "black" "lstat" "medv"

想要了解该数据集的更多信息,可以输入“??Boston”.

(2)用“lm( )”函数拟合简单线性回归模型,将medv作为因变量,lstat作为自变量

首先绑定Boston数据集,

>lm.fit=lm(medvlstat,data=Boston)

>attach(Boston)

>lm.fit=lm(medvlstat)

如果输入“lm.fit”,则会输出一些基本信息.

>lm.fit

结果如下:

用summary(lm.fit)了解更多信息.

>summary(lm.fit)

结果如下:

为了得到系数估计值的置信区间,可以用“confint( )”函数.

>confint(lm.fit)

结果如下:

根据lstat的值预测medv 时,可用“predict( )”函数计算置信区间和预测区间.

>predict(lm.fit,data.frame(lstat=(c(5,10,15))),

+interval="confidence")

结果如下:

>predict(lm.fit,data.frame(lstat=(c(5,10,15))),

+interval="prediction")

结果如下:

如果lstat=10,则相应的0.95置信区间为(24.47413,25.63256),相应的0.95预测区间为(12.827626,37.27907).置信区间和预测区间有相同的中心点.如果lstat=10,则medv的预测值为25.05335.

以下画medv和lstat散点图以及回归直线:

>plot(lstat,medv)

>abline(lm.fit)(www.chuimin.cn)

结果如图3-4所示.

图3-4 medv和lstat散点图以及回归直线

(3)用medv作为因变量,建立lstat和lstat2的多项式回归

在(2)中,我们用medv作为因变量,lstat作为自变量,进行简单线性回归.现在我们用medv作为因变量,建立lstat和lstat2的多项式回归.

>lm.fit2=lm(medvlstat+I(lstat∧2),data=Boston)

>summary(lm.fit2)

结果如下:

通过与(2)进行比较,我们发现增加lstat2使模型比只有lstat作为自变量的模型得到了改进.

(4)用medv作为因变量,建立lstat的(高次)多项式回归

要创建一个三次多项式拟合,我们可以向模型加入lstat3作为自变量.然而,这种方法对于高阶多项式就会变得繁琐.更好的方法是用“poly( )”和“lm( )”函数创建多项式.例如,下面产生一个5阶多项式拟合:

>lm.fit5=lm(medvpoly(lstat,5),data=Boston)

>summary(lm.fit5)

结果如下:

以上结果表明,在模型中加入5阶以下的多项式改善了模型拟合.然而,进一步考察表明,5阶以上的多项式在回归拟合中的p 值并不显著.

(5)用medv作为因变量,建立lstat和age的回归模型

在前面我们用medv作为因变量,lstat作为自变量,进行简单线性回归.现在用medv作为因变量,自变量为lstat和age,继续进行回归分析.

>lm.fit=lm(medvlstat+age,data=Boston)

>summary(lm.fit)

结果如下:

(6)用medv作为因变量,数据集中全部13个自变量,继续进行回归分析

Boston(波斯顿房价)数据集包含13个自变量,用所有自变量进行回归(一一输入会麻烦,可以用如下的快捷方法).

>lm.fit=lm(medv.,data=Boston)

>summary(lm.fit)

结果如下:

如果想用除某一个变量之外所有其他自变量进行回归分析,例如在上面的回归结果中,age变量有很高的p 值(0.958229),可以用如下进行:

>lm.fit=lm(medv.-age,data=Boston)

>summary(lm.fit)

结果如下: