品玩SAS:主成分分析——化繁为简的降维打击

2019-06-10 15:45:28 浏览数 (1)

相亲可能是大家经历过或者即将经历的一大人生阶段,要论其中门道可是林林总总,稀奇古怪也属屡见不鲜。就拿其中的征婚条件而言,“硬通货”的房、车、存款、工作、品格,“软条件”的相貌、身材、学历等五花八门,在诸多相亲对象里,若有一位俱是上佳,那直接领走便是。但若是有长有短,可就让人难以度量决断了。这时候如果我们能够将众多指标汇总,通过某种方式得出一个综合指标,用这个指标在一定程度上代替原来的各种征婚条件,这样就可以将相亲对象一一排序,择优录取了。

在现实中,很多问题往往涉及多个变量,并且某些变量之间会有一定的相关性,为了简化分析过程和提高准确性,我们希望构造几个互不相关的新指标来代替原始变量,同时尽可能减少这一过程的信息损失。主成分分析正是这样一个化繁为简的过程,其目的主要包括三个方面,一是减少决策变量数,也就是降维;二是用少数几个综合指标代表大部分信息;三是防范多重共线性,即防止变量间相关性较强使得模型估计失真。

主成分分析的步骤

(1)原始数据标准化

(2)计算标准化变量间的相关系数矩阵

(3)计算相关系数矩阵的特征值和特征向量

(4)计算主成分变量值

(5)统计结果分析,提取所需的主成分

本期“品玩SAS”以主成分分析为题,结合全国十省市2017年经济发展基本情况的八项指标,完整体验SAS主成分分析的过程。

变量说明:

x1:GDP

x2:居民消费水平

x3:固定资产投资

x4:就业人员平均工资

x5:货物周转量

x6:居民消费价格指数

x7:商品零售价格指数

x8:工业总产值

SAS程序

data PCA_liu;

input province $ x1-x8;

cards;

北京 28014.94 52912 8370.44 131700 958.42 101.9 99.2 20354

天津 18549.19 38975 11288.92 94534 2169.54 102.1 100.8 17019

河北 34016.32 15893 33406.8063036 13381.59 101.7 101.4 51900

山西 15528.42 18132 6040.54 600614185.03 101.1 101.3 17725

辽宁 23409.24 24866 6676.74 61153 12757.20 101.4 100.7 22480

上海 30632.99 53617 7246.60 129795 24998.71 101.7 100.9 37426

江苏 85869.76 3979653277.03 78267 9057.60 101.7 101.9 154899

浙江 51768.26 33851 31696.03 80750 10106.23 102.1 101.4 67081

四川 36980.22 1792031902.09 69419 2696.17 101.4 100.5 42423

山东 72634.15 28353 55202.72 68081 9719.46 101.5 100.8 142660

;

procprincomp

data=PCA_liu /*对源数据PCA_liu的八变量x1-x8(以下简称原始变量)做主成分分析*/

out=PCA_change /*输出结果(包含源数据的所有变量及新增的主成分变量)放在PCA_change数据集*/

prefix=feature /*主成分变量名的前缀使用feature*/

outstat=PCA_result;/*相关变量的统计结果(均值、方差、特征值、特征向量等)输出到PCA_result*/

var x1-x8;

run;

输出结果

图1 简单统计量

10个观测代表数据中的十个省市;8个变量代表定义的八个成分;简单统计量表示SAS对八个变量进行计算,得出其均值和STD(标准偏差)。

图二 相关系数矩阵

原始变量的相关系数矩阵,其中的系数代表8个原始变量两两之间的相关程度。相关系数即统计学独立检验中的r值,当r>0时,表示两变量正相关,当r<0时,表示两变量为负相关。当|r|=1时,表示两变量为完全线性相关即函数关系。表中x1与x3、x8的相关系数分别为0.9161、0.98,呈现出强烈的正相关;x4和x2相关系数为0.9249,也是强烈正相关。

图3 相关矩阵特征值

特征值列由大到小依次展示8个特征值,特征值越大表示对应的主成分变量包含的信息越多,对原始变量的解释力度越强。差分列表示相邻两行特征值之间的差值。比例列表示主成分的贡献率,计算公式为:该行特征值/全部特征值之和,例如第一行表示第一主成分的贡献率为43.14%。累积列表示前述贡献率之和,例如第三行 0.8794=0.4314 0.2953 0.1483。

图4 特征向量

特征向量的每一列表示该主成分受原始变量的影响程度,系数绝对值越大表明原始变量对主成分的影响程度越强。例如第一主成分中x1、x3、x8的系数最大,表明可以将第一主成分看成有GDP(x1)、固定资产投资(x3)、工业总产值(x8)组成的反映经济发展规模的综合指标;第二主成分中居民消费水平(x2)、就业人员平均工资(x4)、居民消费价格指数(x6)的系数最大,可以把第二主成分看做反映人民生活水平的综合指标;第三主成分中存货周转量(x5)的系数最大,可以把第三主成分看做单独的货物周转指标。下面探究主成分变量间的独立性。

proccorr /*计算变量间相关系数*/

data=PCA_change

out=PCA_corr;

var feature1-feature8;

with feature1-feature8;

run;

图5 主成分变量相关系数

从相关系数表可以看出,主成分变量间相关系数为零,表明主成分变量之间无线性相关关系。

依据主成分分析的目的:将多个指标转换为少数几个相互独立的且包含原来指标大部分信息(一般是80%或85%)的综合指标。得出累积贡献率达到85%的主成分变量,在本例中前三个主成分贡献率之和为87.49%,满足前述三个目的:减少决策变量数、保留大部分信息、相互独立。下面探究十省市在主成分上的表现情况。

procplot data=PCA_change vpct=60; /*vpct指定图所占页面的长度*/

plot feature1*feature2='#'$ province/ /* '#'表明图中的省市用#表示*/

haxis=-3.5 to 3by 0.5 HREF=-2,0,2 /*HREF代表垂直于水平轴-2,0,2处画参考线*/

vaxis=-3 to 4by 1VREF=-2,0,2;

title'主成分散点图';

run;

图6 主成分散点图

从上图可以看出,江苏、山东的第一主成分值最高,表明两地在十省市中经济发展规模最大,其次是河北、浙江、四川,这里要注意,北京、上海、天津的第一主成分较低主要是因为其作为单个城市在GDP(x1)、固定资产投资(x3)、工业总产值(x8)上低于其他省份,而如前文所述第一出成分受x1、x3、x8的影响程度最强。在第二主成分上,江苏、上海、北京、浙江、山东和天津分值较高,人民生活水平较高,收入与消费支出能力强;河北、四川、辽宁和山西四省份,居民收入与消费能力较弱。

感谢《主成分分析——化繁为简的降维打击》原文作者刘璐提供优秀文章,我们会将更多投稿文章定期分享给大家,再次感谢投稿作者的支持!

机器思维公众号已面向公众开放投稿,优秀文稿我们会第一时间分享给大家,欢迎各位参与投稿!

投稿邮箱:aijqsw@163.com

0 人点赞