Python 中的因子分析简介

因子分析是一种线性统计模型,用于解释观测变量之间的方差并减少变量数量。本文介绍了因子分析的类型、工作原理、选择因素数量的方法、与主成分分析的区别,并展示了在Python中使用`factor_analyzer`包进行因子分析的示例。因子分析广泛应用于市场研究、心理学等领域,但其结果解释可能具有主观性。
摘要由CSDN通过智能技术生成
在本教程中,您将学习因子分析的基础知识以及如何在 python 中实现因子分析。

因子分析 (FA) 是一种探索性数据分析方法,用于从一组观测变量中搜索有影响力的基础因子或潜在变量。它通过减少变量的数量来帮助数据解释。它从所有变量中提取最大公共方差,并将它们放入一个公共分数中。

因子分析广泛用于市场研究,广告,心理学,金融和运筹学。市场研究人员使用因素分析来识别对价格敏感的客户,识别影响消费者选择的品牌特征,并帮助了解分销渠道的渠道选择标准。

在本教程中,您将介绍以下主题:

  • 因子分析
  • 因子分析的类型
  • 确定因素数
  • 因子分析与主成分分析
  • Python 中的因子分析
  • 充分性测试
  • 解释结果
  • 因子分析的优缺点
  • 结论

因子分析

因子分析是一种线性统计模型。它用于解释观测变量之间的方差,并将一组观测变量浓缩为称为因子的未观测变量。观测变量建模为因子和误差项()的线性组合。因子或潜在变量与多个观测到的变量相关联,这些变量具有共同的响应模式。每个因子解释观测变量中特定量的方差。它通过减少变量的数量来帮助数据解释。

因子分析是一种用于调查感兴趣的变量 X1、X2,......., Xl 是否与较少数量的不可观测因子 F1、F2 呈线性关系的方法,........, Fk.

来源:此图像是根据我在因子分析注释中找到的图像重新创建的。该图像提供了因子分析的完整视图。

假设:

  1. 数据中没有异常值。
  2. 样本数量应大于因子。
  3. 不应该有完美的多重共线性。
  4. 变量之间不应存在同质性。

因子分析的类型

  • 探索性因素分析:它是社会和管理研究人员中最受欢迎的因素分析方法。它的基本假设是,任何观测到的变量都与任何因子直接相关。
  • 验证性因素分析(CFA):其基本假设是每个因素都与一组特定的观测变量相关联。CFA确认了基本面上的预期。

因子分析如何工作?

因子分析的主要目的是减少观测变量的数量并找到不可观测的变量。这些未观察到的变量有助于市场研究人员完成调查。观测变量到未观测变量的这种转换可以通过两个步骤实现:

  • 因子提取:在该步骤中,使用方差划分方法选择的因子数量和方法进行提取,例如主成分分析和公共因子分析。
  • 因子旋转:在此步骤中,旋转尝试将因子转换为不相关的因子 - 此步骤的主要目标是提高整体可解释性。有许多旋转方法可用,例如:Varimax旋转方法,Quartimax旋转方法和Promax旋转方法。

术语

什么是因素?

因子是描述观测变量数量之间关联的潜在变量。最大因子数等于观测变量数。每个因子都解释了观测变量中的特定方差。方差量最低的因子被丢弃。因子也称为潜在变量或隐藏变量或未观测变量或假设变量。

什么是因子载荷?

因子加载是一个矩阵,它显示每个变量与基础因子的关系。它显示了观测变量和因子的相关系数。它显示了由观测变量解释的方差。

什么是特征值?

特征值表示从总方差中解释每个因子的方差。它也被称为特征根。

什么是社区?

共性是每个变量的平方载荷之和。它表示公共方差。它的范围从 0-1,接近 1 的值表示更多的方差。

什么是因子旋转?

旋转是更好地解释因子分析的工具。旋转可以是正交的,也可以是倾斜的。它以清晰的加载模式重新分布了共性。

选择因素数量

凯撒准则是一种分析方法,它基于由因子解释的较大比例的方差将被选中。特征值是确定因子数的良好标准。通常,大于 1 的特征值将被视为要素的选择标准。

图形方法基于因子特征值(也称为碎石图)的可视化表示。此碎石图有助于我们确定曲线构成肘部的因素数量。

因子分析与主成分分析

  • PCA 分量解释最大方差量,而因子分析解释数据中的协方差。
  • PCA 分量彼此完全正交,而因子分析则不要求因子正交。
  • PCA分量是观测变量的线性组合,而在FA中,观测变量是未观测变量或因子的线性组合。
  • PCA 组件是不可解释的。在 FA 中,基础因素是可标记和可解释的。
  • PCA是一种降维方法,而因子分析是潜变量方法。
  • PCA是一种因子分析。PCA是观察性的,而FA是一种建模技术。

使用factor_analyzer包的python中的因子分析

导入所需的库

# Import required libraries
import pandas as pd
from sklearn.datasets import load_iris
from factor_analyzer import FactorAnalyzer
import matplotlib.pyplot as plt

加载数据

让我们对BFI(基于人格评估项目的数据集)进行因子分析,这些因素分析是使用6点响应量表收集的:1非常不准确,2中度不准确,3略微不准确4略微准确,5中等准确和6非常准确。也可以从以下链接下载此数据集:https://vincentarelbundock.github.io/Rdatasets/datasets.html

df= pd.read_csv("bfi.csv")

预处理数据

df.columns
Index(['A1', 'A2', 'A3', 'A4', 'A5', 'C1', 'C2', 'C3', 'C4', 'C5', 'E1', 'E2',
       'E3', 'E4', 'E5', 'N1', 'N2', 'N3', 'N4', 'N5', 'O1', 'O2', 'O3', 'O4',
       'O5', 'gender', 'education', 'age'],
      dtype='object')
# Dropping unnecessary columns
df.drop(['gender', 'education', 'age'],axis=1,inplace=True)
# Dropping missing values rows
df.dropna(inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2436 entries, 0 to 2799
Data columns (total 25 columns):
A1    2436 non-null float64
A2    2436 non-null float64
A3    2436 non-null float64
A4    2436 non-null float64
A5    2436 non-null float64
C1    2436 non-null float64
C2    2436 non-null float64
C3    2436 non-null float64
C4    2436 non-null float64
C5    2436 non-null float64
E1    2436 non-null float64
E2    2436 non-null float64
E3    2436 non-null float64
E4    2436 non-null float64
E5    2436 non-null float64
N1    2436 non-null float64
N2    2436 non-null float64
N3    2436 non-null float64
N4    2436 non-null float64
N5    2436 non-null float64
O1    2436 non-null float64
O2    2436 non-null int64
O3    2436 non-null float64
O4    2436 non-null float64
O5    2436 non-null float64
dtypes: float64(24), int64(1)
memory usage: 494.8 KB
df.head()
答1 答2 解答3 答4 解答5 C1 二、低温 C3型 C4型 C5型 ... N1 N2 N3 N4型 N5型 O1型 氧气 氧气 氧气 O5型
0 2.0 4.0 3.0 4.0 4.0 2.0 3.0 3.0 4.0 4.0 ... 3.0 4.0 2.0 2.0 3.0 3.0 6 3.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值