#由此说明使用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. EDK II之USB设备驱动程序的加载与运行

    本文简单介绍一下USB设备的驱动程序是如何匹配设备以及被加载的: 上文(UDK中USB总线驱动的实现框架)提到USB总线枚举设备的最后一步是调用gBS->ConnectController()去 ...

  2. 启动项详解和更改deepin启动内核的方法

    内容来自网上查找和总结以及自己的尝试 boot里面的启动项是根据其它文件生成的,如果改boot里面,会在你更新grub后再次回到原来的状态.(之后 我(有显卡驱动问题的用户)通过在开机时选择系统页面按 ...

  3. Oracle通过dblink连接MySQL

    需要把MySQL的一些数据同步到Oracle,用ETL工具太麻烦了,通过参考官方文档实现了oracle to mysql dblink.每次修改配置后,需要重启监听才能生效,或者 reload一下,确 ...

  4. git小技巧--如何从其他分支merge个别文件或文件夹

    在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发. 创建分支 功能分为2个分支,分别为A.B. A上面有个列表页功能 B上面有个详情 ...

  5. 运行android模拟器,emulator: ERROR: x86 emulation currently requires hardware acceleration!

    运行android模拟器,emulator: ERROR: x86 emulation currently requires hardware acceleration! 问题: 运行android模 ...

  6. org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout() mybatis和spring-mybatis版本不匹配问题

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()  ...

  7. 【题解】 Luogu P4145 上帝造题的七分钟2 / 花神游历各国

    原题传送门 这道题实际和GSS4是一样的,只是输入方式有点区别 GSS4传送门 这道题暴力就能过qaq(这里暴力指线段树) 数据比较水 开方修改在线段树中枚举叶节点sqrt 查询区间和线段树基本操作 ...

  8. 最菜的小鸟(mkdir -pv)

    命令 mkdir -pv /usr/local/modules/{openjdk,nginx,tomcat,mariadb}/{manifests,files,templates,lib,tests, ...

  9. mvc 文件下载

    public class DownLoadHelper { /// <summary> /// WriteFile实现下载--测试通过 /// </summary> /// & ...

  10. 问题:oracle 12c rac数据库服务器的home目录丢失问题解决2018-06-25 18:30

    问题原因:是由于运维粗心,在缩容/home(此目录下挂载了逻辑卷lv_home)时没有先缩小文件系统(resize2fs)也没有备份,导致home数据损坏,重启时系统无法正常启动 解决方案:跳过此ho ...