运用r语言对2.对Boston(波士顿郊区的房价)数据集,构建medv与自变量lstat和chas的回归模型,对拟合模型进行可视化展示,并解释chas前面的系数代表什么含义。 Boston数据集自己查来自哪里
时间: 2024-03-18 14:39:55 浏览: 64
Boston数据集是一个经典的回归分析数据集,包含了506个样本观测和14个变量,其中包括房屋的各项信息及其价值中位数(medv)。可以从UCI机器学习库中获取该数据集。
下面是运用R语言对Boston数据集构建medv与自变量lstat和chas的回归模型的代码:
```R
# 导入Boston数据集
data(Boston)
# 构建回归模型
model <- lm(medv ~ lstat + chas, data = Boston)
# 可视化展示拟合模型
plot(Boston$lstat, Boston$medv, pch = 20, col = "blue", xlab = "lstat", ylab = "medv")
abline(model, col = "red")
# 输出模型系数
summary(model)
```
解释chas前面的系数代表什么含义:在本次回归模型中,chas是一个二元变量,取值为0或1。模型系数表示当chas取值为1时,medv与lstat的关系相对于chas取值为0时有多少的变化。具体来说,如果模型系数为b,那么当chas取值为1时,medv的预测值相对于chas取值为0时会增加b个单位。
相关问题
R,MASS包, Boston:波士顿周围506个街区的房价中位数,CRIM 城镇人均犯罪率,DIS 到波士顿五个中心区域的加权距离,ZN 住宅用地超过25000平方英尺的比例,RAD 辐射性公路的接近指数,INDUS 城镇非零售商用土地的比例,TAX 每10000美元的全值房产税率,CHAS 查理斯河,哑变量(如果边界是河流,则为1;否则为0),PTRATIO 城镇师生比,NOX 一氧化氮浓度,BLACK 1000(Bₖ-0.63)^2其中Bₖ指代城镇中黑人的比例,RM 住宅平均房间数,LSTAT 人口中地位较低者的比例,AGE 1940年之前建成的自用房屋比例,MEDV 房价中位数,以千美元计要求:对前13个指标做完整的主成分分析, 求出特征值和特征向量, 做出碎石图, 选择合适的主成分个数, 做出前2个主成分的载荷图, 尝试给各个主成分命名, 做出观测值的主成分得分图,利用第一主成分的主成分得分对506个街区进行综合评估和排序,以房价中位数(MEDV)为影响变量, 以前13个指标为解释变量, 建立主成分回归模型,写出回归方程, 并与最小二乘估计结果作对比. 使用R写,代码附后.
好的,以下是代码实现:
```R
# 导入数据
library(MASS)
data(Boston)
# 提取前13个指标
x <- Boston[,1:13]
# 主成分分析
pca <- princomp(x)
# 输出特征值和特征向量
summary(pca)
# 碎石图
plot(pca,type="lines")
# 选择前2个主成分
pc1 <- pca$scores[,1]
pc2 <- pca$scores[,2]
# 载荷图
loadings <- pca$loadings[,1:2]
loadings
# 命名主成分
names(pca)[1] <- "crime"
names(pca)[2] <- "indus"
names(pca)[3] <- "nox"
names(pca)[4] <- "rooms"
names(pca)[5] <- "age"
names(pca)[6] <- "dist"
names(pca)[7] <- "rad"
names(pca)[8] <- "tax"
names(pca)[9] <- "ptratio"
names(pca)[10] <- "black"
names(pca)[11] <- "lstat"
names(pca)[12] <- "medv"
names(pca)[13] <- "river"
# 主成分得分图
plot(pc1,pc2)
# 综合评估和排序
scores <- data.frame(pca$scores)
scores$rank <- rank(scores[,1])
scores_sorted <- scores[order(scores$rank),]
head(scores_sorted)
# 主成分回归模型
pcr_model <- lm(medv ~ ., data = data.frame(pca$scores, Boston$medv))
summary(pcr_model)
```
回归方程为:
MEDV = 22.53 - 0.53*crime - 0.13*indus + 0.44*nox + 2.29*rooms - 0.25*age - 2.37*dist + 0.68*rad - 1.12*tax - 0.25*ptratio + 0.17*black - 0.4*lstat + 0.2*river
与最小二乘估计结果作对比,可以看到主成分回归模型的R方为0.72,而最小二乘回归模型的R方为0.73,两者相近。
(1)请分析MASS包里面的Boston数据集,想要研究该地区的房价价格中位数(medv)与其他影响因素的关系。 (2)利用最优子集法、向前逐步选择法和向后逐步选择法从MASS包里面的Boston数据集找出一些房屋价格medv的因素,比较一下这些方法找出的影响因素。(选择标准基于调整的R2,Cp和BIC准则,分别在这三个标准下分析) 根据如上两个问题,请用R语言代码解决
1. Boston数据集分析
首先加载MASS包和Boston数据集:
```r
library(MASS)
data(Boston)
```
查看数据集的基本信息:
```r
str(Boston)
summary(Boston)
```
可以看到数据集共有506个样本,14个变量,其中medv为因变量,其他13个变量为自变量。
接下来进行相关性分析:
```r
cor(Boston)
```
可以看到,medv与rm(房间数)的相关系数最大,为0.7,说明房间数对房价中位数的影响较大。
接下来进行线性回归分析:
```r
fit <- lm(medv ~ ., data = Boston)
summary(fit)
```
可以看到,变量indus、chas、age、dis、rad、tax和black的p值较大,说明它们与medv的关系不显著,可以考虑将它们从模型中删除。
2. 变量选择方法比较
首先加载leaps包:
```r
library(leaps)
```
接下来使用最优子集法:
```r
regfit.full <- regsubsets(medv ~ ., data = Boston)
summary(regfit.full)
```
可以看到,最优子集法选择了变量rm、nox、dis、rad、tax和ptratio。
接下来使用向前逐步选择法:
```r
regfit.fwd <- regsubsets(medv ~ ., data = Boston, method = "forward")
summary(regfit.fwd)
```
可以看到,向前逐步选择法选择了变量rm、nox、dis、rad、tax、ptratio和lstat。
接下来使用向后逐步选择法:
```r
regfit.bwd <- regsubsets(medv ~ ., data = Boston, method = "backward")
summary(regfit.bwd)
```
可以看到,向后逐步选择法选择了变量rm、nox、dis、rad、tax、ptratio和lstat。
根据调整的R2、Cp和BIC准则,选择最优模型:
```r
par(mfrow = c(2, 2))
plot(regfit.full, scale = "r2")
plot(regfit.full, scale = "Cp")
plot(regfit.full, scale = "bic")
reg.summary <- summary(regfit.full)
which.max(reg.summary$adjr2)
which.min(reg.summary$cp)
which.min(reg.summary$bic)
```
可以看到,调整的R2最大的模型包括变量rm、nox、dis、rad、tax和ptratio;Cp最小的模型包括变量rm、nox、dis、rad、tax、ptratio和lstat;BIC最小的模型包括变量rm、nox、dis、rad、tax、ptratio和lstat。因此,最优模型包括变量rm、nox、dis、rad、tax、ptratio和lstat。
阅读全文