主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

主成分分析的意义

主成分分析是把各变量之间互相关联的复杂关系进行简化的分析方法。

主成分分析试图在力保数据信息丢失最少的原则下,对这种多变量的截面数据表进行最佳综合简化,也就是说,对高维变量进行降维处理

研究指标体系的少数几个线性组合,并且这几个线性组合所构成的综合指标将尽可能多地保留原来指标变异方面的信息,这种分析叫主成分分析,这些综合指标就称为主成分,主成分间不相关。

主成分分析中要思考的问题

(1) 基于相关系数矩阵还是基于协方差矩阵做主成分分析。当分析中所选择的经济变量具有不同的量纲,变量水平差异很大,应该选择基于相关系数矩阵的主成分分析。

(2) 选择几个主成分。主成分分析的目的是简化变量,一般情况下主成分的个数应该小于原始变量的个数。关于保留几个主成分,应该权衡主成分个数和保留的信息。

(3) 解释主成分所包含的意义。

下面的四张图中,哪一种有更高的精度?原始变量的信息损失最少?

旋转变换的目的是为了使得n个样品点在Fl轴方向上的离散程度最大,即Fl的方差最大。变量Fl代表了原始数据的绝大部分信息,在研究某经济问题时,即使不考虑变量F2也无损大局。经过上述旋转变换原始数据的大部分信息集中到Fl轴上,对数据中包含的信息起到了浓缩作用。

Fl,F2除了可以对包含在Xl,X2中的信息起着浓缩作用之外,还具有不相关的性质,这就使得在研究复杂问题时避免了信息重叠所带来的虚假性。二维平面上各点的方差大部分都归结在Fl轴上,而F2轴上的方差很小。Fl和F2称为原始变量x1和x2的综合变量。F简化了系统结构,抓住了主要矛盾。

主成分分析的步骤

一、基于协方差矩阵

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

----样本协方差矩阵

第一步:由X的协方差阵Σx,求出其特征根,即解方程

可得特征根

第二步:求出分别所对应的特征向量U1,U2,…,Up,

第三步:计算累积贡献率,给出恰当的主成分个数。

第四步:计算所选出的k个主成分的得分。将原始数据的值中心化:

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

 二、基于相关系数矩阵

如果变量有不同的量纲,则必须基于相关系数矩阵进行主成分分析。不同的是计算得分时应采用标准化后的数据。

① 解特征方程,求出特征值,并使其按大小顺序排列 

② 分别求出对应于特征值的特征向量 ,要求=1,即,   其中eij表示向量ej的第i个分量。

③ 计算主成分贡献率及累计贡献率。

▲贡献率:

▲累计贡献率:

一般取累计贡献率达85—95%的特征值λ1,λ2,....,λn

所对应的第一、第二、…、第m(m≤p)个主成分。

④ 计算主成分载荷

⑤ 各主成分的得分

主成分分析与MATLAB实现

下面分别介绍与主成分相关的MATLAB函数:pcacov,princomp和pcares。

样本相关阵和样本协差阵决定的主成分是不同的。

通常,在所考虑的各指标(随机向量各分量)单位相同时,用协差阵求主成分,单位不同时用相关阵求主成分。

1。

pcacov函数用来根据协方差矩阵或相关系数矩阵进行主成分分析,其调用格式如下:

[COEFF,latent,explained]=pcacov(v)

  • COEFF是P个主成分的系数矩阵,它的第i列是第i个主成分的系数向量。

  • 输出参数latent是p个主成分的方差构成的列向量,即协方差矩阵V的p个特征值(从大到小)构成的向量。

  • 输出参数explained是p个主成分的贡献率向量。

2。

princomp函数用来根据样本观测值矩阵进行主成分分析,其调用格式如下:

