SAS主成分分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAS主成分分析
分类:数据之美2013-07-28 20:18 2343人阅读评论(0) 收藏举报
目录(?)[-]
1. 主成分分析流程
2. SAS主成分分析示例
3. SAS主成分分析输出结果详解
4. 特征值和特征向量隐藏的秘密
5. 总结
6. 参考文献
同事讲主成分分析,举了这么个例子:就像你选女人,有身材、相貌两个指标,如果身材、相貌都很突出,那当然很好选择;但如果两个女人,一个身材突出,一个相貌出众,看着都很喜欢,那可如何是好!这个时候通过主成分分析,汇总出一个指标,这个指标可以一定程度上代替原来的身材、相貌,这时就可以排序做出选择了。
这例子当然有很多缺陷,但至少指出了主成分分析的目的之一:减少决策变量数,也就是降维。主成分分析的另一个目的是防范多重共线性。实际问题往往涉及很多变量,但某些变量之间会有一定的相关性,我们希望构造较少的几个互不相关的新指标来代替原始变量,去除多重共线性,减少所需分析的变量,同时尽可能减少这一过程的信息损失。主成分分析正是基于这样的目的而产生的有效方法。主成分分析流程
主成分分析包含以下流程:
1、原始数据标准化。
2、计算标准化变量间的相关系数矩阵。
3、计算相关系数矩阵的特征值和特征向量。
4、计算主成分变量值。
5、统计结果分析,提取所需的主成分。
SAS主成分分析示例
我们从实战入手,先来个简单的例子,完整体验使用SAS进行主成分分析的过程。准备好图1所示的数据集,该数据集包含5个变量和22个观测。其中变量num 用于标识每条观测。
图1
可以直接复制下面的程序完成输入:
data?Practice.PCA_Demo;
???????????input?num var1 var2 var3 var4;
???????????cards;
??????????1????????21??????10.7???99.7???9.5
??????????2????????9.5?????17.9???139.6??18.7
??????????3????????21.2???8.4?????90??????6.8
??????????4????????12??????22.7???42.5???24.1
??????????5????????6.8?????21.2???55.2???22.4
??????????6????????8.2?????22.4???55.6???22.6
??????????7????????3.6?????29.2???68.3???26.7
??????????8????????19.5???15.2???18.8???17.4
??????????9????????24.8???5.4?????43.7???2.9
??????????10??????8.4?????18.6???146.2??19.7
??????????11??????28.9???4.4?????4.9?????1.1
??????????12??????19.5???15.1???10.2???18.5
??????????13??????28.3???4.7?????13.3???1.8
??????????14??????24.7???12.1???116.8??12.6
??????????15??????12.8???23.6???90??????23.7
??????????16??????23.1???6.8?????100.1??3.7
??????????17??????15.1???13.7???100.9??14.2
??????????18??????2.9?????6.2?????80.7???2.7
??????????19??????18.4???11.8???99.3???13.8
??????????20??????22.9???12.3???47.6???13.3
??????????21??????5.8?????29.4???83.5???27.6
??????????22??????18.8???8.6?????61.1???8.9
;
run?;
我们的目的是,化简var1-var4四个变量,找出可以替代这四个变量的若干个彼此独立的新变量,也就是找出主成分。主成分分析代码如下:
proc?princomp
???????????data?= Practice.PCA_Demo
???????????out?= Work.PCA_Demo_out
???????????prefix?= comp
???????????outstat?= Work.PCA_Demo_stat
??????????;
???????????var?var1 var2 var3 var4;
run?;
这段代码翻译过来的意思是:对源数据Practice.PCA_Demo的四个变量var1、var2、var3和var4(以下简称原始变量)做主成分分析,输出结果(包含源数据的所有变量及新增的主成分变量)放在Work.PCA_Demo_out数据集,主成分变量名的前缀使用comp。相关变量的统计结果(均值、方差、特征值、特征向量等)输出到Work.PCA_Demo_stat。
程序运行后,输出界面显示如图2。
图2
输出结果Work.PCA_Demo_out存放了原始数据集的所有变量以及新变量comp1、comp2、comp3和comp4,分别代表第1至第4主成分,它们对原始变量的解释力度依次减少。
图3
一同输出的还有统计结果Work.PCA_Demo_stat:
图4
现在,我先假设你是个急性子,你可能会对我说:“不必告诉我这些输出结果的含义,我给了你四个变量,你只要返回给我较少的可用的字段就可以了。”那么我会回答你,新的变量comp1和comp2就可以替代原来的四个变量var1、var2、var3和var4,因为这两个变量合起来解释了原来四个变量91.27%的信息,能够满足要求。
何以见得?请看图2的第4部分输出Eigenvalues of the Correlation Matrix,第四列Cumulative显示,第一个特征值分量占比0.6749(67.49%),第1、2个特征值合起来占比91.27%>85%,因此新变量comp1和comp2已经足以替代原有四个变量,它们是源数据集的主成分。