因子分析vs主成分分析

前两篇文章介绍了因子分析与主成分分析的原理与基本步骤。初次学习时,大家可能感觉这是两个基本相同的方法,但实际上两者间还是有一定差异的。这篇文章就带大家盘点一下两个方法间的异同。

目的

  • 因子分析:旨在识别观测变量背后的潜在因素或结构,这些因素是不可观测的。它通常用于探索性数据分析,以发现变量之间的潜在关系。

  • 主成分分析:主要用于数据降维,将原始变量转换为较少数量的主成分,这些主成分是原始变量的线性组合。它不涉及潜在变量的概念。

方法

  • 因子分析

    • 考虑变量之间的相关性,通过最小化残差来提取因子。
    • 通常使用最大似然法、最小二乘法或因子载荷估计等方法。
    • 因子载荷是观测变量与潜在因子之间的相关系数。
  • 主成分分析

    • 考虑变量的方差,寻找能够解释最大方差的线性组合。
    • 使用特征值分解或奇异值分解等方法。
    • 主成分是原始变量的加权线性组合,权重由特征向量给出。

应用

  • 因子分析

    • 常用于社会科学、心理学和市场研究等领域,用于探索变量之间的潜在结构和关系。
  • 主成分分析

    • 广泛应用于数据预处理、图像压缩、金融风险管理等领域,用于减少数据集的维度。

假设

  • 因子分析

    • 假设变量的相关性是由较少数量的潜在因子引起的。
    • 因子通常是随机的,具有特定的分布。
  • 主成分分析

    • 假设变量之间的相关性可以通过线性组合来解释。
    • 主成分是确定性的,不涉及随机性。

因子与主成分的区别

  • 因子:是潜在的、不可观测的变量,通常具有特定的解释性。

  • 主成分:是原始变量的线性组合,是可观测的,主要用于数据降维。

举例

到此都是一些教科书式的解释,下面举一个简单的例子方便大家理解。
假设场景
假设我们是一家健康研究机构,收集了一组关于100名志愿者的以下数据:

  • 年龄(Age)
  • 体重(Weight)
  • 身高(Height)
  • 血压(Blood Pressure)
  • 胆固醇水平(Cholesterol)
    我们的目标是探索这些变量之间的关系,并简化数据结构。

主成分分析(PCA)

目标:PCA旨在降维,找到数据中方差最大的方向,即主成分。
步骤

  1. 标准化数据:因为变量的量纲不同,首先对数据进行标准化。
  2. 计算协方差矩阵:找到变量间的关系。
  3. 特征值分解:找到协方差矩阵的特征向量和特征值,特征向量决定了主成分的方向,特征值决定了主成分解释的方差比例。
  4. 选择主成分:通常选择前几个特征值较大的主成分。

结果

  • 第一主成分可能与体重和身高高度相关,因为这两个变量通常在体型描述中变化最大。
  • 第二主成分可能与血压和胆固醇相关,因为它们可能共同反映了心血管健康。

解释

  • PCA找到的是数据中方差最大的方向,而不是变量背后的潜在因素。

因子分析
目标:因子分析旨在识别观测变量背后的潜在因素或结构。
步骤

  1. 数据标准化:同样需要对数据进行标准化。
  2. 计算相关性矩阵:分析变量之间的相关性。
  3. 提取因子:通过因子提取方法(如极大似然法)找到因子载荷,即每个变量与每个因子的关系。
  4. 因子旋转:为了更易于解释,可能需要对因子进行旋转(如Varimax)。
  5. 解释因子:为每个因子赋予一个有意义的名称,如“身体健康”。

结果

  • 第一个因子可能被解释为“身体健康”,因为它与体重、身高、血压和胆固醇都有较高的载荷。
  • 第二个因子可能与“年龄”相关,因为随着年龄的增长,体重、血压和胆固醇可能会发生变化。

解释

  • 因子分析关注的是变量背后的潜在因素,而不是单纯的方差解释。

通过这个例子,我们可以看到PCA和因子分析在处理相同数据集时的不同视角和应用。PCA更注重数据的方差解释和降维,而因子分析更注重揭示数据的潜在结构和内在联系。

总结

