基于主成分分析方法比较SAS和R软件

(整期优先)网络出版时间:2023-07-26
/ 2

基于主成分分析方法比较SAS和R软件

吉健维

贵州大学 贵州省大数据产业发展应用研究院  贵州贵阳  550025

摘要:如今有很多分析数据的软件,SAS,SPSS,Python,R,Origin等等,都是为了更加简单的处理、分析数据。我们在实验教学中主要用SAS和R。为了能够让学生加深对多种统计学方法的理解和应用,也为了让学生了解这两种软件,我们对教学中提到的每一种统计方法,都用这两种软件进行操作,对比其优缺点。本文中我们主要用到的统计学方法是主成分分析。

关键词:SAS,R,主成分分析,Piped Water(自来水),Natural(天然水),饮水

1实验部分

1.1实验目的

本实验要求学生可以掌握SAS和R软件的操作,并在实践的过程中加深对主成成分分析(Principal Component Analysis,以下简称PCA)的理解和应用,实现两种软件优缺点比较,提高数据处理的效率,锻炼学生的软件实操能力。

1.2实验软件

我们用的是2016年SAS 9.4 Rev. 940_15w20版本和2017年R语言3.4.0版本。

2软件操作及实验数据处理

2.1数据来源及简介

此次实践操作,我们使用的是2014年肯尼亚人口健康调查(KDHS 2014)的数据,该数据是肯尼亚统计局和政府在2014年收集,涵盖了1989、1993、1998、2003、2008的数据。此次人口普查的目的是为了更好地了解居民的生活现状,健康水平。

2.2数据选取

目标:了解肯尼亚地区的饮用水情况,检查不同地区对水的处理方式,保障居民饮水安全。

我们选择了数据中与“水处理方式”相关的9个变量。

表1:原始数据

变量

名称

HV201                         

Source of drinking water

HV204

Time to get to water source (minutes)

HV237A   

Water usually treated by: boil 

HV237B

Water usually treated by: add bleach/chlorine   

HV237C

Water usually treated by: strain through a cloth 

HV237D

Water usually treated by: use water filter      

HV237E 

Water usually treated by: solar disinfection    

HV237F 

Water usually treated by: let it stand and settle 

HV237G  

Water usually treated by: cover the water container

2.3SAS和R的比较标准及数据处理结果

2.3.1比较标准的选取

为了能够更加直观的让学生了解这两种软件,我们总结三点比较标准:

数据导入以及数据整理(改变变量性质、重新编译观测值、删除缺失值等)

重要结果展示(简单统计量、相关系数矩阵、特征值、特征向量)

图片展示(碎石图、载荷图)

2.3.2数据整理

在正式对数据分析之前,我们首先要观察变量在原始数据中的类型,结合变量的实际性质以及统计方法对数据的要求,我们对变量类型做出修改。

根据PCA的特点,我们这里需要定量变量。表1中选取的变量除了HV204,其它全部为定性变量,我们要把后者转换成定量变量,同时重组他们的观测值。另外为了能够让数据更好处理,我们在进行PCA分析之前,要删除所有的缺失值。经过所有前期处理,我们一共有13个新的定量变量。

2.3.3 SAS和R比较

在2.3.1中,我们选取了三种SAS和R的比较标准,现在我们通过展示他们各自的语言,观察二者的区别。

2.3.3.1 数据导入以及数据整理

SAS

R

导入数据

原始数据(Kehr70fl)是SAS的格式,所以我们可以直接用set语句读取,并且在导入的过程中用keep选取我们需要的变量以及数据。

原始数据格式不适合R,我们要用到程序包“Foreign”导入数据。然后用(原始数据$变量名)选取我们需要的变量。

改变变量的性质

在SAS里面,我们根据PCA对变量的要求,改变变量的属性。在这里我们需要用put语句把所有的定性变量改变成定量变量。

R语言中不需要改变变量性质。

重新编译观测值

SAS在这里的方法比R简单。我们这里用“proc format”重组观测值。

R需要编写程序把观测值重新组合,用时比SAS多。

删除缺失值

在SAS里,我们必须在改变变量属性之前删除缺失值 “.”。

R可以在任意步骤删除缺失值“NA”。

建立新的数据表

SAS介绍的比较简单,用set语句把所有的表汇总在一起

R在这里也是比较清晰、简单的,我们用“cbind”把所有数据汇在一起。用“data.frame”把所有变量以矩阵的形式显示出来。

