主成分分析法总结.docx

上传人:b****5 文档编号:6756322 上传时间:2023-01-10 格式:DOCX 页数:25 大小:1.20MB
下载 相关 举报
主成分分析法总结.docx_第1页
第1页 / 共25页
主成分分析法总结.docx_第2页
第2页 / 共25页
主成分分析法总结.docx_第3页
第3页 / 共25页
主成分分析法总结.docx_第4页
第4页 / 共25页
主成分分析法总结.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

主成分分析法总结.docx

《主成分分析法总结.docx》由会员分享,可在线阅读,更多相关《主成分分析法总结.docx(25页珍藏版)》请在冰豆网上搜索。

主成分分析法总结.docx

主成分分析法总结

主成分分析法总结

在实际问题研究中,多变量问题是经常会遇到的。

变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。

因此,人们会很自然地想到,能否在相关分析的基础上,用较少的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地保留原来变量所反映的信息?

一、概述

在处理信息时,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠,例如,高校科研状况评价中的立项课题数与项目经费、经费支出等之间会存在较高的相关性;学生综合评价研究中的专业基础课成绩与专业课成绩、获奖学金次数等之间也会存在较高的相关性。

而变量之间信息的高度重叠和高度相关会给统计方法的应用带来许多障碍。

为了解决这些问题,最简单和最直接的解决方案是削减变量的个数,但这必然又会导致信息丢失和信息不完整等问题的产生。

为此,人们希望探索一种更为有效的解决方法,它既能大大减少参与数据建模的变量个数,同时也不会造成信息的大量丢失。

主成分分析正式这样一种能够有效降低变量维数,并已得到广泛应用的分析方法。

主成分分析以最少的信息丢失为前提,将众多的原有变量综合成较少几个综合指标,通常综合指标(主成分)有以下几个特点:

主成分个数远远少于原有变量的个数

原有变量综合成少数几个因子之后,因子将可以替代原有变量参与数据建模,这将大大减少分析过程中的计算工作量。

主成分能够反映原有变量的绝大部分信息

因子并不是原有变量的简单取舍,而是原有变量重组后的结果,因此不会造成原有变量信息的大量丢失,并能够代表原有变量的绝大部分信息。

主成分之间应该互不相关

通过主成分分析得出的新的综合指标(主成分)之间互不相关,因子参与数据建模能够有效地解决变量信息重叠、多重共线性等给分析应用带来的诸多问题。

主成分具有命名解释性

总之,主成分分析法是研究如何以最少的信息丢失将众多原有变量浓缩成少数几个因子,如何使因子具有一定的命名解释性的多元统计分析方法。

主成分分析的具体步骤如下:

(1)计算协方差矩阵

计算样品数据的协方差矩阵:

Σ=(sij)p´p,其中

i,j=1,2,…,p

(2)求出Σ的特征值

及相应的正交化单位特征向量

Σ的前m个较大的特征值l1³l2³…lm>0,就是前m个主成分对应的方差,

对应的单位特征向量

就是主成分Fi的关于原变量的系数,则原变量的第i个主成分Fi为:

Fi=

X

主成分的方差(信息)贡献率用来反映信息量的大小,

为:

(3)选择主成分

最终要选择几个主成分,即F1,F2,……,Fm中m的确定是通过方差(信息)累计贡献率G(m)来确定

当累积贡献率大于85%时,就认为能足够反映原来变量的信息了,对应的m就是抽取的前m个主成分。

(4)计算主成分载荷

主成分载荷是反映主成分Fi与原变量Xj之间的相互关联程度,原来变量Xj(j=1,2,…,p)在诸主成分Fi(i=1,2,…,m)上的荷载lij(i=1,2,…,m;j=1,2,…,p)。

在SPSS软件中主成分分析后的分析结果中,“成分矩阵”反应的就是主成分载荷矩阵。

(5)计算主成分得分

计算样品在m个主成分上的得分:

i=1,2,…,m

实际应用时,指标的量纲往往不同,所以在主成分计算之前应先消除量纲的影响。

消除数据的量纲有很多方法,常用方法是将原始数据标准化,即做如下数据变换:

其中:

根据数学公式知道,①任何随机变量对其作标准化变换后,其协方差与其相关系数是一回事,即标准化后的变量协方差矩阵就是其相关系数矩阵。

②另一方面,根据协方差的公式可以推得标准化后的协方差就是原变量的相关系数,亦即,标准化后的变量的协方差矩阵就是原变量的相关系数矩阵。

也就是说,在标准化前后变量的相关系数矩阵不变化。

