今天把潜变量和降维分析的方法合起来给大家写写,因为这两个东西之间有诸多共同之处。

潜变量

为啥需要潜变量呢?考虑一个问题,比如你想测测一个人有多幸福,你怎么测?

估计你会看看这个人:

  • 脸上有没有笑容
  • 有没有加薪
  • 是不是健康
  • 爱不爱交际

等等,你试图通过这么一些可以测量的指标来反映一个人的所谓的幸福的状况,这个是我们自然而然想得到的,因为我们心里明白幸福是一个抽象概念,不能直接测,所以叫做潜变量。

降维Dimension Reduction/Compression

在机器学习中专门有讲降维的算法,但是在社会科学领域运用较多的还是因子分析和主成分分析。我们一个一个来看:

主成分分析

主成分分析是因子分析中提取因子的一个重要技巧,它要做的事就是从一系列的变量中提取成分,每个成分我们都希望它能解释原始数据尽可能多的变异。

记住一句话:成分是原始变量的线性组合。

Components are linear combination of the original variables.

在做主成分分析的时候我们会得到和变量一样多的成分,每个成分都会比前一个成分解释的变异少一点,然后所有成分解释原始数据变异的100%。

理论上我们可以从成分中完全复原我们的原始数据,但是我们的目的是要降维嘛,所以我们通常不会保留所有的成分,只会保留主成分。

上图就是一个主成分分析的示意图,4个原始变量,4个成分,很可能我们就只保留前两个成分就行。

主成分分析实例

用到的数据为Harman.5,这个数据集包含5个变量。我们可以用psych包的principal函数进行主成分分析,使用这个函数你只需要给出数据集和你想要保留的主成分个数就行。比如我想2个:

library(psych)
pc = principal(Harman.5, nfactors=2,  rotate='none', covar = F)
pc

如果你想要5个成分都出来,只需要把nfactors改成5就行。

解释一下结果的输出:

SS loadings,这个是变量在每个成分的载荷平方和sum of the squared loadings,理论上一共有5个成分,这个5个成分的载荷平方和相加为1。

Proportion Var,这个是该成分解释的方差占比。就是用SSloading比上5得到的。

Cumulative Var,这个是累计方法差解释比,可以看到只要2个成分就解释了源数据93%的变异。很棒。

h2,这个是成分解释的变量变异的比例,因为我们只保留了2个主成分,所以不是1,如果保留5个主成分,这个值就应该是1.

u2,这个是1-h2

com,这个是complexity,如果这个值为1就说明这个变量只在一个成分上有载荷,为0就是都没有。

但是我们在看loading的结果,这下就尴尬,我们看到成分1真的很强大,所有的变量在成分11上面的载荷都很高,这样的话我们就没法给成分命名了呀。

上面我们做出来的主成分分析的可视化表达如下:

可以看到成分1和所有的变量联系都挺强的,所以这个方法并不是一个可以解释的好的方法。

因子分析

因子分析和主成分分析都是降维的方法,在主成分分析中每个主成分都是所有变量的线性组合。画出图来应该是这个样子的:

但是在因子分析中,上面的关系变了

在因子分析中,我们认为所有的变量都是由因子造成的,当然了这个过程是允许误差存在的,所以在因子分析中会有一个误差项,通过因子并不能完全的复原原始数据,但是主成分是可以的哦。

贴几句原文大家自己体会:

Factor analysis focuses on covariance. PCA focuses on variance.

Factors are the cause of the observed variables, variables are the cause of components.

Factor analysis does not assume perfect measurement of observed variables.

因子分析实操

我们还是用同样的数据进行因子分析:

fac = fa(Harman.5, nfactors=2,  rotate='none')
fac

同样的道理,如果你要做5因子模型,就将nfactors改成5就行,这儿从结果看2因子模型已经解释了原始数据变异的90%,已经非常好了,同时我们注意第一个因子解释原始数据变异的0.55,第二个解释了0.35,其实差别没那么大。

还要强调的是因子分析的时候默认因子之间是可以有相关的,这个与PCA是不同的。所以就有可能出现一个显变量虽然在因子1上没有载荷在其他因子之间有载荷,但是因子之间有相关,所以显变量和因子1的相关也是抹不掉的。

但是,你如果把因子进行正交旋转orthogonal rotations,那么因子分析就和主成分分析一样了。所以你会看到SPSS中把主成分分析归在因子分析中的。

所以记住因子分析就是非正交旋转的主成分分析。

主成分分析就是正交旋转的因子分析,因子之间不存在相关。

PCA and FA are identical if there is only one factor or the factors are orthogonal

实例辨析两者差异

首先我们来做因子分析,并给出载荷:

fac2 = fa(Harman.5, nfactors=2)
fac2$loadings[] %>% round(2)
fac2$Structure[] %>% round(2)

解释一下上面两个结果,两个都是载荷,都差不多,第一个是pattern coefficients,第二个是structure coefficients:

  • pattern coefficients: these are the standard loadings you see
  • structure coefficients: the correlation of an observed variable with a factor that reflects any association, causal or otherwise.

