1、
主成分分析R语言
精品文档
第一题
> data=read.table("q1.txt",head=T)
> head(data)#前六行数据
> attach(data)
> options(digits=2)
> data=as.matrix(data)#转化为矩阵
> v1<-eigen(data)#计算相关系数矩阵特征值和特征向量
> v1
> zhuchengfen<-princomp(covmat=data)#用相关系数矩阵做主成分分析
> summary(zhuchengfen)
> x<-zhuchengfen$loa
2、dings;x#主成分载荷
> y<-zhuchengfen$scores;y #主成分得分
因为只有相关系数矩阵,所以没有主成分的得分
> screeplot(zhuchengfen,type="lines")
根据累计方差贡献率和Kaiser准则,应该选择三个主成分,即PC1、PC2、PC3。累计方差贡献率为64%。PC1、PC2、PC3对方差贡献率分别是38%、15%、11%。结果如下:
运动项目
第一主成分
第二主成分
第三主成分
100米
-0.355
-0.176
0.493
跳远
-0.405
-0.149
0.182
铅球
3、
-0.361
0.434
跳高
-0.346
-0.109
-0.131
400米
-0.318
-0.447
110米跨栏
-0.353
0.153
铁饼
-0.319
0.423
-0.104
撑杆跳高
-0.277
-0.389
标枪
-0.223
0.356
-0.352
1500米
-0.484
-0.623
方差贡献率
0.38
0.15
0.11
累积方差贡献率
0.38
0.53
0.64
解释:前三个主成分解释了大部分信息;第一次主成分测量的是综合运动能力,第二个主成分代表了爆发力
4、臂力,第三主成分测量的是爆发性腿力。
附录:
这是psych软件包中计算主成分的结果,主成分载荷与princomp得到的结果有很大的差异,并且这个结果似乎更容易解释
第二题
> library(RODBC)
> data=odbcConnectExcel("G:/R/q2.xls")
> data1=sqlFetch(data,"Sheet1")
> close(data) #关闭通道
> attach(data1)
> head(data1)#查看前六行数据
> data2=data1[,-1]#去掉第一列数据
> options(digits=2
5、) #数据均保留小数点后两位
> q2<-princomp(data2,cor=T) #用相关系数矩阵做主成分分析
> options(digits=2) #数据均保留小数点后两位
> summary(q2)
第一主成分对数据方差的解释度达到83%,因此我们只需要选择一个主成分,即第一主成分PC1
> x<-q2$loadings;x #主成分载荷
令,……分别代表100 m (s)、200 m (s)……Marathon (min)的成绩,那么第一主成分的表达式:
第一主成分中各个运动项所占的比例非常接近,因此它衡量的是一个人的综合运动能力,且方差的贡献度达到83%。
> y<-q2$scores;y[,1]#第一主成分得分
> order(y[,1])#排序
> png("normal.png")
> qqnorm(y[,1],main="First PC")#正态性检验
> qqline(y[,1])
> dev.off()
由第一主成分的Q-Q图可以看出,除少数离群点之外,大部分点都在理论值附近,可以看成是近似服从多元正态分布。
收集于网络,如有侵权请联系管理员删除