PCA方法

SAS在运行PCA之前,先调用宏“Option mautosource”。

对于R而言,先导入程序包“FactoMiner”。

SAS运行“%pca”语句。

R运行“pca”语句,可以选择在显示分析结果的时候,显示图片。

2.3.3.2 重要结果展示

在这里主要展示相关系数矩阵和特征值。

相关矩阵

图1:SAS输出:相关系数矩阵

从相关矩阵可以看出,相关性较强的变量是Piped(自来水)和Natural(天然水),呈负相关;其次是Piped(自来水)和Times(时间),二者呈正相关。

特征值

表2:SAS和R输出:特征值和贡献率

lambda

贡献率

累积贡献率

1

3.41

0.26

0.26

2

2.37

0.18

0.44

3

1.51

0.12

0.56

4

1.17

0.09

0.65

5

0.97

0.07

0.72

6

0.93

0.07

0.80

7

0.84

0.06

0.86

这里给出了相关系数矩阵的特征值、各主成分对方差的贡献率以及累积的贡献率。相关系数矩阵的特征值即各主成分的方差。从表2可以看出,第一主成分对方差的贡献率为26%,第二主成分对方差的贡献率为18%,第三主成分为12%,第四个为9%,第五个和第六个为7%。第七个为6%。前七个主成分的累积贡献率为86%>85%,因此,我们可以用前七个主成分概括这组数据。我们这里只给出了前7个特征值。

2.3.3.3 图片展示

在这里主要展示碎石图和载荷图。

碎石图

图2:SAS:碎石图

我们这里只呈现了SAS的碎石图,但无论是SAS还是R,从图上看,拐点并不明显。所以在这里寻找主成分,我们还是要结合表2:特征值。

PCA载荷图

图3:R载荷图

R的载荷图相对SAS清晰一些。我们从图中可以看出,Natural(天然水)具有较大的正载荷,Times(取水时间)和Piped(自来水)具有较大的负载荷。说明了居民用水系统不完善。Cover(覆盖水)和Stand(积水)在第二主成分上有较大的正载荷。

3实验结论

数据导入以及数据整理

SAS

R

导入数据

原始数据是SAS的格式,所以SAS数据导入时,快速一些。

在R中,需要导入程序包才可以继续操作。

改变变量性质、删除缺失值

SAS花费的工作量比较大。

R中不需要改变变量性质,并且在任意一步都可以删除缺失值。

重新编辑观测值

SAS重新编辑观测值,思路想法非常简单。

R这一部分用时较多,需要重新编写程序以实现重组。

重要结果展示

SAS

R

主要结果

SAS运行PCA程序之后,并不会显示出大概的信息。

在R中,运行PCA之后,我们便可以知道大概的分析结果。

简单统计量

SAS和R显示的标准差大体一致。

R不显示平均值,标准差小数点后的分位数比SAS多。

相关系数矩阵

SAS显示了相关系数矩阵。(图1)

R不显示相关系数矩阵。

特征值和特征向量

特征值和特征向量分别显示。对于贡献率和累积贡献率,SAS用实数的形式显示。

R只显示特征值。对于贡献率和累积贡献率,R用百分比的形式显示。(表2)

图表展示

SAS

R

碎石图

SAS以线性的方式显示。(图2)

R以柱状图的形式显示。

PCA图

SAS默认的图片不是特别清晰。

R默认的图片比SAS清晰。我们也可以另外运行“Explor”增加图片的可见度。(图3)

4结语

无论是SAS还是R,他们都有各自的优缺点。可以根据编译数据的需要来选择对应的软件分析数据。例如,想要把定性变量转变成定量变量或是相反,可以选择SAS比较简单。一般来说,原始数据符合哪种软件,我们就默认用哪种软件处理,速度快,而且方便。如果侧重点在载荷图或是得分图,可以选择R。两种软件最终都能实现数据分析地效果。

5参考文献

【1】薛毅,陈立萍. R语言实用教程【M】.北京:清华大学出版社,2018

【2】金欣雪. R语言在统计学教学中的应用研究【J】. 湖北第二师范学院学报,2018,35(2):43-47

【3】朱世武. SAS编程技术教程【M】.北京:清华大学出版社,2007:74-75

【4】金丕焕,陈峰.医学统计方法【M】.上海:上海医科大学出版社,1993:41-42,62-64