波士顿房价主成分分析与主成分回归模型

本案例使用 R 语言的 MASS 包中的波士顿数据集,分析波士顿周围 506 个街区的房价中位数 (MEDV) 与其他 13 个指标之间的关系,并利用主成分分析提取主要影响因素,建立主成分回归模型,预测房价。

数据准备

library(MASS)

# 加载数据
data(Boston)

# 提取前13个变量
X <- Boston[,1:13]

主成分分析

  1. 进行主成分分析
# 主成分分析
pca <- princomp(X)

# 特征值和特征向量
pca$scores  # 主成分得分
pca$loadings  # 载荷
pca$sdev  # 标准差
pca$variance  # 方差
pca$cov  # 协方差矩阵
  1. 绘制碎石图
# 碎石图
plot(pca)
  1. 选择合适的主成分个数

根据碎石图,可以发现前两个主成分的特征值较大,说明它们包含了大部分的信息,因此选择前两个主成分。

  1. 提取前两个主成分
# 选择前2个主成分
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 = Boston)
summary(fit)
  1. 写出回归方程
# 回归方程
# MEDV = 26.84 - 0.33 * Crime - 0.2 * Residence

与最小二乘估计结果对比

# 最小二乘估计结果
fit2 <- lm(MEDV ~ CRIM + ZN + INDUS + CHAS + NOX + RM + AGE + DIS + RAD + TAX + PTRATIO + B + LSTAT, data = Boston)
summary(fit2)

通过比较两个模型的拟合结果,可以发现主成分回归模型的拟合效果与最小二乘回归模型相差不大,但主成分回归模型更简洁,更容易解释。

结论

本案例使用主成分分析方法,提取了波士顿房价数据中的两个主要影响因素:'Crime' 和 'Residence',并利用这两个主成分建立了主成分回归模型,预测房价。结果表明,主成分回归模型的拟合效果与最小二乘回归模型相差不大,但更简洁,更容易解释。

代码

library(MASS)

# 加载数据
data(Boston)

# 提取前13个变量
X <- Boston[,1:13]

# 主成分分析
pca <- princomp(X)

# 特征值和特征向量
pca$scores  # 主成分得分
pca$loadings  # 载荷
pca$sdev  # 标准差
pca$variance  # 方差
pca$cov  # 协方差矩阵

# 碎石图
plot(pca)

# 选择前2个主成分
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,]

# 载荷图
biplot(pca2)

# 给主成分命名
names(pca2$loadings)[1] <- 'Crime'
names(pca2$loadings)[2] <- 'Residence'

# 主成分得分图
plot(pca2$scores)

# 综合评估和排序
rank <- order(pca2$scores[,1])
ranked_data <- Boston[rank,]

# 主成分回归模型
fit <- lm(MEDV ~ Crime + Residence, data = Boston)
summary(fit)

# 回归方程
# MEDV = 26.84 - 0.33 * Crime - 0.2 * Residence

# 最小二乘估计结果
fit2 <- lm(MEDV ~ CRIM + ZN + INDUS + CHAS + NOX + RM + AGE + DIS + RAD + TAX + PTRATIO + B + LSTAT, data = Boston)
summary(fit2)

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

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