R语言主成分分析

head(swiss)#查看数据

cor(swiss)#查看相关性矩阵


方阵中绝对值最小的是0.06085861,比0.05大,因此swiss中变量相互之间均有或强或弱的相关关系,这份数据适合做主成份分析。

由于变量的量纲不同会使主成份得分系数的可解释性变差,使结果受到量纲大的变量影响,而忽略量纲较小的变量,所以对数据进行标准化,使每个变量都服从均值为0,方差为1的正态分布

std.swiss<-scale(swiss[1:6])

head(std.swiss)


p<-princomp(std.swiss,cor=TRUE)#构建主成份分析模型,cor为true表示用样本的相关矩阵做主成分分析,默认false则使用样本的协方差矩阵做主成分分析

summary(p,loadings=TRUE)


其中importance of components中的standard deviation行给出了6个主成分的标准差;proportion of variance行给出了主成份的方差贡献率;cumulative proportion行给出了方差累计贡献率。

方差贡献率用于体现每个主成分对原始数据中信息的解释能力。第一个主成分的方差贡献率是0.5332928,即第一个主成分能够解释原数据中53.32%的信息,第二个主成分能解释原数据19.8%的信息,....,六个加起来解释能力为百分之百

由于loadings设置为真,所以R同时返回各个主成分对应的系数,根据给出的系数,列出两个主成分的表达式:

Y2=0.300*fer-0.412*agr+0.125*exa+0.179*rdu+0.146*cat+0.811*inf

Y1=-0.457*fer-0.424*agr+0.51*exa+0.454*edu-0.35*cat-0.15*inf


screeplot(p,type='lines')#画出碎石图


从图中可以看出,从第四个变量之后,斜率开始趋于0,所以,主成分取2~4个是比较合适的


pre<-predict(p)#计算主成分得分
head(pre)

y<-eigen(cor(std.swiss))#计算特征值和特征向量
y
y1<-y$values[1]
y2<-y$values[2]
y3<-y$values[3]
y4<-y$values[4]
scores<-(y1*pre[,1]+y2*pre[,2]+y3*pre[,3]+y4*pre[,4])/(y1+y2+y3+y4)
head(scores)#将主成分得分与样本数据的特征向量做内积可得综合得分,由于前四个变量可解释数据的大部分信息,故选前四个为主成分计算


courtelary城市得分最高,franches-mnt得分最低,故前者发展的最好,后者最差


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值