[COEFF,SCORE,latent,tsqure]=princomp(X)

  • X:是n行p列的观测值矩阵,每一行对应一个观测(样品),每一列对应一个变量。

  • COEFF:是p个主成分的系数矩阵,

  • SCORE:是n个样品的p个主成分的得分矩阵,它是n行p列的矩阵,每一行对应一个观测值,每一列对应一个主成分,第i行第j列元素是i个样品的第j个主成分得分。

  • latent :样本协方差矩阵的特征值向量,特征值按降序排列。

  • p个元素的列向量tsqure:它的第i个元素是第i个观测对应的霍特林(Hotelling)

  • T²统计量,描述了第i个观测与数据集(样本观测矩阵)的中心之间的距离,可用来寻找远离中心的极端数据。

注意:

princomp函数对样本数据进行了中心化处理,即把X中的每一个元素减去其所在列的均值,相应地,princomp函数返回的主成分就是中心化的主成分得分。

当n≤p时,即观测的个数小于或等于维数时,

SCORE矩阵的第n列到第p列元素均为0,

latent第n到第p个元素均为0。

求样本值矩阵X的协方差矩阵命cov(X)

相关系数矩阵命令:corrcoef(X);corr(X);

3。

pcares函数由样本的主成分得分重建(恢复)原始数据的问题,若只用前m个主成分的得分来重建原始数据,则可能会有一定的误差,前面称之为残差。MATLAB统计工具箱中提供了pcares函数,用来重建数据,并求样本观测值矩阵中每个观测的每一个分量所对应的残差,其调用格式如下:

residuals=pcares(x,ndim)

[residuals,reconstructed]=pcares(X,ndim)

  • X是n行p列的样本观测值矩阵,它的每一行对应一个观测(样品),每一列对应一个变量,ndim参数用来指定所用的主成分的个数,它是一个小于或等于p的正的标量,最好取为正整数。

  • 输出参数residuals是一个与X同样大小的矩阵,其元素为X中相应元素所对应的残差。

  • 输出参数reconstructed为用前ndim个主成分的得分重建的观测数据,它是X的一个近似。

注意:

pcares调用了 princomp函数,它只能接受原始样本观测数据作为他的输入,并且它不会自动对数据作标准化变换,若需要对数据作标准化变换,可以先用zscore函数将数据标准化,然后调用pcares函数重建观测数据并求残差。若从协方差矩阵或相关系数矩阵出发求解主成分,请用pcacov函数,此时无法重建观测数据和求残差。

今天的学习就到这里,下期的主成分分析我们讲讲其应用案例。

•  END  •

