素或下三角元素即可。
②计算特征值与特征向量
首先解特征方程IR0,通常用雅可比法(Jacobi)求出特征值
fii12p,并使其按大小顺序排列,即12p0;然后分别求
p
出对应于特征值i的特征向量eii12p。这里要求ei1,即ei2j1,其j1
中eij表示向量ei的第j个分量。
③计算主成分贡献率及累计贡献率
主成分zi的贡献率为
累计贡献率为
i
p
k
k1
i12p
i
k
k1
p
k
k1
i12p
一般取累计贡献率达8595的特征值12m所对应的第一、第二,…,第m(m≤p)个主成分。
④计算主成分载荷
其计算公式为
lijpzixjieijij12p
(3)
得到各主成分的载荷以后,还可以按照(352)式进一步计算,得到各主成分的得分
fz11z12z1m
Z
z
21
z22
z
2m
z
1
z
2
z
m
2程序结构及函数作用
(4)
在软件Matlab中实现主成分分析可以采取两种方式实现:一是通过编程来实现;二是直接调用Matlab种自带程序实现。下面主要主要介绍利用Matlab的矩阵计算功能编程实现主成分分析。
21程序结构
子函数
Cwpri
tm
主函数
Cwstdm
Cwfacm
Cwscorem
22函数作用
Cwstdm用总和标准化法标准化矩阵Cwfacm计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85),输出主成分个数;计算主成分载荷Cwscorem计算各主成分得分、综合得分并排序Cwpri
tm读入数据文件;调用以上三个函数并输出结果
f3源程序
31cwstdm
cwstdm用总和标准化法标准化矩阵
fu
ctio
stdcwstdvector
cwsumsumvector1
对列求和
absizevector
矩阵大小a为行数b为列数
fori1a
forj1b
stdijvectorijcwsumj
e
d
e
d
32cwfacm
cwfacm
fu
ctio
resultcwfacvector
fpri
tf相关系数矩阵
stdCORRCOEFvector计算相关系数矩阵
fpri
tf特征向量vec及特征值val:
vecvaleigstd求特征值val及特征向量vec
ewvaldiagval
yisort
ewval
对特征根进行排序,y为排序结果,i为索引
fpri
tf特征根排序:
forz1le
gthy
ewyzyle
gthy1z
e
d
fpri
tfg
ewy
rateysumy
fpri
tf
贡献率:
ewrate
ewysum
ewy
sumrate0
ewi
forkle
gthy11
sumratesumrateratek
ewile
gthy1kik
ifsumrate085break
e
d
fe
d
记下累积贡献率大85的特征值的序号放入
ewi中
fpri
tf主成分数:g
le
gth
ewi
fpri
tf主成分载荷:
forp1le
gth
ewi
forq1le
gthy
resultqpsqrt
ewval
ewipvecq
ewip
e
d
e
d
计算载荷
dispresult
33r