根据以上论述,为消除量纲的影响,将变量标准化后再计算其协方差矩阵,就是直接计算原变量的相关系数矩阵,所以主成分分析的实际常用计算步骤是:

☆计算相关系数矩阵

☆求出相关系数矩阵的特征值

及相应的正交化单位特征向量

☆选择主成分

☆计算主成分得分

总结:

原指标相关系数矩阵相应的特征值li为主成分方差的贡献,方差的贡献率为

越大,说明相应的主成分反映综合信息的能力越强,可根据li的大小来提取主成分。

每一个主成分的组合系数(原变量在该主成分上的载荷)

就是相应特征值li所对应的单位特征向量。

主成分分析法的计算步骤

  1、原始指标数据的标准化采集p维随机向量x =(x1,X2,...,Xp)T)n个样品xi =(xi1,xi2,...,xip)T ,i=1,2,…,n,

  n>p,构造样本阵,对样本阵元进行如下标准化变换:

  

  其中

,得标准化阵Z。

  2、对标准化阵Z求相关系数矩阵

  

  其中,

 。

  3、解样本相关矩阵R的特征方程

得p个特征根,确定主成分

  按

 确定m值,使信息的利用率达85%以上,对每个λj,j=1,2,...,m,解方程组Rb =λjb得单位特征向量

 。

  4、将标准化后的指标变量转换为主成分

  

  U1称为第一主成分,U2 称为第二主成分,…,Up 称为第p主成分。

  5、对m个主成分进行综合评价

对m个主成分进行加权求和,即得最终评价值,权数为每个主成分的方差贡献率

二、主成分分析的计算步骤

1、计算相关系数矩阵

 

rij(i,j=1,2,…,p)为原变量xi与xj的相关系数,rij=rji,其计算公式为

 

2、计算特征值与特征向量

解特征方程    ,常用雅可比法(Jacobi)求出特征值,并使其按大小顺序排列;

分别求出对应于特征值的特征向量,要求=1,即

其中表示向量的第j个分量。

3、计算主成分贡献率及累计贡献率

贡献率:

累计贡献率:

一般取累计贡献率达85%-95%的特征值,所对应的第1、第2、…、第m(m≤p)个主成分。

4、计算主成分载荷

5、各主成分得分

 

三、主成分分析法在SPSS中的操作

1、指标数据选取、收集与录入(表1)

2、Analyze→DataReduction→FactorAnalysis,弹出FactorAnalysis对话框:

3、把指标数据选入Variables框,Descriptives:

CorrelationMatrix框组中选中Coefficients,然后点击Continue,返回FactorAnalysis对话框,单击OK。

注意:

SPSS在调用FactorAnalyze过程进行分析时,SPSS会自动对原始数据进行标准化处理,所以在得到计算结果后的变量都是指经过标准化处理后的变量,但SPSS并不直接给出标准化后的数据,如需要得到标准化数据,则需调用Descriptives过程进行计算。

从表3可知GDP与工业增加值,第三产业增加值、固定资产投资、基本建设投资、社会消费品零售总额、地方财政收入这几个指标存在着极其显著的关系,与海关出口总额存在着显著关系。

可见许多变量之间直接的相关性比较强,证明他们存在信息上的重叠。

主成分个数提取原则为主成分对应的特征值大于1的前m个主成分。

特征值在某种程度上可以被看成是表示主成分影响力度大小的指标,如果特征值小于1,说明该主成分的解释力度还不如直接引入一个原变量的平均解释力度大,因此一般可以用特征值大于1作为纳入标准。

通过表4(方差分解主成分提取分析)可知,提取2个主成分,即m=2,从表5(初始因子载荷矩阵)可知GDP、工业增加值、第三产业增加值、固定资产投资、基本建设投资、社会消费品零售总额、海关出口总额、地方财政收入在第一主成分上有较高载荷,说明第一主成分基本反映了这些指标的信息;人均GDP和农业增加值指标在第二主成分上有较高载荷,说明第二主成分基本反映了人均GDP和农业增加值两个指标的信息。

所以提取两个主成分是可以基本反映全部指标的信息,所以决定用两个新变量来代替原来的十个变量。

但这两个新变量的表达还不能从输出窗口中直接得到,因为“ComponentMatrix”是指初始因子载荷矩阵,每一个载荷量表示主成分与对应变量的相关系数。

用表5(主成分载荷矩阵)中的数据除以主成分相对应的特征值开平方根便得到两个主成分中每个指标所对应的系数。

