背景
主成分分析PCA(Principal Component Analysi)和冗余分析RDA(Redundancy analysis)都是数据分析的一种方法,都是在做降维处理,我遇到数据的时候该选择那种方法做呢?
首先什么是降维?
将多维空间(多个原始测定指标)的数据点尽可能排列在可视化的低维空间。简单理解就是,测定的一种原始指标(比如株高)就是一个维度。假设,我为了了解某个物种的几个品种的生长情况,测了十几个跟生长相关的指标(株高、株幅等),然后我的目的是比较几个品种之间生长情况的相似性,是用株高来代表?还是用株幅来代表?还是用其他生长指标?我们都知道这十几个指标都需要,一起来代表才能说明生长情况,但十几个指标就相当于十几个维度,如何可视化,如何在图上展示(就我目前了解我们常用画出展示的最多就3维(XYZ)的图)?
办法就是:我们通过降维,用各种统计学手段,得到几个新的指标来代表这十几个指标,从十几个变成几个,就是降低了维度,就可以画可视化图形,让大家看明白了。其中一种统计学手段就叫----主成分分析,“几个新指标”指的就是“几个主成分”,但大家需要明确,做了主成分分析之后,实际得到的是与原始指标数量相等的主成分个数(但是,主成分≠测定指标),就是说,比如你有12个原始测定指标进行主成分分析,最后可得到的是12个主成分,你需要根据你自己的需求来选取你需要多少个主成分来近似地/尽最大限度地(因此,主成分分析不是统计检验,而是探索性分析方法)代表这12个指标的信息(就是说一旦你选取了前几个主成分,那就有部分信息损失,但不选就达不到降维的目的啊),以方便后续的可视化分析。结合R进行主成分分析后的结果表来说明一下,你就进一步明白了:
运行以下代码
student_scores=read.csv("student_scores.csv")#把原始数据导入R
pca_student = princomp(student_scores,cor = T)#计算PCA,cor=T表示用的是相关阵,而默认是协差阵
summary(pca_student,loadings = T)#显示结果,loading=T是列出主成分对应原始变量的系数
然后得到的结果如下:
PCA计算结果解读(用R):
1、以上这6个主成分(Comp.1-Comp.6)是互不相关的,它们每一个都不是X1-X6中任何一个,而是由所有原有6个指标数据进行线性组合而来,比如Comp.1=系数1*X1+系数2*X2+系数3*X3+系数4*X4+系数5*X5+系数6*X6。
2、6个主成分的贡献率大小反映的是它们综合原始指标(6门功课成绩X1-X6)的能力。我们常听说的特征值/特征根(eigen value)指的是某个主成分的方差,其相对比例可理解为方差解释度或贡献度 ,特征值从Comp.1到Comp.6会逐渐减小。这里结果给出的是主成分的标准差Standard deviation (方差=标准差的平方),所以想要得到特征值就再平方一下就ok。主成分1的贡献率Proportion of Variance最大(0.6638172),表明由主成分1的差异来解释X1-X6的差异的能力最强。6个主成分的累积贡献率Cumulative Proportion是1,就是说用6个主成分才能100%代表这6个指标所给出的总体信息;但其实前3个主成分的累积贡献率是0.9128916,已经超过了0.9,就是说可以解释超过90%的总体信息,所以可以考虑就选取前3个主成分来进行后续画图分析等。
3、loading里给出的是主成分对应原始变量的系数,应该是每个值都有,但有些值太小R运行后结果里就没有显示(比如Comp.2对应X1的系数),我暂时还没找到什么方法能把这些很小的值也都显示出来。从loading里可以看出各主成分与原始指标之间的相互关系,比如主成分1就与所有6科成绩间关系都很密切,主成分2与X2这个科目成绩之间关系较为密切(0.914比其他几个系数的绝对值都大很多),主成分3与X1这个科目成绩之间关系密切(0.883比其他几个系数的绝对值都大很多)。
PCA图形结果解读(用R):
通常有2种展示类型
上图就只是展示observation(样品),图中的每一个点都是代表一个样品,样品点挨的越近,说明这些样品在某些程度上(PC1、PC2)越相似,这种图适合用于样品数量特别大的,只为去说明样品之间有什么相似性。
上图就是同时展示observation(样品)和variable(变量/原始指标),比图1展示的多了一个维度。首先,CK、T1-T7都是样品点;其次,那些箭头则是代表的测定变量/原始指标,箭头对应在PC1轴和PC2轴上的值就是原始指标与主成分的相关系数(其实就是princomp计算时的loading值)。最后,样品点和箭头之间距离大小:反映样品与原始指标之间的关系紧密程度,这点我也没太理解。这种图适合样品数量不是太多,想同时展示样品和原始指标。没有哪个图更好的说法,只要能清楚表达你的目的就是好图。
PCA和RDA是什么关系呢?
上面废话那么多好像我只说了主成分分析,其实我把主成分分析和冗余分析的一些共性特点都说了,因为它们两者是有包含关系的。冗余分析是回归分析+主成分分析的排序方法(先将响应变量Y矩阵与解释变量X之间进行多元线性回归,再对得到的拟合值进行主成分分析)。
PCA属于非约束排序(只是描述性方法,不存在统计检验评估排序结果显著性的问题)
RDA属于约束排序(需要对排序结果进行显著性检验)。
还有其他一些问题需要解决,等待写下一篇
1、前面提到主成分个数的选取,我们到底该选取几个主成分来代表整体呢,选取依据是什么?
2、R语言进行主成分分析,一些参数该如何设置呢?
3、进行主成分分析的函数有 princomp和prcomp、rda,选哪种呢?
4、冗余分析还包括了回归分析的相关计算,所以,冗余分析还需要进一步去解释。
参考资料
1、https://zhuanlan.zhihu.com/p/180284720?utm_source=wechat_session&ivk_sa=1024320u
2、https://zhuanlan.zhihu.com/p/404795652
3、https://blog.csdn.net/lfz_carlos/article/details/48442091
4、https://cloud.tencent.com/developer/article/1635055