使用R语言对Boston Housing数据集进行主成分分析与回归建模

加载数据

library(MASS)
data(Boston)

主成分分析

  1. 提取前13个变量
X <- Boston[,1:13]
  1. 进行主成分分析
pca <- princomp(X)
  1. 获取主成分得分、载荷、标准差、方差和协方差矩阵
pca$scores  # 主成分得分
pca$loadings  # 载荷
pca$sdev  # 标准差
pca$variance  # 方差
pca$cov  # 协方差矩阵
  1. 绘制碎石图
plot(pca)
  1. 选择前两个主成分
pca2 <- pca
pca2$loadings <- pca2$loadings[,1:2]
pca2$scores <- pca2$scores[,1:2]
pca2$sdev <- pca2$sdev[1:2]
pca2$variance <- pca2$variance[1:2]
pca2$cov <- pca2$cov[,1:2][1:2,]
  1. 绘制载荷图
biplot(pca2)
  1. 给主成分命名
names(pca2$loadings)[1] <- 'Crime'
names(pca2$loadings)[2] <- 'Residence'
  1. 绘制主成分得分图
plot(pca2$scores)

回归建模

  1. 根据主成分得分对数据进行排序
rank <- order(pca2$scores[,1])
ranked_data <- Boston[rank,]
  1. 使用前两个主成分构建回归模型
fit <- lm(MEDV ~ Crime + Residence, data = X)  # 使用原始数据集X
summary(fit)

常见错误及解决办法

在使用lm()函数构建回归模型时,可能会出现以下错误:

  • Error in eval(predvars, data, env) : 找不到对象'MEDV'
  • Error in eval(predvars, data, env) : 找不到对象'Crime'

原因: 变量名大小写不一致导致的。在Boston数据集中,目标变量名为MEDV,主成分分析中使用的变量名为X,而在lm()函数中需要使用原始数据集Boston中的变量名。

解决办法: 将lm()函数改为fit <- lm(MEDV ~ Crime + Residence, data = X)

结论

通过主成分分析和回归建模,我们可以使用两个主要因素 (Crime 和 Residence) 来预测房屋价值,这有助于我们更好地理解影响房屋价值的关键因素。


原文地址: https://www.cveoy.top/t/topic/oq3G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录