应用统计学与R语言实现学习笔记(十二)——主成分分析

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/78062883 Chapter 12 Priciple Component Analysis本篇是第十二章,内容是主成分分析。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/78062883

Chapter 12 Priciple Component Analysis

本篇是第十二章,内容是主成分分析。

1 主成分分析基本思想

依旧从问题开始本篇的介绍。地理学和生态学研究里经常遇到的问题就是,影响变量非常之多,而且地球表层地理生态环境现象无法使用控制变量的方式进行实验。同时影响变量非常多,经常出现变量冗余、冗杂的现象,同时多元分布数据本身对人类的认知就是一种挑战。这里举个栗子:比如在研究城市经济发展的时候,我们会考虑到的因素会包括第一产业、第二产业、第三产业占比,城市人口,城市地理位置,城市气候适宜度,政策扶持等等很多因子,但是这里有很多因子存在共线性的情况,也就是变量冗余冗杂。用矛盾论的话说,要抓住主要矛盾,那么如何在多元分布数据中分离出主要的因子,这就是本篇的主角主成分分析(Priciple Component Analysis,PCA)。

所以它的基本思想是。

在社会经济的研究中,为了全面系统的分析和研究问题,必须考虑许多经济指标,这些指标能从不同的侧面反映我们所研究的对象的特征,但在某种程度上存在信息的重叠,具有一定的相关性。这种信息的重叠有时甚至会抹杀事物的真正特征与内在规律。
主成分分析是利用降维的思想, 在力求数据信息丢失最少的原则下,对高维的变量空间降维,即在众多变量中找出少数几个综合指标(原始变量的线性组合),并且这几个综合指标将尽可能多地保留原来指标变异方面的信息,且这些综合指标互不相关。这些综合指标就称为主成分。主成分的数目少于原始变量的数目。
在一个低维空间识辨系统要比在一个高维空间容易得多。因此,更容易抓住主要矛盾,揭示事物内部变量之间的规律性,使问题得到简化,提高分析效率。指标间具有相关性是做主成分分析的前提。
主成分分析是一种数学变换方法,它把给定的一组变量通过线性变换转换为一组不相关的变量。在这种变换中,保持变量的总方差不变,同时,使第一主成分具有最大方差,第二主成分具有次大方差,依此类推。
主成分与原始变量间的关系
(1)每一个主成分是原始变量的线性组合。
(2)主成分的数目少于原始变量的数目。
(3)主成分保留了原始变量的大多数变异信息。
(4)各主成分间互不相关。

2 几何解释与数学模型

2.1 几何解释

假定只有二维,即只有两个变量,由横坐标和纵坐标所代表;每个观测值都有相应于这两个坐标轴的坐标值。如果这些数据形成一个椭圆形状的点阵(这在二维正态的假定下是可能的)该椭圆有一个长轴和一个短轴。在短轴方向上数据变化较少。在极端的情况,短轴如退化成一点,长轴的方向可以完全解释这些点的变化,由二维到一维的降维就自然完成了。

由图可以看出这些样本点无论是沿着 xl 轴方向或 x2 轴方向都具有较大的离散性,其离散的程度可以分别用观测变量 xl 的方差和 x2 的方差定量地表示。显然,如果只考虑 x1 x2 中的任何一个,那么包含在原始数据中的经济信息将会有较大的损失。
当坐标轴和椭圆的长短轴平行,那么代表长轴的变量就描述了数据的主要变化,而代表短轴的变量就描述了数据的次要变化。但是,坐标轴通常并不和椭圆的长短轴平行。因此,需要寻找椭圆的长短轴,并进行变换,使得新变量和椭圆的长短轴平行。如果长轴变量代表了数据包含的大部分信息,就用该变量代替原先的两个变量(舍去次要的一维),降维就完成了。椭圆的长短轴相差得越大,降维也越有道理。

2.2 数学模型

如果我们将xl轴和x2轴先平移,再同时按逆时针方向旋转 θ 角度,得到新坐标轴Fl和F2。Fl和F2是两个新变量。根据旋转变换的公式:

{y1=x1cosθ+x2sinθy2=x1sinθ+x2cosθ

(y1y2)=(cosθ\-sinθsinθcosθ)(x1x2)=Ux

U 为旋转变换矩阵,它是正交矩阵,即有 U=U1,UU1=I
旋转变换的目的是为了使得n个样品点在 Fl 轴方向上的离散程度最大,即 Fl 的方差最大。变量 Fl 代表了原始数据的绝大部分信息,在研究某经济问题时,即使不考虑变量 F2 也无损大局。经过上述旋转变换原始数据的大部分信息集中到 Fl 轴上,对数据中包含的信息起到了浓缩作用。
Fl F2 除了可以对包含在 Xl X2 中的信息起着浓缩作用之外,还具有不相关的性质,这就使得在研究复杂的问题时避免了信息重叠所带来的虚假性。二维平面上的个点的方差大部分都归结在 Fl 轴上,而 F2 轴上的方差很小。 Fl F2 称为原始变量, x1 x2 的综合变量。 简化了系统结构,抓住了主要矛盾。
多维情形
多维变量的情况和二维类似。正如二维椭圆有两个主轴,三维椭球有三个主轴一样,有几个变量,就有几个主轴。和二维情况类似,高维椭球的主轴也是互相垂直的。首先把高维椭球的主轴找出来,再用代表大多数数据信息的最长的几个轴作为新变量。这些互相正交的新变量是原先变量的线性组合,叫做主成分(principal component)。
假设我们所讨论的实际问题中,有p个指标,我们把这p个指标看作p个随机变量,记为 X1X2Xp ,主成分分析就是要把这个p指标的问题,转变为讨论p个指标的线性组合的问题,而这些新的指标 F1F2Fk(kp) ,按照保留主要信息量的原则充分反映原指标的信息,并且相互独立。
这种由讨论多个指标降为少数几个综合指标的过程在数学上就叫做降维。主成分分析通常的做法是,寻求原指标的线性组合Fi。
F1=u11X1+u21X2++up1XpF2=u12X1+u22X2++up2XpFp=u1pX1+u2pX2++uppXp

满足条件
每个主成分的系数平方和为1。即
u21i+u22i++u2pi=1

主成分之间相互独立,即无重叠的信息。即
Cov(FiFj=0ij,i,j=1,2p

主成分的方差依次递减,重要性依次递减,即
Var(F1)Var(F2)Var(Fp)

3 主成分的推导

两个线性代数的结论
1、若A是p阶实对称矩阵,则一定可以找到正交阵U,使

U1AU=λ1000λ2000λpp×p

其中 λii=1,2,,p 是A的特征根。
2、若上述矩阵的特征根所对应的单位特征向量为 u1,,up

U=(u1,,up)=u11u21up1u12u22up2u1pu2pupp

则实对称阵A属于不同特征根所对应的特征向量是正交的,即有 UU=UU=I
第一主成分
设X的协方差阵为
Σx=σ11σ21σp1σ12σ22σp2σ1pσ2pσpp

由于 Σx 为非负定的对称阵,必存在正交阵U,使得:
UΣxU=λ100λp

其中 λ1λ2λp Σx 的特征根。不妨假设 λ1λ2λp 。而U恰好是由特征根相对应的特征向量所组成的正交阵。
U=(u1,,up)=u11u21up1u12u22up2u1pu2pupp

Ui=(u1i,u2i,,upi)i=1,2,,p

设有p维正交向量 a1=(a11,a21,,ap1) F1=a11X1++ap1Xp=aX
V(F1)=a1Σa1==a1Uλ1λ2λpUa1

当且仅当 a1=u1 时,即 F1=u11X1++up1Xp 时,有最大的方差 λ1 Var(F1)=U1ΣxU1=λ1 。如果第一主成分的信息不够,则需要寻找第二主成分。
第二主成分
在约束条件 cov(F1,F2)=0 下,寻找第二主成分,取线性变换
F2=u12X1++up2Xp

的方差次大
cov(F1,F2)=cov(u1x,u2x)=u2Σu1=λ1u2u1=0

Var(F2)=U2ΣxU2=λ2

类推
F1=u11X1+u21X2++up1XpF2=u12X1+u22X2++up2XpFp=u1pX1+u2pX2++uppXp

写成矩阵形式:
F=UX

U=(u1,,up)=u11u21up1u12u22up2u1pu2pupp

X=(X1,X2,,Xp)

4 主成分的性质

1、均值 E(Ux)=Uμ
2、方差为所有特征根之和

i=1pVar(Fi)=λ1+λ2++λp=σ21+σ22++σ2p

说明主成分分析把p个随机变量的总方差分解成为p个不相关的随机变量的方差之和。协方差矩阵 Σ 的对角线上的元素之和等于特征根之和。
3、 精度分析
1)贡献率:第i个主成分的方差在全部方差中所占比重 λi/pi=1λi ,称为贡献率,体现这个主成分的综合能力的大小,即反映原来p个指标的信息的多少。
2)累积贡献率:前k个主成分共有多大的综合能力,用这个k个主成分的方差和在全部方差中所占比重
i=1kλi/i=1pλi

