分享

主成分分析与因子分析(三):使用SAS实现主成分分析 - FACTOR过程

 浓tang 2020-07-18

上一系列文章介绍了使用PRINCOMP过程进行主成分分析。今天,我们将介绍使用FACTOR过程进行主成分分析。

FACTOR 过程

除了PROC PRINCOMP外,还可以使用PROC FACTOR来进行主成分分析。事实上,在进行标准化后,二者的结果是一样的。为了比较二者的结果,首先介绍如何对数据进行标准化。SAS对数据的标准化是通过PROC STDIZE实现的,PROC STDIZE的一般形式如下: 

其中:

  • 选项METHOD=指定用于标准化的方法,常见的标准化方法有MEAN、SUM、EUCLEN和STD。

  • VAR语句指定数据集中用来进行主成分分析的变量,变量类型必须为数值型。若该语句缺失,那么PROC FACTOR将分析数据集中的所有数值型变量。

标准化的计算方法如下:


这里LOCATION和SCALE的值与标准化方法有关。表12.3列举了一些常见的标准化方法的LOCATION和SCALE值。有关其他方法具体参数值建议读者参考SAS官方帮助文档。

表12.3 常见标准化方法中的LOCATION值与SCALE值

这里仅简单介绍PROC FACTOR中与主成分分析相关部分的选项,在后面使用PROC FACTOR进行因子分析时,会对其他选项进行介绍。PROC FACTOR的语法如下:

其中:

  • 常见的选项有:“DATA=”用于指定输入数据集,“SIMPLE”输出常见的统计量,“CORR”输出原始变量的相关矩阵。

  • VAR语句指定数据集中用于分析的变量。

例12.2: 使用PROC FACTOR对数据集sashelp.cars进行主成分分析。

示例代码如下:

输出结果中基本统计量与相关矩阵的部分如图12.8所示。

图12.8 使用PROC FACTOR进行主成分分析过程中输出基本统计量与相关矩阵

同时,PROC FACTOR还输出了相关矩阵的特征值与解释的变异比例,这部分内容也和PROC PRINCOMP一致(如图12.9所示)。由该表可以判定主成分个数为1或者2。

图12.9  相关矩阵特征值以及解释变异的比例

除此之外,PROC FACTOR还输出了公共因子信息,这是PROC PRINCOMP所没有的。但是,二者在本质上是一样的。为了便于比较,这里将因子(这里可以理解为主成分)个数定为2个,代码修改如下:

这里的关键字“N=2”限定了输出因子的个数为2。输出结果与修改前大致一致,只是有关因子方面的信息发生了变化。具体如图12.10所示。

图12.10 指定公共因子的信息

如果将上述结果的Factor1与Factor2分别看成第一主成分与第二主成分,那么因子模式图提供了主成分由原始变量线性组合的信息。例如,第一主成分为

至此,我们利用PROC FACTOR完成了对原始数据的主成分分析:找出了主成分的个数为2个,并且知道了如何通过原始变量的线性组合得到主成分。

虽然通过过程步PROC FACTOR和PROC PRINCOMP得到的主成分个数一样,解释的方差也一致,但是主成分的构成不一样。回顾例12.1,在该例中,第一主成分为:

导致二者差异的主要原因是PROC FACTOR会假设所有的因子或主成分的方差为1,而PROC PRINCOMP则假设所有主成分的方差为特征值。如果要两者要得到一样的结果,只需要对PROC FACTOR输出的得分矩阵进行标准化,然后对标准化后的得分矩阵进行缩放即可,缩放的比例为,这里N为变量个数。这一标准化过程以及缩放可以通过PROC STDIZE来实现。例如,在本例中,缩放的比例为=0.44721,代码如下:

数据集work.eigenvectors的输出结果如图12.11所示。

图12.11 标准化后的得分矩阵

该结果和例12.1中的结果一致。

综上所述,利用PROC FACTOR和PROC PRINCOMP进行主成分分析从本质上讲是一样的。

与PRINCOMP过程的比较

过程步PROC FACTOR不仅可以进行主成分分析,还可以用来做因子分析,其默认方法是主成分分析。使用PROC FACTOR与PROC PRINCOMP进行主成分分析时,除了因子得分系数矩阵有区别外,二者的输出结果几乎一致。至于因子得分系数矩阵的区别,具体来说指的是:在PROC FACTOR中,主成分在各个变量上的得分系数的方差是标准单位1,而在PROC PRINCOMP中,主成分在各个变量上的得分系数的方差是其对应的特征值(后面文章会具体介绍)。二者均支持通过ODS图形选项输出图形。

同PROC FACTOR相比,PROC PRINCOMP具有以下优点:

  • 当预期的主成分个数较少的时候,使用PROC PRINCOMP需要运行的时间较少。

  • 在内存一定的情况下,PROC PRINCOMP能处理的问题规模更大一些。

  • PROC PRINCOMP对偏协方差矩阵或偏相关矩阵进行分析时会输出相应的得分。

  • 从使用角度来说,PROC PRINCOMP更简单容易掌握。

同PROC PRINCOMP相比,PROC FACTOR具有以下优点:

  • 从输出结果看,PROC FACTOR输出内容更丰富。

  • PROC FACTOR可以用来做因子旋转。

作者:夏坤庄、徐唯、潘红莲、林建伟

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多