贵州大学 贵州省大数据产业发展应用研究院 贵州贵阳 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