MATLAB因子分析

MATLAB因⼦分析
因⼦分析就是从研究对象中寻公共因⼦的⽅法。
判别分析、聚类分析、因⼦分析的⽐较:
对⾯来了来了⼀⼥⽣,我们⼀眼就能分辨出谁美谁丑,这是判别分析;并且在我们脑海⾥会对这⼥⽣聚为两类:美的⼀类和丑的⼀类,这是聚类分析;我们之所以认为某个⼥孩漂亮是因为她具有漂亮⼥孩所具有的⼀些共同点,⽐如漂亮的脸蛋、⾼挑的⾝材等等,这种从研究对象中寻公共因⼦的办法就是因⼦分析。
因⼦分析也是利⽤降维思维,把每⼀个原始变量分解成两部分,⼀部分是少数⼏个公共因⼦的线性组合,另⼀部分是该变量所独有的特殊因⼦,其中公共因⼦和特殊因⼦都是不可观测的隐变量,我们需要对公共因⼦做出具有实际意义的合理解释。
1.因⼦分析简介
大小头1.1 基本因⼦分析模型
设p维总体x=(x1,x2,….,xp)’的均值为u=(u1,u2,….,u3)’,因⼦分析的⼀般模型为
x1=u1+a11f1+a12f2+……..+a1mfm+ε1
x2=u2+a21f1+a22f2+……..+a2mfm+ε2
………
..  …
xp=up+ap1f1+fp2f2+……….+apmfm+εp
其中,f1,f2,…..,fm为m个公共因⼦;εi是变量xi(i=1,2,…..,p)所独有的特殊因⼦,他们都是不可观测的隐变量。称aij(i=1,2,…..,p;j=1,2,…..,m)为变量xi的公共因⼦fi上的载荷,它反映了公共因⼦对变量的重要程度,对解释公共因⼦具有重要的作⽤。上式可以写为矩阵形式
x=u+Af+ε
其中A=(aij)pxm 称为因⼦载荷矩阵;f=(f1,f2,….,fm)’为公共因⼦向量;ε=(ε1,ε2,…..εp)称为特殊因⼦向量
1.2 共性⽅差与特殊⽅差
xi的⽅差var(xi)由两部分组成,⼀个是公共因⼦对xi⽅差的贡献,称为共性⽅差;⼀个是特殊因⼦对xi⽅差的贡献,称为特殊⽅差。每个原始变量的⽅差都被分成了共性⽅差和特殊⽅差两部分。
1.3 因⼦旋转
因⼦分析的主要⽬的是对公共因⼦给出符合实际意义的合理解释,解释的依据就是因⼦载荷阵的个列元素的取值。当因⼦载荷阵某⼀列上各元素的绝对值差距较⼤时,并且绝对值⼤的元素较少时,则该公共因⼦就易于解释,反之,公共因⼦的解释就⽐较困难。此时可以考虑对因⼦和因⼦载荷进⾏旋转(例如正交旋转),使得旋转后的因⼦载荷阵的各列元素的绝对值尽可能量两极分化,这样就使得因⼦的解释变得容易。
因⼦旋转⽅法有正交旋转和斜交旋转两种,这⾥只介绍⼀种普遍使⽤的正交旋转法:最⼤⽅差旋转。这种旋转⽅法的⽬的是使因⼦载荷阵每列上的各元素的绝对值(或平⽅值)尽可能地向两极分化,即少数元素的绝对值(或平⽅值)取尽可能⼤的值,⽽其他元素尽量接近于0.
1.4 因⼦得分
在对公共因⼦做出合理解释后,有时还需要求出各观测所对应的各个公共因⼦的得分,就⽐如我们知道某个⼥孩是⼀个美⼥,可能很多⼈更关⼼该给她的脸蛋、⾝材等各打多少分,常⽤的求因⼦得分的⽅法有加权最⼩⼆乘法和回归法。
注意:因⼦载荷矩阵和得分矩阵的区别:
因⼦载荷矩阵是各个原始变量的因⼦表达式的系数,表达提取的公因⼦对原始变量的影响程度。因⼦得分矩阵表⽰各项指标变量与提取的公因⼦之间的关系,在某⼀公因⼦上得分⾼,表明该指标与该公因⼦之间关系越密切。简单说,通过因⼦载荷矩阵可以得到原始指标变量的线性组合,如X1=a11*F1+a12*F2+a13*F3,其中X1为指标变量1,a11、a12、a13分别为与变量X1在同⼀⾏的因⼦载荷,F1、F2、F3分别为提取的公因⼦;通过因⼦得分矩阵可以得到公因⼦的线性组合,如F1=a11*X1+a21*X2+a31*X3,字母代表的意义同上。
1.5 因⼦分析中的Heywood(海伍德)现象
如果x的各个分量都已经标准化了,则其⽅差=1。即共性⽅差与特殊⽅差的和为1。也就是说共性⽅差与特殊⽅差均⼤于0,并且⼩于1。但在实际进⾏参数估计的时候,共性⽅差的估计可能会等于或超过1,如果等于1,就称之为海伍德现象,如果超过1,称之为超海伍德线性。超海伍德现象意味着某些特殊因⼦的⽅差为负,表明肯定存在问题。造成这种现象的可能原因包括:
共性⽅差本⾝估计的问题;
太多的共性因⼦,出现了过拟合;
太少的共性因⼦,造成拟合不⾜;
数据太少,不能提供稳定的估计;
因⼦模型不适合这些数据。
当出现海伍德现象或超海伍德现象时,应对估计结果保持谨慎态度。可以尝试增加数据量,或改变公共因⼦数⽬,让公共因⼦数⽬在⼀个允许的范围内变动,观察估计结果是否有改观;还可以尝试⽤其他多元统计⽅法进⾏分析,⽐如主成分析。
2. 因⼦分析的MATLAB函数
MATLAB提供了factoran函数来进⾏因⼦分析。
factoran函数⽤来根据原始样本观测数据、样本协⽅差矩阵和样本相关系数矩阵,计算因⼦模型总的因⼦载荷矩阵A的最⼤似然估计,求特殊⽅差的估计、因⼦旋转矩阵和因⼦得分,还能对因⼦模型进⾏检验。factoran函数的调⽤格式如下:
<1>lambda=factoran(X,m)
海尔t628拆机
返回包含m个公共因⼦模型的载荷矩阵lambda。输出参数X是n⾏d列的矩阵,每⾏对应⼀个观测,每列对应⼀个变量。m是⼀个正整数,表⽰模型中公共因⼦的个数。输出参数lambda是⼀个d⾏m列的矩阵,第i⾏第j列元素表⽰第i个变量在第j个公共因⼦上的载荷。
<2>[lambda,psi]=factoran(X,m)
返回特殊⽅差的最⼤似然估计psi,psi是包含d个元素的列向量,分别对应d个特殊⽅差的最⼤似然估计。
<3>[lambda,psi,T]=factoran(X,m)
玉龙铜矿返回m⾏m列的旋转矩阵T
<4>[lambda,psi,T,stats]=factoran(X,m)
返回⼀个包含模型检验信息的结构体变量stats,模型检验的原假设是H0:因⼦数=m。输出参数stats包括4个字段,其中stats.loglike表⽰对数似然的最⼤值,stats.def表⽰误差⾃由度,stats,chisq表⽰近似卡⽅检验统计量,stats.p表⽰检验的p值。对于给定的显著性⽔平a,若检验的p值⼤于显著性⽔平a,则接受原假设H0,说明⽤含有m个公共因⼦的模型拟合原始数据是合适的,否则,拒绝原假设,说明拟合是不合适的。
<5>[lambda,psi,stats,F]=factoran(X,m)
返回因⼦得分矩阵F。F是⼀个n⾏m列的矩阵,每⼀⾏对应⼀个观测的m个公共因⼦的得分。如果X是⼀个协⽅差矩阵或相关系数矩阵,则factoran函数不能及时因⼦得分。factoran函数⽤相同的旋转矩阵计算载荷阵lambda和因⼦得分F。关键词 摘要
<6> […….]=factoran(…..,param1,val1,param2,val2,…….)
允许⽤户指定可选的成对出现的参数名和参数值,⽤来控制模型的拟合和输出,可⽤的参数名与参数值如下:
参数名参数值说明
‘xtype’
指定输出参数X的类型
‘data’原始数据(默认情况)
‘covariance’正定的协⽅差矩阵或相关系数矩阵
‘scores’
预测因⼦得分⽅法。若X不是原始数据,‘score’将被忽略‘wls’‘Bartlett’加权最⼩⼆乘估计(默认情况)‘regression’‘Thomson’最⼩均⽅误差法,相当于岭回归
‘start’
最⼤似然估计中特殊⽅差psi的最初值
‘random’选取d个在[0 1]区间上服从均匀分布的随机数
‘Rsquared’
⽤⼀个尺度因⼦乘以diag(inv(corrcoef(X)))作为初始点(默认情
赫尔辛基宣言况)
正整数指定最⼤似然法拟合的次数
矩阵⽤矩阵指定最⼤似然法的初始点
‘rotate’
指定因⼦载荷矩阵和因⼦得分矩阵的旋转⽅法
‘none’不进⾏旋转
‘equamax’Orthomax旋转的特殊情况
‘orthomax’最⼤⽅差旋转法
‘parsimax’Orthomax旋转的⼀个特殊情况(默认)‘pattern’执⾏斜交旋转(默认)或正交旋转
‘procrustes’执⾏斜交旋转(默认)或正交旋转
‘promax’执⾏⼀次斜交procrustes旋转
‘quartimax’Orthomax旋转的⼀个特殊情况Varimax Orthomax旋转的以特殊情况
函数句柄⽤户⾃定义的旋转函数的句柄
‘coeff’⼀个介于0-1之间的数不同的值对应不同的orthomax旋转
‘on’或1若为‘on’或1,(默认),单位化
‘normalize’‘off’或0‘off’或0,不进⾏单位化‘reltol’正标量指定‘orthomax’或‘varimax’的收敛容限‘maxit’正整数指定‘orthomax’或‘varimax’的最⼤迭代次数,默认250‘target’矩阵指定‘orthomax’旋转所必须的⽬标因⼦载荷阵‘type’
‘oblique’或
‘orthogonal’
指定‘procrustes’旋转的类型,默认‘oblique’
‘power’
资本运营⼤于或等于1的变量指定‘promax’旋转中⽣成⽬标矩阵的幂指数,默认值是4‘userargs’⾃定义旋转的额外参数⼀个标记开始位置的参数
‘nobs’正整数指定实际观测的个数
‘delta’[0,1)内的标量设定最⼤似然估计中特殊⽅差 psi 的下界,默认0.005
‘qptimopts’由命令statset(‘factoran’)⽣成的结构体变
指定⽤来计算最⼤似然估计的迭代算法的控制参数
3.基于样本观测值矩阵的因⼦分析
下表列出了奥运会上55个国家和地区男⼦径赛的成绩数据。
%读取数据
[X,textdata] = xlsread(‘径赛成绩.xls’);%读取数据
X = X(:,3:end); %提取X的第3⾄最后⼀列,即要分析的数据
varname = textdata(4,3:end);%提取textdata的第4⾏,第3⾄最后⼀列,即变量名
obsname = textdata(5:end,2);%提取textdata的第2列,第5⾏⾄最后⼀⾏,即国家名或地区名
(1)4个公共因⼦
%调⽤factoran函数根据原始观测数据作因⼦分析
% 从原始数据)出发,进⾏因⼦分析,公共因⼦数为4
% 进⾏因⼦旋转(最⼤⽅差旋转法)
[lambda,psi,T,stats] = factoran(X,4)
%计算贡献率,因⼦载荷矩阵的列元素的平⽅和除以维数
Contribut = 100*sum(lambda.^2)/8
CumCont = cumsum(Contribut) %计算累积贡献率

本文发布于:2024-09-22 12:45:46,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/583606.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   旋转   变量   估计   载荷   默认   指定   参数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议