来描述,称为累积贡献率。
我们进行主成分分析的目的之一是希望用尽可能少的主成分 F1F2Fk(kp) 代替原来的p个指标。到底应该选择多少个主成分,在实际工作中,所采用主成分个数的多少取决于能够反映原来变量85%以上的信息量为依据,即当累积贡献率≥85%时的主成分的个数就足够了。最常见的情况是主成分为2到3个。
4、 载荷矩阵
u11u21up1u12u22up2u1mu2mupm

原始变量与主成分之间的相关系数
Fj=u1jx1+u2jx2++upjxpj=1,2,,m,mp

F=UXUF=X

x1x2xp=u11u21up1u12u22up2u1pu2puppF1F2Fp

Cov(xi,Fj)=Cov(ui1F1+ui2F2++uipFp,Fj)=uijλj

ρ(xi,Fj)=uijλjσiλj=uijλjσi

可见, xi Fj 的相关的密切程度取决于对应线性组合系数的大小。该相关系数又叫因子负荷量。在解释主成分的成因或是第i个变量对第k个主成分的重要性时,应当根据因子负荷量而不是变换系数u.
原始变量被主成分的提取率
主成分的贡献率和累计贡献率度量了 F1F2Fm 分别从原始变量 X1,X2,,XP 中提取了多少信息。那么 X1,X2,,XP 各有多少信息分别被 F1F2Fm 提取?
这可以用 F1F2Fm 分别与 X1,X2,,XP 的相关系数的平方来衡量。
Var(xi)=Var(ui1F1+ui2F2++uipFp)


u2i1λ1+u2i2λ2++u2imλm++u2ipλp=σ2i

u2ijλj Fj 能说明的第i 原始变量的方差。
u2ijλj/σ2i Fj 提取的第i原始变量信息的比重。
如果我们仅仅提出了m个主成分,则第i原始变量信息的被提取率为:
Ωi=j=1mλju2ij/σ2i=j=1mρ2ij

公共成分
定义:如果一个主成分仅仅对某一个原始变量有作用,则称为特殊成分。如果一个主成分对所有的原始变量都起作用,则称为公共成分。

5 主成分分析的步骤

第一步:由X的协方差阵或相关系数阵Σ,求出其特征根,即解方程,可得特征根。
第二步:求出特征根所对应的特征向量 U1,U2,,Up

Ui=(u1i,u2i,,upi)

第三步:计算累积贡献率,给出恰当的主成分个数。
Fi=UiXi=1,2,,k(kp)

第四步:计算所选出的k个主成分的得分。将原始数据的中心化值:
Xi=XiX¯=(x1ix¯1,x2ix¯2,,xpix¯p)

代入前k个主成分的表达式,分别计算出各单位k个主成分的得分,并按得分值的大小排队。

基于协方差矩阵

在实际问题中, X的协方差通常是未知的,样品有

X1=(x1l,x2l,,xpl)(l=1,2,,n)

Σ^x=(1n1l=1n(xijx¯i)(xjlx¯j))p×p

基于相关系数矩阵

如果变量有不同的量纲, 变量水平差异很大,应该基于相关系数矩阵进行主成分分析。不同的是计算得分时应采用标准化后的数据。

6 主成分的应用与回归

1、主成分分析能降低所研究的数据空间的维数。即用研究m维的Y空间代替p维的X空间(m<p),而低维的Y空间代替高维的x空间所损失的信息很少。即使只有一个主成分 Y1 (即m=1)时,这个 Y1 仍是使用全部X变量(p个)得到的。在所选的前m个主成分中,如果某个Xi的系数全部近似于零的话,就可以把这个Xi删除,这也是一种删除多余变量的方法。
2、多维数据的一种图形表示方法。多元统计研究的问题大都多于3个变量,要把研究的问题用图形表示出来是不可能的。然而,经过主成分分析后,我们可以选取前两个主成分或其中某两个主成分,根据主成分的得分,画出n个样品在二维平面上的分布情况,由图形可直观地看出各样品在主分量中的地位。
3、用主成分分析法构造回归模型。即把各主成分作为新自变量代替原来的自变量做回归分析。
主成分回归方法

F1=u11X1+u21X2++up1XpF2=u12X1+u22X2++up2XpFp=u1pX1+u2pX2++uppXp

Yi=γ1F11+γ2F12++γmF1m+εii=1n[Yiγ1F11γ2F12γmF1m]2=min

原始数据观测矩阵

X0=x11x21xn1x12x22xn2x1px2pxnp

主成分系数矩阵

U=(u1,,up)=u11u21up1u12u22up2u1pu2pupp

主成分得分矩阵

F11F21Fn1F12F22Fn2F1pF2pFnpF=X0U

