题目
MASS 库中包含 Boston (波士顿房价)数据集,它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数), age (平均房 龄), lstat (社会经济地位低的家庭所占比例)等来预测 medv (房价中位数)。
************************************************MASS是R语言自带的库********************************************************
library(MASS) #加载MASS程序包
library(ISLR) #加载ISLR程序包,确保事先已经下载install.packages("ISLR")
fix(Boston) #打开Boston房价数据,excel
names(Boston) #查看所有的数据特征,即:列属性
# [1] "crim" "zn" "indus" "chas" "nox" "rm"
# [7] "age" "dis" "rad" "tax" "ptratio" "black"
# [13] "lstat" "medv"
?Boston#查看Boston的更多数据信息(帮助文档)
准备好了数据集,我们开始用 lm ()函数拟合一个简单线性回归模型开始,将 lstat 作为预测变量, medv 作 为响应变量。基本句法是 lm (y ~ x , data) ,其中 y 是响应变量, x 是预测变量, data 是这 两个变量所属的数据集。
lm.fit=lm(medv~lstat)
发现提示错误:Error in eval(predvars, data, env) : 找不到对象'medv'
因为 R 不知道哪里可以找到变量 medv 和 lstat。下一行命令告诉 R,变 量在 Bosto日数据集中。如果绑定 Boston 数据集, R 就能识别变量,此时第一行语句可以正 常工作。
lm.fit=lm(medv~lstat,data=Boston)
attach(Boston)
lm.fit=lm(medv~lstat)
lm.fit
# Call:
# lm(formula = medv ~ lstat)
# Coefficients : 系数
# (Intercept) lstat
# 34.55 -0.95
如果我们输入 lm. fit ,则会输出模型的一些基本信息,这给出了预测的线性函数的截距以及系数。那么预测的线性函数就已经出来了。
summary(lm.fit)
Call:
lm(formula = medv ~ lstat)
Residuals: 残差
Min 1Q Median 3Q Max
-15.168 -3.990 -1.318 2.034 24.500
Coefficients:
Estimate Std. Error t value Pr(>|t|) #估计标准误差t值
(Intercept) 34.55384 0.56263 61.41 <2e-16 ***
lstat -0.95005 0.03873 -24.53 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.216 on 504 degrees of freedom #预测的残差标准误
#Coefficient of determination(有的译为“决定性系数”)。
Multiple R-squared: 0.5441, Adjusted R-squared: 0.5432
#F统计量 P值
F-statistic: 601.6 on 1 and 504 DF, p-value: < 2.2e-16
这一句会列出系数的p值和标准误,以及模型R^2统计