PCA主成分分析_R语言实战

Python014

PCA主成分分析_R语言实战,第1张

作为零计算机基础,纯生物背景的实验喵,有很多技能还不会,只希望将自己学习到的知识记录下来,一方面让自己能够时常温故知新,一方面与大家分享学习内容和心得,一起进步呀。

成分分析(principle component analysis,PCA)是常用的线性数据降维方法,通过某种线性投影,将高维的数据映射到低维的空间中,并期望在映射到的低维空间中包含的信息量最大,即使用较少的数据维度来代表(保留)较多原始数据的特性。话句话说,就是把多个变量化成少数几个主成分的方法,这些主成分能够反映原始变量的大部分信息,为原始变量的线性组合。

R中作为主成分分析最主要的函数是 princomp() 函数

princomp() 主成分分析   可以从相关阵或者从协方差阵做主成分分析

summary() 提取主成分信息

loadings() 显示主成分分析或因子分析中载荷的内容

predict() 预测主成分的值

screeplot() 画出主成分的碎石图

plot() 画出数据关于主成分的散点图和原坐标在主成分下的方向

##设置工作路径

setwd("E:/R practice result")

##查看工作路径

getwd()

##读取数据

data <- read.csv("E:/R practice file/students_data.csv",header = T)

##进行主成分分析

data.pr <- princomp(data,cor = T) ##cor=T的意思是用相关系数进行主成分分析

##观察主成分的详细情况

summary(data.pr,loadings = T)

##计算得到各个样本主成分的数据

pca_data <- predict(data.pr)

##将文件写出,进行本地保存

write.table(pca_data,file = "E:/R practice result/pca_data.txt",row.names = T,col.names = T,quote = F,sep = "\t")

#画出主成分碎石图,主成分方差占总体方差的情况,辅助判断主成分提取个数。当折线由陡峭突然变得平稳时,陡峭到平稳对应的主成分个数即为参考提取主成分个数。X轴表示可能的因子数。在整个曲线下降的过程中,理论上会存在一点,该点处曲线出现明显的弯折,该点对应的X轴的数字即应保留的因子数。

screeplot(data.pr,type="lines")

#添加划分成分的参考线

abline (v = 2 ,   col = "#900021", lwd = 2, lty = 2)

#计算前两个主成分Comp1和Comp2得分,保存到data.pr2

data_pr2 <- data.pr$score[,1:2]    或者data_pr2 <- pca_data[,1:2]

write.table(data_pr2,file = "E:/R practice result/data_pr2.txt",row.names = F,col.names = T,quote = F,sep = "\t")

plot(data_pr2, main = "after PCA") 或者plot(pca_data[,1:2])

#R中作为主成分分析最主要的函数是princomp()函数

#princomp()主成分分析 可以从相关阵或者从协方差阵做主成分分析

#summary()提取主成分信息

#loadings()显示主成分分析或因子分析中载荷的内容

#predict()预测主成分的值

#screeplot()画出主成分的碎石图

#biplot()画出数据关于主成分的散点图和原坐标在主成分下的方向

3、案例

#现有30名中学生身高、体重、胸围、坐高数据,对身体的四项指标数据做主成分分析。

#1.载入原始数据

test<-data.frame(

X1=c(148, 139, 160, 149, 159, 142, 153, 150, 151, 139,

140, 161, 158, 140, 137, 152, 149, 145, 160, 156,

151, 147, 157, 147, 157, 151, 144, 141, 139, 148),