美文网首页GWASCook RR语言与统计分析
PCA计算原理(超简单,R代码)

PCA计算原理(超简单,R代码)

作者: 佛系分析师 | 来源:发表于2019-08-27 11:11 被阅读0次

今天介绍如下三点内容:

  • PCA是如何计算的
  • 如何计算每个PC所能解释的方差
  • 特征值与PC解释方差比例的关系

1. 使用R语言自带函数prcomp计算PCA 并计算每个PC所能解释的方差。

1.1 先随机生成一个矩阵用于测试

#随机生成10*5的矩阵。
set.seed(2019)
mx <- matrix(rnorm(10*5), nrow=10, ncol=5)
mx
捕获.PNG

1.2 prcomp 计算PCA

#R语言自带函数计算PCA
pca <- prcomp(mx)
str(pca)
捕获.PNG
其中pca$x是计算出来的主成分(PC), pca$rotation是特征分解得到的特征向量, pca$sdev是每个主成分的标准差。因此,可以利用这个标准差的结果,我们就可以计算每个PCA所能解释的方差。
我们可以写个代码验证下 pca$sdev是不是每个主成分的标准差
pca$sdev
apply(pca$x,2,sd)
捕获.PNG
可以看到 pca$sdev确实是每个主成分的标准差

1.3 计算每个PCA所能解释的方差比例

#解释方差比例
pcvar <- apply(pca$x,2,var)
pcvar/sum(pcvar)

#利用标准差的结果计算
pca$sdev^2/sum(pca$sdev^2)
捕获.PNG

可以看到,结果是完全一致的。

2. 自己编写R代码计算PCA

2.1 PCA计算原理

只需要三步就可以自己编码实现PCA的计算:

  1. 计算原矩阵X的方差协方差矩阵,记作Cov(X)
  2. Cov(X)进行特征分解
  3. 用原矩阵(至少需要进行中心化)乘以对应的特征向量得到PC。


    捕获.PNG

也许语言不好理解,我们用代码来理解

2.2 自编代码计算PCA

#中心化
mx_n <- scale(mx, scale=FALSE)
#计算协方差矩阵,并进行特征分解
e_mx <- eigen(crossprod(mx_n))
#计算PC
pc <- mx_n %*% e_mx$vectors
# 看下和 R语言自带函数的结果是否一致
pc
pca$x

ok,完全一致。

2.3 自编代码计算每个PC解释的方差比例

特征值本身就反应了每个PC解释方差的比例关系,因此利用特征即可计算出每个PC解释方差的比例

e_mx$values/sum(e_mx$values)
# 和之前的比较一下
pcvar/sum(pcvar)
捕获.PNG
因此,我们可以得出结论:特征值占总特征值的比例,等于每个PC的方差占总方差的比例

相关文章

  • PCA计算原理(超简单,R代码)

    今天介绍如下三点内容: PCA是如何计算的 如何计算每个PC所能解释的方差 特征值与PC解释方差比例的关系 1. ...

  • 【R语言】factoextra生成发表级PCA主成分分析图(二)

    前面给大家简单介绍了做PCA分析并绘图的R包factoextra ☞【R语言】factoextra生成发表级PCA...

  • Fisher's exact test

    目录 适用实例 计算原理 计算实例3.1 解答过程3.2 R语言代码 Fisher精确检验和卡方检验的选择 1. ...

  • [转]PCA

    主成分分析PCA:这一篇给出了一个可视的样例 PCA方法从原理到实现 PCA算法实现:纯代码,我没有测试过

  • PCA原理与Sklearn参数详解

    目录 1、PCA算法原理 2、总结 1、PCA算法原理 2、总结:本文主要介绍了PCA降维原理,并介绍了Sklea...

  • PCA 和火山图

    1.PCA 加载R包 计算PCA ggplot2绘图 整理数据 1.去掉行名 解释度 比如PC1解释度为8.224...

  • PCA原理及实现-R

    PCA分析与解释 PCA是一种无参数的数据降维方法,常用的机器学习算法一种,这篇文章主要从PCA应用于解释两个方面...

  • 卡方检验(Chi-Square Test)

    适用实例 计算原理 计算实例3.1 解答过程3.2 R语言代码 1. 适用实例 卡方检验就是检验两个变量之间有没有...

  • 统计-降维:主成分分析PCA(principal Compone

    PCA:无监督的分类器 PCA的原理: 1. 拿二维数据举例,先画出一条直线,将点映射到直线上 2. 计算SS,...

  • PCA分析作图

    主成分分析,原理不讲了,直接上代码~ 1. 数据读入 数据的结构如上图。 2. PCA分析 首先是先进行PCA分析...

网友评论

    本文标题:PCA计算原理(超简单,R代码)

    本文链接:https://www.haomeiwen.com/subject/fxmsectx.html