因子分析和主成分分析虽然都可以用于降维,但它们的目标和方法不同。因子分析更侧重于探索数据的潜在结构,而主成分分析更侧重于数据的方差解释。在实际应用中,选择哪种方法取决于分析的目的和数据的特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年起重信号司索工(建筑特殊工种)证模拟考试题库及起重信号司索工(建筑特殊工种)理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年起重信号司索工(建筑特殊工种)证模拟考试题库及起重信号司索工(建筑特殊工种)理论考试试题是由安全生产模拟考试一点通提供,起重信号司索工(建筑特殊工种)证模拟考试题库是根据起重信号司索工(建筑特…

C语言课程回顾:十二、C语言之 位运算

C语言之 位运算 12 位运算12.1 位运算符C语言提供了六种位运算符:12.1.1 按位与运算12.1.2 按位或运算12.1.3 按位异或运算12.1.4 求反运算 12.2 位域(位段)12.3 位运算的实际应用12.4位运算注意事项1 二进制和位2 位运算符3常见位…

2.9.GoogLeNet

GoogLeNet ​ 主要解决了什么样大小的卷积核是最合适的:有时使用不同大小的卷积核组合是有利的 1.Inception块 ​ Inception块由四条并行路径组成。 前三条路径使用窗口大小为11、33和55的卷积层,从不同空间大小中提取信息。 ​ 中间的两条路径在输入…

谷粒商城实战-58-商品服务-API-三级分类-删除-批量删除小结

文章目录 一,增加一个批量删除的按钮并绑定事件二,全栈工程师三,逆向工程在全栈开发中的应用提升效率的方式:使用案例: 这一节的主要内容是开发批量删除分类的功能。 一,增加一个批量删除的按钮并绑定事件 …

zh echarts样式

记录一下: 一个图的配置 在echarts官网demo界面 option {title: {text: },legend: {data: [xxx前, xxx后]},radar: {// shape: circle,name: {// 雷达图各类别名称文本颜色textStyle: {color: #000,fontSize: 16}},indicator: [{ name: 完整性, max: 1 },{ name:…

【无标题】shell脚本的基本命令+编写shell脚本

shell脚本 一.shell基础 1.shell概念 2.shell脚本 3.shell脚本编写注意事项 二.编写shell脚本 1.编写一个helloworld脚本,运行脚本 [rootshell ~]# vim helloworld.sh #!/bin/bash //声明 echo "hello world!" ls -lh /etc/ 运行脚本(四种方式)&…

图像处理 -- Sensor与ISP驱动之像素时钟获取的方法

像素时钟获取方法 像素时钟(Pixel Clock,也称为 PCLK)是摄像头 sensor 和 ISP 协调工作时的关键参数之一,决定了每个像素的传输速率。获取或计算像素时钟可以通过以下几种方法: 1. 数据手册 (Datasheet) 大多数摄像…

C语言字符函数与字符串函数超详解

文章目录 前言1. 字符分类函数2. 字符转换函数3. strlen3. 1 strlen 的使用3. 2 strlen 的模拟实现 4. strcpy4. 1 strcpy 的使用4. 2 strcpy 的模拟实现 5. strcat5. 1 strcat 的使用5. 2 strcat 的模拟实现 6. strcmp6. 1 strcmp 的使用6. 2 strcmp 的模拟实现 7. strncpy 函…

VI/VIM编辑器及三种模式

目录 1. 三种模式 2. 使用 VIM 3. i/ a/ o 进入输入模式 VI/VIM是 visual interface 的缩写是 Linux 中最经典的文本编辑器; VIM是 VI 的增强版本,兼容 VI 的所有指令,不仅能够编辑文本,还具有 shell 程序编辑的功能&#xff…

maven引入了jar包但在class文件里找不到jar包里的类

在工作当中遇到的这个问题,别人引入的jar包,我代码里报错 maven clean 和 maven install 都不管用 检查过了pom文件 检查了maven仓库路径下是否有这个cn.hutool的jar包 都没有找到问题 最终解决办法是手动引入 步骤一:点击左上角file->…

3.4-GRU

1网络结构 1.1与LSTM相比 LSTM里面有三个门,还有一个增加信息的tanh单元,参数量相较于RNN显著增加; 因此GRU在参数上比LSTM要少; 另外,LSTM 将必要信息记录在记忆单元中,并基于记忆单元的信息计算隐藏状…

MySQL数据库(基础篇)

🌏个人博客主页:心.c 前言:今天讲解的是MySQL的详细知识点的,希望大家可以收货满满,话不多说,直接开始搞! 🔥🔥🔥文章专题:MySQL 😽感…

1.c#(winform)编程环境安装

目录 安装vs创建应用帮助查看器安装与使用( msdn) 安装vs 安装什么版本看个人心情,或者公司开发需求需要 而本栏全程使用vs2022进行开发c#,着重讲解winform桌面应用开发 使用***.net framework***开发 那先去官网安装企业版的vs…

Python可重入锁RLock的使用

Python可重入锁RLock的使用 在Python中,RLock(即可重入锁)是一种特殊类型的锁,它允许一个线程多次请求同一把锁,而不会造成死锁。这在某些复杂的多线程程序中非常有用,特别是当线程在执行一个函数时需要调用另一个需要相同锁的函数时。 使用 RLock 的基本方法 导入 RLo…

AI绘画入门实践 | Midjourney:使用 --chaos 给图像风格来点惊喜

在 Midjourney 中,--chaos 影响初始图像网格的多样性,指 MJ 每次出的4张图之间的差异性。 默认值为0,值越高,差异性越大。 使用格式:--chaos 0-100的整数值 使用演示 a lot of flowers --chaos 0 --v 6.0a lot of fl…

SSAN代码解析

文章目录 run_docred.py详细介绍每一行代码 dataset.py详细介绍每一行代码输入和输出示例 docred_convert_examples_to_features详细介绍每一行代码 DocREDProcessor详细介绍每一行代码输入和输出 run_docred.py 下面是带有详细中文注释的代码说明,包括输入和输出的…

项目打包与运行

前端运行时必须有与后端相同的数据库版本,数据库账号密码 右侧maven -> 展开要打包的项目 -> 生命周期 -> 双击package 打包好之后在target目录下 右键打开 在资源目录下输入cmd,执行以下命令即可运行(端口号为yml文件…

Redis实战篇(黑马点评)笔记总结

一、配置前后端项目的初始环境 前端: 对前端项目在cmd中进行start nginx.exe,端口号为8080 后端: 配置mysql数据库的url 和 redis 的url 和 导入数据库数据 二、登录校验 基于Session的实现登录(不推荐) &#xf…

【iOS】—— retain\release实现原理和属性关键字

【iOS】—— retain\release实现原理和属性关键字 1. retain\reelase实现原理1.1 retain实现原理1.2 release实现原理 2. 属性关键字2.1 属性关键字的分类2.2 内存管理关键字2.2.1 weak2.2.2 assgin2.3.3 strong和copy 2.4 线程安全的关键字2.5 修饰变量的关键字2.5.1常量const…

文件上传总结

一、原理 通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好,使得恶意用户可以通过文件中上传的一句话木马获得操控权 二、绕过方法 1>前端绕过 1.删除前端校验函数 checkFile() 2.禁用js…