Boston Housing 数据集的主成分分析与回归建模
首先,我们使用 prcomp() 函数进行主成分分析。在这里,我们选择了 Boston 数据集的前 13 列数据进行分析。然后,我们使用 summary() 函数查看主成分分析的结果,并使用 plot() 函数绘制碎石图。
接下来,我们选择前 2 个主成分,即 pcr$x[,1:2],并提取主成分载荷,即 pcr$rotation[,1:2]。然后,我们使用 biplot() 函数绘制主成分分析的载荷图和观测值的主成分得分图。
为了更好地理解主成分的含义,我们命名每个主成分。这可以通过给 pcr$rotation 中每个列名赋值来实现。
然后,我们使用 predict() 函数计算每个观测值的主成分得分,得到一个名为 pcr_score 的数据框。我们还使用 data.frame() 函数将 pcr_score 数据框中的 medv 列和第一个主成分得分列组合成一个名为 Boston_score 的新数据框。
接下来,我们按照主成分得分的降序对 Boston_score 数据框进行排序,并将结果存储在 rank 变量中。
最后,我们使用 lm() 函数拟合主成分回归模型,并使用 summary() 函数输出回归方程的摘要。
library(MASS)
# 导入数据
data(Boston)
pcr <- prcomp(Boston[,1:13], scale = TRUE) # 主成分分析
summary(pcr) # 结果输出
plot(100*pcr$sdev^2/sum(pcr$sdev^2), xlab='Principal Component',
ylab='Percent Variance Explained', ylim=c(0,60), type='b') # 碎石图
pcr2 <- pcr$x[,1:2] # 选择前 2 个主成分
loadings <- pcr$rotation[,1:2] # 载荷图
biplot(pcr, scale = 0)
# 主成分命名
names(pcr$rotation)[1] <- 'COMMUNITY'
names(pcr$rotation)[2] <- 'LOCATION'
names(pcr$rotation)[3] <- 'LAND_USE'
names(pcr$rotation)[4] <- 'PROPERTY_TAX'
names(pcr$rotation)[5] <- 'RIVER'
names(pcr$rotation)[6] <- 'SCHOOL_RATIO'
names(pcr$rotation)[7] <- 'AIR_POLLUTION'
names(pcr$rotation)[8] <- 'MINORITY_STATUS'
names(pcr$rotation)[9] <- 'CRIME_RATE'
names(pcr$rotation)[10] <- 'MEDIAN_VALUE'
names(pcr$rotation)[11] <- 'NO_OF_ROOMS'
names(pcr$rotation)[12] <- 'DISTANCE_TO_CENTRE'
names(pcr$rotation)[13] <- 'HIGHWAY_ACCESS'
plot(pcr2, col = Boston$medv) # 观测值的主成分得分图
pcr_score <- predict(pcr, newdata = Boston[,1:13]) # 综合评估和排序
Boston_score <- data.frame(medv = Boston$medv, PC1 =pcr_score[,1])
rank <- Boston_score[order(-Boston_score$PC1),]
pcr_lm <- lm(PC1 ~ ., data = as.data.frame(pcr$x)) # 主成分回归模型
summary(pcr_lm) # 回归方程输出
通过主成分分析和回归建模,我们可以更深入地理解 Boston Housing 数据集,并分析不同因素对房屋中位数价格的影响。
原文地址: https://www.cveoy.top/t/topic/ordh 著作权归作者所有。请勿转载和采集!