matlab rotatefactors,第十二章-matlab--因子分析.docx

第十二章 因子分析(贵州大学 杨虎 统计)

引出因子分析的定义:作个比喻,对面来了一群女生,我们一眼就能够分辨出孰美孰丑,这是判别分析;并且我们的脑海中会迅速的将这群女生分为两类;美的一类,丑的一类,这是聚类分析。我们之所以认为某个女孩漂亮,是因为她具有漂亮女孩所具有的一些共同点,比如漂亮的脸蛋,高挑的身材,白皙的皮肤,等等。其实这种从研究对象中寻找公共因子的办法就是因子分析(Factor Analysis)。

因子分析也是利用降维的思想,把每一个原始变量分解成两部分,一部分是少数几个公共因子的线性组合,另一部分是该变量所独有的特殊因子,其中公共因子和特殊因子都是不可观测的隐变量,我们需要对公共因子作出具有实际意义的合理解释。因子分析的思想源于1904年查尔斯,斯皮曼(charles spearman)对学生考试成绩的研究,目前因子分析已经在很多领域得到广泛应用。

本章主要内容包括:因子分析的理论简介,因子分析的matlab实现,因子分析具体案例。

12.1因子分析简介

12.11 基本因子分析模型

设P维总体的均值为协方差矩阵为,相关系数矩阵为。因子分析的一般模型为

(12.1)

其中,为m个公共因子,是变量所独有的特殊因子他们都是不可观测的隐变量。称为变量在公共公共因子上的截荷,它反映了公共因子对变量的重要程度,对解释公共因子具有重要的作用。可以看出模型(12.1)与多重线性回归模型有些相似,但它与多重线性回归模型有着本质的区别,因为公共因子和特殊因子都是不可观测的隐变量。

式(12.1)还可以写成矩阵形式

(12.2)

其中,称为因子载荷矩阵,为公共因子向量,为特殊因子向量。通常对模型(12.1)和(12.2)作如下假定:

公共因子不相关,且具有单位方差,即,;

特殊因子彼此不相关,即,;

公共因子和特殊因子彼此不相关,即。

12.1.2 因子模型的基本性质

1,的分解,对式(12.2)两边求协方差矩阵,并注意到模型的假定,可得

若x的各分量已经标准化,则

模型不受单位影响

对x做换变换其中则模型(12.2)可以变形为:

这仍是一个因子模型,其中,,。

3因子载荷阵不唯一

设T为一个正交矩阵,则有:

令,则是由因子经正交旋转后得到的新因子,是相应的因子载荷阵。当公共因子不好解释时,就可以通过因子旋转得到新的因子和载荷阵,使得新的因子和载荷阵,使得新因子具有更好的实际意义,便于解释。

因子载荷矩阵是原始变量和公共因子的协方差矩阵

根据模型假设及协方差的性质可得

若的各分量已经标准化,则:

5共性方差与特殊方差

求式(12.1)中变量的方差可得:

(12.3)

令,则反映了公共因子对变量的影响,可看成公共因子对变量的方差贡献,称为共性方差。特殊因子的方差则反映了特殊因子对变量的方差贡献,称为特殊方差。每个原始变量的方差都被分成了共性方差和特殊方差两部分。

若的各分量已经标准化,则

(12.4)

6公共因子重要性的度量

将式(12.3)关于求和可得:

令,则反映了第个公共因子对个原始变量总方差的贡献,他是衡量公共因子重要性的一个度量,值越大,说明第个公共因子越重要,称为第个公共因子的贡献率,若的各分量已经标准化,则的贡献率为。

因子载荷阵和特殊方差的估计

求解因子模型的关键是估计因子载荷阵和特殊方差阵,常用的估计方法有主成分法,主因子法和最大似然法。

主成分法

设为取自总体的样本,记样本协方差矩阵和样本相关系数矩阵分别为

其中为样本均值。将作为的估计作为的估计。

从出发求解主成分,设为的个特征值为相应的正交单位特征向量。根据矩阵的谱分解,可作如下分解

(12.5)

当前个主成分的累积贡献率达到一个比较高的水平(例如85%以上)时,可由式(12.5)的前项给出载荷的估计,由后项给出特殊方差矩阵的估计,即

(12.6)

其中,。

由于是对角阵,所以式(12.6)的第一行只能是约等式,为了保证和的对角线元素相等,可得。

上面基于主成分分析求出的和是因子模型的一个解,称为主成分解。的第列元素平方和等于,它反映了第个公共因子对个原始变量总方差的贡献。若需考虑更多(多于个)公共因子,则只需考虑新的公共因子的载荷的估计,前面个公共因子的载荷阵不变。若原始变量的单位和数量级别差距很大时,可以从样本相关系数矩阵出发进行求解,此时

记,称为残差矩阵,的对角元素全为0,其余元素满足

上式的证明略。它说明了当后个特征值平方和较小,即前个公共因子对个原始变量总方差的贡献

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是使用 MATLAB 进行主成分分析(PCA)并对结果进行旋转变换的过程,下面是对每一行代码的解释: ```matlab clc,clear % 清除命令行窗口和工作区中的变量 data=[123 54 66 ... 25 333 89]; % 载入原始数据 n=size(data,1); x=data x=zscore(x); % 数据标准化 r=cov(x) % 求标准化数据的协方差阵,即求相关系数矩阵 [vec,val,con]=pcacov(r) % 进行主成分分析的相关计算 num=input('请选择主因子的个数:'); % 交互式选择主因子的个数 f1=repmat(sign(sum(vec)),size(vec,1),1); vec=vec.*f1; % 特征向量正负号转换 f2=repmat(sqrt(val)',size(vec,1),1); a=vec.*f2 % 求初等载荷矩阵 am=a(:,1:num); % 提出 num 个主因子的载荷矩阵 [b,t]=rotatefactors(am,'method', 'varimax') % 旋转变换,b 为旋转后的载荷阵 bt=[b,a(:,num+1:end)]; % 旋转后全部因子的载荷矩阵 contr=sum(bt.^2) % 计算因子贡献 rate=contr(1:num)/sum(contr) % 计算因子贡献率 coef=inv(r)*b % 计算得分函数的系数 score=x*coef % 计算各个因子的得分 weight=rate/sum(rate) % 计算得分的权重 Tscore=score*weight' % 对各因子的得分进行加权求和,即求各地区综合得分 ``` 其中,`data` 是包含原始数据的向量,`cov()` 函数计算数据的协方差矩阵,`pcacov()` 函数进行主成分分析并返回一些相关结果。`rotatefactors()` 函数进行旋转变换,返回旋转后的载荷矩阵 `b`。后续代码计算因子贡献、因子贡献率、得分函数系数、各个因子的得分、得分的权重等,并最终求出各地区综合得分 `Tscore`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值