主成分分析的一些注意事项
主成分分析依赖于原始变量,也只能反映原始变量的信息。所以原始变量的选择很重要。
如果原始变量本质上独立,那么降维就可能失败,这是因为很难把很多独立变量用少数综合的变量概括。数据越相关,降维效果就越好。
分析结果并不一定会有清楚的解释。这与问题的性质,选取的原始变量以及数据的质量等都有关系。
基于相关系数矩阵还是基于协方差矩阵做主成分分析?
有时基于相关系数矩阵和基于协方差矩阵求出的主成分会有很大不同,且两者之间不存在简单的线性关系。
一般而言,当分析中所选择的经济变量具有不同的量纲,变量水平差异很大,应考虑将数据标准化,选择基于相关系数矩阵的主成分分析。对同度量或是取值范围在同量级的数据,选择基于协方差矩阵的主成分分析。
选择几个主成分?
主成分分析的目的是简化变量,一般情况下主成分的个数应该小于原始变量的个数。关于保留几个主成分,应该权衡主成分个数和保留的信息。
如何解释主成分所包含的经济意义?
主成分分析不要求数据来自于正态总体。一般认为当原始数据大部分变量的相关系数都小于0.3时,运用主成分分析的效果不显著。

7 主成分分析的R语言实现

主成分分析的函数本篇介绍的主要有两个。
一个是princomp,一个是psych里的principal。

princomp(x,cor=FALSE,scores=TRUE)

x为主成分分析数据集,cor=TRUE和FALSE分别代表是基于相关系数矩阵计算还是协方差矩阵计算。scores则代表是否存储主成分得分。

principal(x,nfactors=2,rotate="varimax",scores=T,covar=F)

x为主成分分析数据集,nfactors为主成分个数,rotate表示旋转方式(一般选方差最大,保证互不相关),scores则代表是否存储主成分得分,covar=TRUE和FALSE分别代表是基于协方差矩阵计算还是相关系数矩阵计算。
这回用的数据是2006年城市统计年鉴285个地级市的经济人口数据,探究gdp与人口之间的关系。
先做一个相关系数可视化。发现人口因子之间相互影响因子很高。

于是先对人口的几个因子进行降维和主成分分析,中途发现第三产业从业人数(third)加入会使得系数矩阵不正定,后面就删除了第三产业从业人数(third)。
分别用不同方式进行主成分分析结果。
princomp结果(基于协方差矩阵)
碎石图


结果

主成分得分图


princomp结果(基于相关系数矩阵)
碎石图


结果

主成分得分图

principal结果
碎石图

因子关系图

主成分得分图

碎石图表示的是曲线与纵坐标1交点的横坐标即为主成分个数,而主成分得分荷图是将原始数据的坐标映射在主成分分析的坐标上,事实上可以根据主成分得分在不同象限对原始数据进行分类,在本篇的样例数据里其实就是可以通过人口生成的几个主成分对中国地级市进行分类,可以区分出是在第一主成分得分高,第二主成分得分低的城市,亦或是其他排列组合的分类结果。关于这种可视化图具体如何解释。可以参照如下的文章。

http://www.cnblogs.com/SCUJIN/p/5965946.html

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
29天前
|
存储 数据可视化 数据挖掘
R语言在生物信息学中的应用
【10月更文挑战第21天】生物信息学是生物学、计算机科学和信息技术相结合的交叉学科,主要研究生物大分子信息的存储、处理、分析和解释。R语言作为一种强大的统计分析工具,被广泛应用于生物信息学领域。本文将介绍R语言在生物信息学中的应用,包括基因组学、转录组学、蛋白质组学、代谢组学等方面,帮助读者了解R语言在生物信息学中的重要性和应用前景。
48 4
|
29天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
44 3
|
29天前
|
机器学习/深度学习 数据采集 人工智能
R语言是一种强大的编程语言,广泛应用于统计分析、数据可视化、机器学习等领域
R语言是一种广泛应用于统计分析、数据可视化及机器学习的强大编程语言。本文为初学者提供了一份使用R语言进行机器学习的入门指南,涵盖R语言简介、安装配置、基本操作、常用机器学习库介绍及实例演示,帮助读者快速掌握R语言在机器学习领域的应用。
55 3
|
29天前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
44 2
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
R语言中的支持向量机(SVM)与K最近邻(KNN)算法实现与应用
【9月更文挑战第2天】无论是支持向量机还是K最近邻算法,都是机器学习中非常重要的分类算法。它们在R语言中的实现相对简单,但各有其优缺点和适用场景。在实际应用中,应根据数据的特性、任务的需求以及计算资源的限制来选择合适的算法。通过不断地实践和探索,我们可以更好地掌握这些算法并应用到实际的数据分析和机器学习任务中。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
下一篇
无影云桌面