数学建模 因子分析

目录

简介

数学模型

利用SPSS进行因子分析

步骤

对分析结果解读

 KMO和巴特利检验

公因子方差

 总方差解释

成分矩阵及旋转后的成分矩阵

旋转后的因子载荷散点图

成分得分系数矩阵


简介

因子分析和主成分分析法是一种对数据进行降维处理的方法,但主成分分析法的弊端在于其通过计算出相关系数矩阵的特征值,进而提取出来的主成分变量通常难以被解释。而因子分析方法则解决了这一问题,其构造出的因子具有明确的物理意义

因子分析是主成分分析的一种推广

数学模型

对于p个指标,n个观测值,应用因子分析有

\left\{\begin{matrix} x_1=\mu_1+a_{11}f_1+a_{12}f_2+...+a_{1m}fm+\epsilon_1\\ x_2=\mu_2+a_{21}f_1+a_{22}f_2+...+a_{2m}fm+\epsilon_2\\ ...\\x_p=\mu_p+a_{p1}f_1+a_{p2}f_2+...+a_{pm}fm+\epsilon_p \end{matrix}\right.

记为矩阵的形式有x=\mu+Af+\epsilon

f称为公因子向量,ε称为特殊银子向量,A称为因子载荷矩阵且rank(A)=m

并且假设

\left\{\begin{matrix} E(f)=0\\ E(\epsilon)=0\\ V(f)=I\\ V(\epsilon)=diag(\sigma_1^2,\sigma_2^2...\sigma_p^2)\\ cov(f,\epsilon)=E(f\epsilon')=0 \end{matrix}\right.

利用SPSS进行因子分析

步骤

 

 

 从分析结果的碎石图中确定因子分析最佳的个数

 

 限定因子个数为2进行因子分析

对分析结果解读

 KMO和巴特利检验

KMO越接近于1表明原有变量越适合做因子分析。一般建议KMO需要大于0.8

巴特利球形检验的原假设H0:指标的相关系数矩阵是一个单位阵。而p值即表格中的检验值如果小于0.05则表明相关系数矩阵显著不为一个单位阵,即变量之间存在一定的相关性,可以进行因子分析做降维处理。

公因子方差

又称为共性方差,反映了提取出来的公因子能够反应原始变量数据的数据量。

在本例中,提取出的两个公因子能够解释100m变量中95%的信息

因子旋转前后,公因子方差不变

 总方差解释

在SPSS中,总方差解释,表明每一个公共因子对原来的变量信息的解释度。

由总方差解释表可知,两个因子对原始变量的解释度高达93.747%,已经包含了原始变量的绝大多数信息。进一步说明在该因子分析的实例中,提取两个因子是比较合适的。

总方差解释可类比主成分分析中的贡献率和累计贡献率

成分矩阵及旋转后的成分矩阵

 成分矩阵,即因子载荷矩阵,即数学模型中的矩阵A。

旋转后的成分矩阵即经过旋转过后的因子载荷矩阵。

因子载荷矩阵中的每一个元素是原始变量与公共因子的相关系数,若载荷值越大,表明该变量与该公因子关系密切,即该公因子能够代表该变量。

由本例中的分析结果可知,公共因子1的载荷值均较大,表明公共因子1与原始变量具有较大的相关系数,可以解释为因子1为综合运动水平。但难以从公共因子2的载荷值对其做出合理的物理解释。

观察旋转后的成分矩阵,公共因子1在最下面5个原始变量的载荷值较大,可以理解为该公共因子是耐力因子;公共因子2在最前面3个原始变量的载荷值交大,可以理解为该公共因子是爆发因子。

通常都从旋转后的成分矩阵的载荷值对公共因子做出解释

若成分矩阵和旋转后的成分矩阵的载荷值都难以解释,则考虑更改公共因子的提取方法,公共因子的旋转方法。

旋转后的因子载荷散点图

 

以旋转后的因子载荷矩阵的每一列作为x,y坐标,画出原始坐标的散点图,可以较为直观的看出原始指标降维结果,也可以理解为指标聚类。

成分得分系数矩阵

由数学模型中对矩阵形式的因子模型进行反推可以得到f=(x-\mu-\epsilon)A^{-1}

与主成分分析中的主成分得分类似,该因子得分也可以用于系统聚类,由于对数据指标进行了降维,故可以对聚类的结果进行可视化。

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
因子分析是一种常用的数学建模方法,通过降维分析来揭示观测变量背后的潜在因子结构。在Python中,可以使用factor_analyzer库进行因子分析的实现。首先,需要安装factor_analyzer库,可以在Anaconda Prompt中使用命令"pip install factor_analyzer"进行安装。 接下来,根据相关系数矩阵进行因子分析。可以使用factor_analyzer库中的FactorAnalyzer类来实现。具体的步骤如下: 1. 导入所需的库和数据。 2. 计算相关系数矩阵。 3. 创建FactorAnalyzer对象。 4. 使用fit()方法拟合数据并进行因子分析。 5. 使用get_factor_variance()方法获取因子方差解释比例。 6. 使用transform()方法将原始数据转换为因子得分。 下面是一个示例代码: ``` # 导入所需的库 import pandas as pd from factor_analyzer import FactorAnalyzer # 导入数据 data = pd.read_csv('data.csv') # 计算相关系数矩阵 corr_matrix = data.corr() # 创建FactorAnalyzer对象 fa = FactorAnalyzer(n_factors=3, rotation='varimax') # 拟合数据并进行因子分析 fa.fit(data) # 获取因子方差解释比例 variance = fa.get_factor_variance() # 将原始数据转换为因子得分 factor_scores = fa.transform(data) ``` 请注意,上述代码中的"data.csv"是示例数据文件的路径,你需要将其替换为你自己的数据文件路径。 相关问题: 1. 如何选择因子个数? 2. 什么是因子旋转? 3. 如何解释因子方差解释比例? 相关问题: 1. 如何选择因子个数? 2. 什么是因子旋转? 3. 如何解释因子方差解释比例?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天美美吃饭啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值