R语言主成分分析及主成分回归模型构建
使用R语言进行主成分分析及主成分回归模型构建
本文将使用R语言的 MASS 包对 Boston 数据集进行主成分分析,并构建主成分回归模型,并针对模型构建过程中的常见错误进行解答。
1. 数据导入与主成分分析
# 导入数据
library(MASS)
data(Boston)
# 主成分分析
pcr <- prcomp(Boston[,1:13], scale = TRUE)
# 结果输出
summary(pcr)
# 碎石图
plot(pcr)
# 选择前2个主成分
pcr2 <- pcr$x[,1: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, pcr_score[,1])
rank <- Boston_score[order(-Boston_score$PC1),]
rank
2. 主成分回归模型
在构建主成分回归模型时,需要注意的是,medv 变量并不包含在主成分分析中使用的 Boston 数据集的前13列,因此在使用 lm() 函数时会报错。
# 主成分回归模型
pcr_lm <- lm(PC1 ~ ., data = as.data.frame(pcr$x))
# 回归方程输出
summary(pcr_lm)
正确做法:
使用 PC1 作为因变量,而自变量为所有主成分。如果需要使用其他主成分进行回归,则将 PC1 替换为对应的主成分名称即可。
总结
本文介绍了使用R语言进行主成分分析及构建主成分回归模型的基本步骤。在构建回归模型时,需要特别注意自变量和因变量的选择,避免因变量不在主成分分析数据集中而导致报错。
原文地址: https://www.cveoy.top/t/topic/oq39 著作权归作者所有。请勿转载和采集!