#由此说明使用prcomp函数时,必须使用标准化过的原始数据。如果使用没有标准化的raw数据(不是相关系数矩阵或者协方差矩阵),必须将参数scale. = T

<result>$sdev #表示标准差,意思是 <result>$sdev[1] = sqrt(var(<result>$x))

<result>$rotation #表示的是特征向量矩阵,也可以由eigen(<输入的原数据>)$vector 得到

<result>$x #表示的是主成分结果矩阵,可以由<输入的原数据>%*%<result>$rotation得到

==============================================================

p1 = princomp(scr,cor = T);p1 ###看来,必须把cor = T加上才可以得到正确的值,否则是使用cov计算的结果,并且计算过程中有新的参数加入
#cor = False :cv <- covmat$cov * (1 - 1/n.obs)

#cor = True: cv <- covmat$cov * (1 - 1/n.obs),sds <- sqrt(diag(cv)),cv <- cv/(sds %o% sds)
#sdev = sqrt(eigen(cv, symmetric = TRUE)$value)
#下面的证明表明,使用cov和使用cor的结果还是十分的不一样的

<result>$sdev  #主成分结果矩阵每一列的标准差

<result>$loading #特征向量矩阵

<result>$scores # 主成分结果矩阵

注意:在使用princomp函数时,必须使用标准化后的原始矩阵(不能是相关系数矩阵或者协方差矩阵);如果使用未被标准化的原始数据,必须加入参数:cor = T 。

=================================================================================================

library(psych)
p32 = principal(scr,nfactors = 5,rotate = "varimax");p32

p3 = principal(scrcor,nfactors = 5,rotate = "varimax");p3

这两个运行的结果一样,说明在principal函数中,可以使用原始数据或相关系数矩阵。这个可以使用相关系数矩阵或者协方差矩阵,是十分不同于之前的两个主成分求值函数的。

p32$values #特征值,等同于结果矩阵的方差值

scr是经过标准化的数据集;r是原始矩阵,没有经过标准化的数据。

cor(scr)
cov(scr)

cor(r)

cov(r)

结果证明,经过标准化的原始矩阵的相关系数矩阵和协方差矩阵一样;但是没有经过标准化的数据集的协方差和相关系数矩阵是不一样的。

ep3 = eigen(cor(scr))
loading = ep3$vectors %*% sqrt(diag(ep3$values))
sign.tot <- vector(mode = "numeric", length = 5);sign.tot
sign.tot <- sign(colSums(loading));sign.tot
sign.tot[sign.tot == 0] <- 1;sign.tot
loadings <- loading %*% diag(sign.tot);loadings
varimax(loadings)$loadings

最后的loadings值就是上面的过程得到的,当然此处参数是 nfactors = 5, rotate = "varimax" , r = scr.

=====================================================================

以下内容来自于网址:https://site.douban.com/182577/widget/notes/11806604/note/262310174/

最常用的求解PCA的函数是stats包的
prcomp()和princomp( )。
前者采用观测阵的奇异值分解方法,后者采用相关系数阵的特征值分解方法。
输出结果上,包括特征值,载荷,主成分得分等,结果基本相似。
同时可以利用print( ),summary( )显示输出结果。
plot( )画scree plot,biplot( )绘制biplot。

SciViews包的pcomp()综合了上面两个函数的方法。

psych包的相关函数
这个包是关于心理计量的包,其中有关于主成分的函数principal( )
这个函数是作为因子分析的主成分解法存在的,要和fa.parallel()结合使用。
还有一个心理学的包:psy包,也有相关的函数

====================================================

我想说的是,principal()函数得到结果中,$value 是特征值,$loading是由因子载荷矩阵,是因子分析的主成份解法中的概念,$scores是因子得分系数。

============

http://blog.csdn.net/lilanfeng1991/article/details/36190841#

还可以参考上文

原谅我,现在还是有点模糊,都花了好几天了,算了,以后再慢慢弄明白