再来做主成分分析给出载荷:

pc = principal(Harman.5, nfactors=2,  rotate= "none" , covar = T)
pc

可以看到两个方法做出来的载荷基本上一样。

小结

今天由潜变量引出,给大家写了PCA和FA的异同,希望对大家有启发,感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请关注后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞转发。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦。

R数据分析:潜变量与降维方法(主成分分析与因子分析)相关推荐

  1. matlab高维数据降维方法,数据分析:常用的降维方法

    主成分分析 主成分分析(Principal Component Analysis,PCA)也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标. 在统计学中,主成分分析是一种简化数据集的 ...

  2. 在线作图丨数据降维方法①——主成分分析PCA

    PCA是什么? 主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度, ...

  3. R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

    之前的文章中都是给大家写的变量间线性关系的做法,包括回归和广义线性回归,变量间的非线性关系其实是很常见的,今天给大家写写如何拟合论文中常见的非线性关系.包括多项式回归Polynomial regres ...

  4. 稀疏学习、稀疏表示、稀疏自编码神经网络、字典学习、主成分分析PCA、奇异值分解SVD 等概念的梳理,以及常用的特征降维方法

    稀疏学习.稀疏表示.稀疏自编码神经网络.字典学习.主成分分析PCA.奇异值分解SVD 等概念的梳理,以及常用的特征降维方法 关于稀疏 稀疏编码 Sparse Coding 与字典学习 神经网络的正则化 ...

  5. 主成分与因子分析异同_如何做主成分分析和因子分析?它们的区别与联系在哪里?...

    "主成分分析和因子分析有什么区别和联系?"这个问题其实很多朋友在后台提问过,今天将这个问题的答案写成推送分享给大家.以后有问题或需求,请在下方留言区留言.觉得解释得好的朋友,记得打 ...

  6. R与结构方程模型(2):潜变量

    R与结构方程模型 降维 主成分分析 因子分析(Factor Analysis) 结构和测量模型 因子分析的其他问题 术语 潜变量的其他用途 总结 R包 原文链接:https://m-clark.git ...

  7. 业务数据分析中可能用到的简单的数据挖掘方法——相关性分析、主成分分析、因子分析

    业务数据分析中可能用到的简单的数据挖掘方法--相关性分析.主成分分析.因子分析 相关性分析 相关性分析通过相关系数来描述两个变量之间的相关性程度. 通过相关系数判断两者会不会相互影响,影响是正相关还是 ...

  8. r语言数据变量分段_R数据分析:用R语言做meta分析

    这里以我的一篇meta分析为例,详细描述meta分析的一般步骤,该例子实现的是效应量β的合并 R包:metafor或meta包,第一个例子以metafor包为例. 1.准备数据集 2.异质性检验 in ...

  9. pca 累积方差贡献率公式_机器学习数据降维方法:PCA主成分分析

    PCA在机器学习中很常用,是一种无参数的数据降维方法.PCA步骤: 将原始数据按列组成n行m列矩阵X 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值 求出协方差矩阵 求出协方差矩阵的 ...

最新文章

  1. python import问题
  2. WPF(C#)与MATLAB混合编程
  3. android 获取图片像素密度,android 获取屏幕的密度和像素 点
  4. 推荐一款ui架构--frozenui
  5. wpf绑定之格式化日期
  6. 【转】STL中map用法详解
  7. 华为5500v3多路径linux6,CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  8. 你真的了解什么是项目管理吗?
  9. Content negotiation
  10. gps校正 android,通过GPS时间同步Android设备?
  11. 润和大数据负责人崔凯参加PostgreSQL中国技术大会
  12. AutoJsPro,阿伟的假期(看广告游戏)脚本实例
  13. 模板消息接口php代码demo,发送模板API例子
  14. 令人拍案叫绝的算法学习网站新手算法入门到精通,算法面试冲刺资料这里都有
  15. 10分钟带你彻底搞懂微内核架构
  16. pdb 符号文件 如何生成的,作用
  17. MyBatis第十一章:项目案例——update配置及set动态语句操作
  18. Faiss之PQ详解
  19. 中国古典爱情故事系列
  20. 媲美GoogleEarth的ArcGISEarth安装教程(附下载地址)

热门文章

  1. 解决塌陷的几种·办法
  2. zabbix添加mysql监控
  3. 在ts文件中使用pinia报错解决
  4. Rasa Core实践 报时机器人
  5. java一卡通管理系统实现_基于jsp的校园一卡通管理系统
  6. 仓库物资管理系统(C#+SQL)
  7. 贝叶斯软件genle教程_贝叶斯网络可视化软件GeNIe使用说明
  8. 推荐算法 :DIN模型
  9. access 此程序未正确安装_圣空法师:把你大脑中错误的程序消除、卸载,安装上正确的程序...
  10. 2018.7.26 日,第二节直播课,课堂笔记,安装centos和登陆,