当前位置:首页 > Matlab统计工具箱1
在研究某个问题时涉及到p(p?1)个变量(指标)X1,X2,?,Xp(记为列向量X,且有均值向量E(X)?μ?(?j)和方差协方差矩阵var(X)?Σ?(?ij))。通常p较大且这些指标之间存在一定程度的相关性。因此我们考虑用以下线性变换将这p个变量转换成新的p个两两不相关的变量F1,F2,?,Fp:
?F1?a11X1?a12X2?...?a1pXp,?F?aX?aX?...?aX,?22112222pp ?......???Fp?ap1X1?ap2X2?...?appXp.记ai'?(ai1,ai2,?,aip),且限定ai'?ai?1(1?i?p),则上述的线性变换中的变换矩阵A的转置A'?(a1,a2,?,ap)。由于这组新的变量F1,F2,?,Fp中任意两个不相关,即对任意i,j(1?i,j?p)有cov(Fi,Fj)?ai'?aj?0。而且变量F1,F2,?,Fp中每一个变量的方差依次是余下所有变量中最大的,因此有
方差越大,包含的信息就越多。我们称F1,F2,?,Fpvar(F1)?var(F2)???var(Fp)。
为X1,X2,?,Xp的第1,2,?,p主成分。理论上可以证明第i(1?i?p)个主成分对应于X的方差协方差矩阵Σ的第i个特征值?i,与特征值?i相应的标准化特征向量记为ai(1?i?p)。且有Σ的特征根是主成分的方差,即var(Fi)??i (1?i?p),这里有?1??2????p。因此主成分F1,F2,?,Fp的方差协方差矩阵为对角矩阵diag(?1,?2,?,?p)。 格式
9
[COEFF,SCORE] = princomp(X)
[COEFF,SCORE,latent] = princomp(X)
[COEFF,SCORE,latent,tsquare] = princomp(X) [...] = princomp(X,'econ') 实例
Compute principal components for the ingredients data in the Hald data set, and the variance accounted for by each component. load hald;
[pc,score,latent,tsquare] = princomp(ingredients); pc,latent pc =
0.0678 -0.6460 0.5673 -0.5062 0.6785 -0.0200 -0.5440 -0.4933 -0.0290 0.7553 0.4036 -0.5156 -0.7309 -0.1085 -0.4684 -0.4844 latent = 517.7969 67.4964 12.4054 0.2372
The following command and plot show that two components account for 98% of the variance:
cumsum(latent)./sum(latent) ans =
0.86597 0.97886 0.9996 10
1
biplot(pc(:,1:2),'Scores',score(:,1:2),'VarLabels',...
因子分析 Factor Analysis factoran 模型假设
类似于在主成分分析中的情形,在研究某个问题时涉及到p(p?1)个容易观测的变量X1,X2,?,Xp(记为列向量X)。其均值向量E(X)?μ?(?j)1?j?p,方差协方差矩阵var(X)???(?ij)1?i,j?p)。我们假定存在m(m?p)个潜在相互独立的的公共因子(变量)F1,F2,?,Fm(记为列向量F)和p个相互独立的特殊因子变量?1,?2,?,?p(记为列向量ε)满足以下的模型:
?X1??1?a11F1?a12F2???a1mFm??1,?X???aF?aF???aF??,?222112222mm2 ??????Xp??p?ap1F1?ap2F2???apmFm??p,22其中E(F)?E(ε)?0,var(F)?Im,var(ε)?diag(?12,?2,?,?p)记为D。F,ε相互
{'X1' 'X2' 'X3' 'X4'})
Factor analysis
独立。模型用矩阵向量形式可表示为
X?μ?AF?ε
其中
11
?a11?a21?A?????a?p1a12a22?ap2?a1m???a2m?
?????apm??被称为因子载荷矩阵。 格式
lambda = factoran(X,m)
[lambda,psi] = factoran(X,m) [lambda,psi,T] = factoran(X,m)
[lambda,psi,T,stats] = factoran(X,m) [lambda,psi,T,stats,F] = factoran(X,m)
[...] = factoran(...,param1,val1,param2,val2,...) 实例1
导入carbig数据, 用两因子拟合默认的模型. load carbig
X = [Acceleration Displacement Horsepower MPG Weight]; X = X(all(~isnan(X),2),:);
[Lambda,Psi,T,stats,F] = factoran(X,2,...
'scores','regression'); inv(T'*T) % Estimated correlation matrix of F, == eye(2) Lambda*Lambda'+diag(Psi) % Estimated correlation matrix Lambda*inv(T) % Unrotate the loadings F*T' % Unrotate the factor scores
biplot(Lambda,... % Create biplot of two factors 'LineWidth',2,... 12
共分享92篇相关文档