canoco5主成分分析步骤_主成分分析(PCA)统计与MATLAB函数实现相关推荐

  1. canoco5主成分分析步骤_基于R语言的主成分分析

    基于R语言的主成分分析 加入的SPSS群里有人问,怎么用SPSS进行主成分分析.确实没有注意到这种操作.很好奇,于是翻了翻孙振球的<医学统计学>,发现主成分分析这一块,竟使用了SAS!后来 ...

  2. matlab主成分分析散点图_主成分分析(PCA)及其在MATLAB中的实现

    主成分分析 Principal Component Analysis(PCA) 1. 什么是主成分分析? What is PCA? Principal component analysis (PCA) ...

  3. canoco5主成分分析步骤_R语言 PCA主成分分析

    微信公众号:生信小知识 关注可了解更多的教程及生信知识.问题或建议,请公众号留言; R语言 PCA主成分分析 前言统计学背景知识协方差相关系数函数总结实例讲解1.载入原始数据2.作主成分分析3.结果解 ...

  4. 主成分分析步骤_多元分析(1)--主成分分析

    主成分分析 主成分分析(PCA)是数据降维的一种常见方法,其它常见的方法还有因子分析(FA),独立成分分析,在进行大数据处理时,因为数据有很多特征,维数过高,不容易进行处理且不能进行可视化,所以一般要 ...

  5. 主成分分析逆变换_主成分分析(PCA)(转)

    主成分分析(Principal Component Analysis,简称PCA) 它是一种通用的降维工具.在我们处理高维数据的时候,为了能降低后续计算的复杂度,在"预处理"阶段通 ...

  6. 主成分分析法_“主成分分析法”——线上讨论会等你加入

    Hi-新朋友,记得点蓝字关注我们哟 主成分分析法 --线上讨论会 新一轮的线上讨论会又要来啦~这次由我们实证会计板块与大家一起分享有关层次分析法的内容,也十分欢迎大家提前了解并与群内的各位学者研究讨论 ...

  7. 机器学习算法之PCA(主成分分析)人脸识别,最小重构误差和最大化散度证明,PCA主成分分析原理剖析,PCA人脸识别matlab实现,PCA人脸识别python实现

    目录 PCA介绍 PCA大致思路 PCA人脸识别(特征脸法) matlab代码实现 Python代码实现 PCA几何解释 PCA证明最小重构误差和最大散度等价 实验结果 PCA介绍 主成分分析(Pri ...

  8. 主成分分析法_主成分分析法在地震学领域的新应用

    远震接收函数是包含台站下方地壳-上地幔速度间断面Ps转换波及其多次反射波的时间序列,现已成为研究地壳结构的重要观测数据.在单个地震台站的接收函数分析中, 既可以利用不同接收函数Ps转换震相以及地表多次 ...

  9. matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...

    RoadRuner是MathWorks新收购的自动驾驶场景构建工具,Unreal Engine是商业游戏引擎.RoadRunner创建驾驶场景,导入到Unreal Engine,与Simulink联合 ...

  10. matlab中find函数_在R中使用Matlab函数

    R, Matlab MATLAB是一款商业数学软件, R是一个拥有庞大工具库的数据统计.建模.可视化分析软件.R 不仅支持C/C++, python代码的运行和工程移植, 也支持在R中使用MATLAB ...

最新文章

  1. wordpress网站后台打开速度很慢解决方法?
  2. IDEA中新建SpringBoot项目时提示:Artifact contains illegal characters
  3. apply和call
  4. 计算程序执行时间的函数
  5. 数据可视化组件Grafana详细解读--在Docker上安装Grafana管理平台
  6. cocoscreator3d 获取mesh 大小_Cocos Creator 3D 粒子系统初战: 不要钱的酷炫火焰拿走不谢!...
  7. 我们应该如何(以及为什么)要将Typescript与Express、nodejs一起使用(译文)
  8. python 面向对象_Python 和 Java 基础对比 08 —— 面向对象
  9. 达梦系统录音服务器是哪个,达梦服务器安装及使用教程
  10. 《程序员代码面试指南》第一章:栈与队列
  11. matlab求两向量夹角_高考数学解题技巧:专题21 平面向量中最值、范围问题高中数学黄金解题模板...
  12. Bugzilla安装完初次登录提示“couldn‘t create child process: 720002: index.cgi”解决方法
  13. 微信开通状态检测说明书
  14. linux与windows内核哪个难学,国产操作系统为何都基于Linux内核?又和Windows像?
  15. IoU优化——在Anchor-Free中提升目标检测精度(附源码)
  16. 6-11 使用函数输出水仙花数 (20 分)
  17. 「1.9W字总结」一份通俗易懂的 TS 教程,入门 + 实战!
  18. react native FlatList
  19. 鸭子心包积液是怎么回事怎么治32天的鸭子心包积液是什么病
  20. 什么是ISBN码及其如何制作

热门文章

  1. 第13课:JSP动作 Indude动作和指令的区别(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  2. H.264 学习建议
  3. 服务器网口聚合操作文档,服务器网口聚合怎么操作
  4. 一次关于聚合根的激烈讨论
  5. 用Python实现模糊聚类(传递闭包法)
  6. noi题库1.1~1.6答案
  7. 小票打印机安装配置全过程 58mm热敏票据打印机驱动安装
  8. 利用Visio DIY自己的示意图
  9. 2020计算机网络练习题记录(1)
  10. [论文阅读笔记29]生物医学文本摘要(Biomedical Text Summarization)