将初始因子载荷矩阵中的两列数据输入(可用复制粘贴的方法)到数据编辑窗口(为变量B1、B2),然后利用“Transform→ComputeVariable”,在ComputeVariable对话框中输入“A1=B1/SQR(7.22)”[注:

第二主成分SQR后的括号中填1.235,即可得到特征向量A1(见表6)。

同理,可得到特征向量A2。

将得到的特征向量与标准化后的数据相乘,然后就可以得出主成分表达式[注:

因本例只是为了说明如何在SPSS进行主成分分析,故在此不对提取的主成分进行命名,有兴趣的读者可自行命名。

标准化:

通过Analyze→DescriptiveStatistics→Descriptives对话框来实现:

弹出Descriptives对话框后,把X1~X10选入Variables框,在Savestandardizedvaluesasvariables前的方框打上钩,点击“OK”,经标准化的数据会自动填入数据窗口中,并以Z开头命名。

以每个主成分所对应的特征值占所提取主成分总的特征值之和的比例作为权重计算主成分综合模型,即用第一主成分F1中每个指标所对应的系数乘上第一主成分F1所对应的贡献率再除以所提取两个主成分的两个贡献率之和,然后加上第二主成分F2中每个指标所对应的系数乘上第二主成分F2所对应的贡献率再除以所提取两个主成分的两个贡献率之和,即可得到综合得分模型:

根据主成分综合模型即可计算综合主成分值,并对其按综合主成分值进行排序,即可对各地区进行综合评价比较,结果见表8。

具体检验还需进一步探讨与学习

利用Matlab编程实现主成分分析

1.1主成分分析计算步骤

计算相关系数矩阵

(1)

在(3.5.3)式中,rij(i,j=1,2,…,p)为原变量的xi与xj之间的相关系数,其计算公式为

(2)

因为R是实对称矩阵(即rij=rji),所以只需计算上三角元素或下三角元素即可。

计算特征值与特征向量

首先解特征方程

,通常用雅可比法(Jacobi)求出特征值

,并使其按大小顺序排列,即

;然后分别求出对应于特征值

的特征向量

这里要求

=1,即

,其中

表示向量

的第j个分量。

计算主成分贡献率及累计贡献率

主成分

的贡献率为

累计贡献率为

一般取累计贡献率达85—95%的特征值

所对应的第一、第二,…,第m(m≤p)个主成分。

计算主成分载荷

其计算公式为

(3)

得到各主成分的载荷以后,还可以按照(3.5.2)式进一步计算,得到各主成分的得分

(4)

2.程序结构及函数作用

在软件Matlab中实现主成分分析可以采取两种方式实现:

一是通过编程来实现;二是直接调用Matlab种自带程序实现。

下面主要主要介绍利用Matlab的矩阵计算功能编程实现主成分分析。

2.1程序结构

主函数

子函数

2.2函数作用

Cwstd.m——用总和标准化法标准化矩阵

Cwfac.m——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算各特征值贡献率;挑选主成分(累计贡献率大于85%),输出主成分个数;计算主成分载荷

Cwscore.m——计算各主成分得分、综合得分并排序

Cwprint.m——读入数据文件;调用以上三个函数并输出结果

 

3.源程序

3.1cwstd.m

%cwstd.m,用总和标准化法标准化矩阵

functionstd=cwstd(vector)

cwsum=sum(vector,1);%对列求和

[a,b]=size(vector);%矩阵大小,a为行数,b为列数

fori=1:

a

forj=1:

b

std(i,j)=vector(i,j)/cwsum(j);

end

end

3.2cwfac.m

%cwfac.m

functionresult=cwfac(vector);

fprintf('相关系数矩阵:

\n')

std=CORRCOEF(vector)%计算相关系数矩阵

fprintf('特征向量(vec)及特征值(val):

\n')

[vec,val]=eig(std)%求特征值(val)及特征向量(vec)

newval=diag(val);

[y,i]=sort(newval);%对特征根进行排序,y为排序结果,i为索引

fprintf('特征根排序:

\n')

forz=1:

length(y)

newy(z)=y(length(y)+1-z);

end

fprintf('%g\n',newy)

rate=y/sum(y);

fprintf('\n贡献率:

\n')

newrate=newy/sum(newy)

sumrate=0;

newi=[];

fork=length(y):

-1:

1

sumrate=sumrate+rate(k);

newi(length(y)+1-k)=i(k);

ifsumrate>0.85break;

end

end%记下累积贡献率大85%的特征值的序号放入newi中

fprintf('主成分数:

%g\n\n',length(newi));

fprintf('主成分载荷:

\n')

forp=1:

length(newi)

forq=1:

length(y)

result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));

end

end%计算载荷

disp(result)

3.3cwscore.m

%cwscore.m,计算得分

functionscore=cwscore(vector1,vector2);

sco=vector1*vector2;

csum=sum(sco,2);

[newcsum,i]=sort(-1*csum);

[newi,j]=sort(i);

fprintf('计算得分:

\n')

score=[sco,csum,j]

%得分矩阵:

sco为各主成分得分;csum为综合得分;j为排序结果

3.4cwprint.m

%cwprint.m

functionprint=cwprint(filename,a,b);

%filename为文本文件文件名,a为矩阵行数(样本数),b为矩阵列数(变量指标数)

fid=fopen(filename,'r')

vector=fscanf(fid,'%g',[ab]);

fprintf('标准化结果如下:

\n')

v1=cwstd(vector)

result=cwfac(v1);

cwscore(v1,result);

4.程序测试

4.1原始数据

中国大陆35个大城市某年的10项社会经济统计指标数据见下表。

城市

名称

年底

总人口

(万人)

非农业

人口比(%)

农业

总产值

(万元)

工业

总产值

(万元)

客运总量

(万人)

货运总量

(万吨)

地方财政

预算内收入(万元)

城乡居民年底储蓄余额

(万元)

在岗职工人数(万人)

在岗职工工资总额

(万元)

北京

1249.90

0.5978

1843427

19999706

20323

45562

2790863

26806646

410.80

5773301

天津

910.17

0.5809

1501136

22645502

3259

26317

1128073

11301931

202.68

2254343

石家庄

875.40

0.2332

2918680

6885768

2929

1911

352348

7095875

95.60

758877

太原

299.92

0.6563

236038

2737750

1937

11895

203277

3943100

88.65

654023

呼和浩特

207.78

0.4412

365343

816452

2351

2623

105783

1396588

42.11

309337

沈阳

677.08

0.6299

1295418

5826733

7782

15412

567919

9016998

135.45

1152811

大连

545.31

0.4946

1879739

8426385

10780

19187

709227

7556796

94.15

965922

长春

691.23

0.4068

1853210

5966343

4810

9532

357096

4803744

102.63

884447

哈尔滨

927.09

0.4627

2663855

4186123

6720

7520

481443

6450020

172.79

1309151

上海

1313.12

0.7384

2069019

54529098

6406

44485

4318500

25971200

336.84

5605445

南京

537.44

0.5341

989199

13072737

14269

11193

664299

5680472

113.81

1357861

杭州

616.05

0.3556

1414737

12000796

17883

11684

449593

7425967

96.90

1180947

宁波

538.41

0.2547

1428235

10622866

22215

10298

501723

5246350

62.15

824034

合肥

429.95

0.3184

628764

2514125

4893

1517

233628

1622931

47.27

369577

福州

583.13

0.2733

2152288

6555351

8851

7190

467524

5030220

69.59

680607

厦门

128.99

0.4865

333374

5751124

3728

2570

418758

2108331

46.93

657484

南昌

424.20

0.3988

688289

2305881

3674

3189

167714

2640460

62.08

479,555

济南

557.63

0.4085

1486302

6285882

5915

11775

460690

4126970

83.31

756696

青岛

702.97

0.3693

2382320

11492036

13408

17038

658435

4978045

103.52

961704

郑州

615.36

0.3424

677425

5287601

10433

6768

387252

5135338

84.66

696848

武汉

740.20

0.5869

1211291

7506085

9793

15442

604658

5748055

149.20

1314766

长沙

582.47

0.3107

1146367

3098179

8706

5718

323660

3461244

69.57

596986

广州

685.00

0.6214

1600738

23348139

22007

23854

1761499

20401811

182.81

3047594

深圳

119.85

0.7931

299662

20368295

8754

4274

1847908

9519900

91.26

1890338

南宁

285.87

0.4064

720486

1149691

5130

3293

149700

2190918

45.09

371809

海口

54.38

0.8354

44815

717461

5345

2356

115174

1626800

19.01

198138

重庆

3072.34

0.2067

4168780

8585525

52441

25124

898,912

9090969

223.73

1606804

成都

1003.56

0.335

1935590

5894289

40140

19632

561189

7479684

132.89

1200671

贵阳

321.50

0.4557

362061

2247934

15703

4143

197908

1787748

55.28

419681

昆明

473.39

0.3865

793356

3605729

5604

12042

524216

4127900

88.11

842321

西安

674.50

0.4094

739905

3665942

10311

9766

408896

5863980

114.01

885169

兰州

287.59

0.5445

259444

2940884

1832

4749

169540

2641568

65.83

550890

西宁

133.95

0.5227

65848

711310

1746

1469

49134

855051

27.21

219251

银川

95.38

0.5709

171603

661226

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1