PCA分析和因子分析的更多相关文章

  1. 利用pca分析fmri的生理噪声

    A kernel machine-based fMRI physiological noise removal method 关于,fmri研究中,生理噪声去除的价值:一.现在随着技术的提升,高场fm ...

  2. plink 进行PCA分析

    当我们进行群体遗传分析时,得到vcf后,可利用plink进行主成分(PCA)分析: 一.软件安装 1 conda install plink 二.使用流程 第一步:将vcf转换为plink格式 1 p ...

  3. PCA分析的疑问

    R 与python scikit-learn PCA的主成分结果有部分是反的 通过R和python分别计算出来的PCA的结果存在某些主成分的结果是相反的,这些结果是没有问题的,只是表示这个分量被反转了 ...

  4. 14、PCA分析

    做芯片PCA主成分分析可以选择使用affycoretools包的plotPCA方法,以样品"GSM363445_LNTT.CEL"."GSM362948_LTT.CEL& ...

  5. PCA分析,及c++代码实现

    本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fengbingchun/article/details/79235028 主成分分析(Principal Co ...

  6. R 语言实战-Part 4 笔记

    R 语言实战(第二版) part 4 高级方法 -------------第13章 广义线性模型------------------ #前面分析了线性模型中的回归和方差分析,前提都是假设因变量服从正态 ...

  7. 因子分析和PCA总结

    因子分析和PCA 定义 因子分析就是数据降维工具.从一组相关变量中删除冗余或重复,把相关的变量放在一个因子中,实在不相关的因子有可能被删掉.用一组较小的“派生”变量表示相关变量,这个派生就是新的因子. ...

  8. Eigensoft-smartpca分析PCA报错:warning (mapfile): bad chrom: Segmentation fault

    目录 问题 解决 问题 一直以来用Eigensoft的smartpca来做群体遗传的PCA分析很顺畅,结果也比较靠谱. 但今天报错如下: $ ~/miniconda3/bin/smartpca -p ...

  9. 第七篇:数据预处理(四) - 数据归约(PCA/EFA为例)

    前言 这部分也许是数据预处理最为关键的一个阶段. 如何对数据降维是一个很有挑战,很有深度的话题,很多理论书本均有详细深入的讲解分析. 本文仅介绍主成分分析法(PCA)和探索性因子分析法(EFA),并给 ...

随机推荐

  1. right spindle supply short to gnd-- compact version

    hardware guy found that the R1004 lead to this error, but this error should not be checked, because ...

  2. AirTest源码分析之运行器

    from: https://blog.csdn.net/u012897401/article/details/82900562 使用:根据airtest文档说明,可以通过命令行来启动air脚本,需要传 ...

  3. xtrabackup 对pxc节点进行备份恢复

    xtrabackup 对pxc节点进行备份恢复 全量备份一个节点的数据,当节点挂掉时,使用备份恢复到最近状态,再启动节点加入集群. 备份 xtrabackup 命令小解释: --defaults-fi ...

  4. Python基本数据类型——列表

    序列 序列是Python中的内置数据结构,常见的序列有:列表.字典.元组. 所有的序列都有自己的索引,程序可以通过索引来访问对应的值. 列表 list list是Python的一种最常见的内置数据类型 ...

  5. window apidoc的安装和使用

    apidoc是一个轻量级的在线REST接口文档生成系统,支持多种主流语言,包括Java.C.C#.PHP和Javascript等.使用者仅需要按照要求书写相关注释,就可以生成可读性好.界面美观的在线接 ...

  6. php使用phpexcel导出文件

    php使用phpexcel导出文件 首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel 代码如下: <?php date_defaul ...

  7. 2、pandas的value_counts()和describe()

    一.value_counts pandas 的value_counts()函数可以对Series里面的每个值进行计数并且排序. value_counts是计数,统计所有非零元素的个数,默认以降序的方式 ...

  8. Codeforces Round #439 (Div. 2) Problem B (Codeforces 869B)

    Even if the world is full of counterfeits, I still regard it as wonderful. Pile up herbs and incense ...

  9. python --- 20 约束 异常处理 MD5 日志

    一.类的约束 1.抛出异常    NotImplementedError 2.抽象方法 含有抽象方法的类是抽象类 抽象类中的方法全是抽象方法的是接口 抽象类不能创建对象 二.异常处理 处理完后代码可继 ...

  10. 修改sepolicy后编译出现‘Error while expanding policy’【转】

    本文转载自:https://blog.csdn.net/yin1031468524/article/details/75644874 在系统中添加某个“*.te”后,可能会出现下面的错误: libse ...