进行主成分分析步骤:
1. 生成4列30个随机数;
2. 写csv文件,读csv文件;
3. 进行主成分分析。
1. 生成4列30个随机数;
runif(n, min = 0, max = 1)
runif函数生成随机数,n表示个数,min与max表示随机数的取值范围。
round函数四舍五入,默认小数位为0。
> x1<-round(runif(30,130,170))
> x2<-round(runif(30,35,70))
> x3<-round(runif(30,60,95))
> x4<-round(runif(30,65,100))
> df<-data.frame(x1,x2,x3,x4)
2. 写csv文件,读csv文件;
write.csv写成csv文件,row.names = FALSE,表示行序号不写入文件中;
read.csv读csv文件,header = T,表示有列名。
> write.csv(df,"mydata.csv",row.names = FALSE)
> data<-read.csv("mydata.csv",header = T)
3. 进行主成分分析。
princomp为主成分分析函数,cor =T,表示用相关系数进行主成分分析。
summary表示变量的详细信息。
> student.pr<-princomp(data,cor =T)
> summary(student.pr)
> Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.2303666 1.0273342 0.9262209 0.7568999
Proportion of Variance 0.3784505 0.2638539 0.2144713 0.1432244
Cumulative Proportion 0.3784505 0.6423044 0.8567756 1.0000000
# Standard deviation标准差
# Proportion of Variance变量贡献值
# Cumulative Proportion累积贡献值
#根据累积贡献值,选择累积贡献率大于80%的前3个主成分(本例中生成的数据为随机数)
predict得到各个主成分的数据
head函数为选择变量的前6列
> pca_data<-predict(student.pr)
> head(pca_data)
Comp.1 Comp.2 Comp.3 Comp.4
[1,] -0.4271860 -1.18382287 0.12347562 1.8908984
[2,] 1.5849005 0.92291752 0.21817906 -0.2474528
[3,] 1.0549221 -0.90917022 0.03477916 0.1596491
[4,] 0.4990460 0.01975359 0.41885586 -0.9524047
[5,] -1.9577256 0.39384090 0.54980142 1.0408882
[6,] 0.9132287 -1.93470830 0.46627579 0.1070934