RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论

因子分析

来源: 作者:unkonwn 时间:2004-12-13 点击:

一、理论简介

主成份分析作 个原始变量的 个线性组合,这些线性组合在原始变量的所有 个线性组合中可以最好地预报原始变量。因子分析对主成份分析进行了推广,它用潜在的 个“因子”来概括原始变量的信息,这些因子不一定是原始变量的线性组合。

数据挖掘研究院

随机向量,其均值为 ,协方差阵为 ,我们称 个因子的模型,若 能表为

数据挖掘实验室

数据挖掘实验室

其中 是未知常数阵, 为随机向量。 称为公共因子, 叫做特殊因子,叫因子负荷矩阵。这个模型象是回归分析模型,但是这里 是多元随机变量而不是一个随机变量的样本, 也是随机变量而不是一般的回归系数。求因子分解要用到原始变量协方差阵 、特殊因子的协方差阵 的如下关系式: 数据挖掘实验室

数据挖掘实验室

公因子模型分解是不唯一的,因为如果 是一个正交阵,则有 数据挖掘研究院

数据挖掘研究院

这时 是新的因子, 是新的因子负荷阵。我们可以利用这一特点对得到的因子模型进行旋转以产生容易解释的因子。旋转时一般试图使因子载荷系数靠近正负1和0,这样容易解释因子的组成。 数据挖掘研究院

二、FACTOR过程使用

SAS/STAT的FACTOR过程可以进行因子分析、分量分析和因子旋转。对因子模型可以使用正交旋转和斜交旋转,可以用回归法计算得分系数,同时把因子得分的估计存贮在输出数据集中;用FACTOR过程计算的所有主要统计量也能存贮在输出数据集中。

数据挖掘研究院

FACTOR过程用法很简单,主要使用如下语句:

数据挖掘研究院

PROC FACTOR DATA= 数据集 选项; 数据挖掘研究院

VAR 原始变量; 数据挖掘研究院

RUN; 数据挖掘研究院

输出结果包括特征值情况、因子载荷、公因子解释比例,等等。为了计算因子得分,一般在PROC FACTOR语句中加一个SCORE选项和“OUTSTAT=输出数据集”选项,然后用如下的得分过程计算公因子得分:

		PROC SCORE DATA=原始数据集 SCORE=FACTOR过程的输出数据集 
							OUT=得分输出数据集;
			VAR  用来计算得分的原始变量集合;
		RUN;

 数据挖掘实验室 

三、例子

数据集SOCECON为洛杉基12个地区统计的五个社会经济指标:人口总数(POP),教育程度(SCHOOL),就业数(EMPLOY),服务业人数(SERVICES),中等的房价(HOUSE)。用FACTOR过程可以进行主成份分析。下例中的SIMPLE选项要求计算变量的简单统计量,CORR 要求输出相关阵。

DATA SOCECON;
   TITLE ′五个经济指标的分析′;
   INPUT POP SCHOOL EMPLOY SERVICES HOUSE;
   CARDS;
5700     12.8      2500      270       25000
1000     10.9      600       10        10000
3400     8.8       1000      10        9000
3800     13.6      1700      140       25000
4000     12.8      1600      140       25000
8200     8.3       2600      60        12000
1200     11.4      400       10        16000
9100     11.5      3300      60        14000
9900     12.5      3400      180       18000
9600     13.7      3600      390       25000
9600     9.6       3300      80        12000
9400     11.4      4000      100       13000
;
PROC FACTOR DATA=SOCECON SIMPLE CORR;
   TITLE2 ′主成份分析′;
RUN;

 

数据挖掘研究院

结果给出了五个变量的简单统计量,相关阵,和相关阵的特征值、累计贡献:

数据挖掘实验室

                           1           2           3           4           5    
    Eigenvalue        2.8733      1.7967      0.2148      0.0999      0.0153   
    Difference        1.0767      1.5818      0.1149      0.0847                

    Proportion        0.5747      0.3593      0.0430      0.0200      0.0031 
       
    Cumulative        0.5747      0.9340      0.9770      0.9969      1.0000 
       
                                                                             
       
             2 factors will be retained by the MINEIGEN criterion.           
       
 数据挖掘研究院 

前两个主成份解释了93.4%的方差,按照缺省的选择因子个数的准则MINEIGEN,取大于1的特征值,所以取两个因子。因子模式阵(factor pattern,或称因子载荷阵)为最重要的结果之一:

                                 Factor Pattern                              
                                     FACTOR1   FACTOR2                       
       
                          POP        0.58096   0.80642                       
       
                          SCHOOL     0.76704  -0.54476                       
       
                          EMPLOY     0.67243   0.72605                       
       
                          SERVICES   0.93239  -0.10431                       
       
                          HOUSE      0.79116  -0.55818                       
       
 

数据挖掘研究院

它们是用公因子预报原始变量的回归系数。第一主成份(因子)在所有五个变量上都有正的载荷,可见这个因子反应了城市规模的影响。第二主成份在人口、就业上有大的正载荷,在教育程度和住房价格上有大的负载荷,则第二个因子较大的城市人口多但是教育程度和住房价格低。结果还给出了公因子解释能力的估计: 数据挖掘研究院

                 Final Communality Estimates: Total = 4.669974    
                      POP    SCHOOL    EMPLOY  SERVICES     HOUSE  

                 0.987826  0.885106  0.979306  0.880236  0.937500  
  

这里给出了公因子对每一个原始变量的解释能力的量度,这是用原始变量对公因子的复相关系数平方(取0到1间值)来计算的。Communality Estimate是这些复相关系数平方的总和。因为每一个复相关系数平方都比较大,所以我们可以认为两个公因子可以很好地解释原始变量中的信息。但是我们得到的因子解释不够清楚,于是考虑用其它的因子分析方法。

数据挖掘研究院

我们来进行主因子分析。用FACTOR过程作主因子分析与作主成份分析的不同只是增加一个PRIORS=选项,可以用PRIORS=SMC或者MAX、ONE等。例如:

PROC FACTOR DATA=SOCECON priors=smc;
   TITLE2 ′主因子分析′;
RUN;
 

数据挖掘实验室

主因子法计算简约了的相关阵的特征值(相当于 的估计),所以其特征值可能为负值。选取因子个数的缺省准则是PROPORTION=1,即累计特征值达到特征值总和的100%。这样取了两个因子。结果与主成份分析相似。为了得到好的因子解释,我们在上面的PROC FACTOR语句中再加上一个ROTATE=PROMAX旋转选项,这样将在得到主因子分析后先产生方差最大正交预旋转(VARIMAX )然后进行斜交旋转,并加了一个REORDER选项使输出时把原始变量受相同因子影响的放在一起:

PROC FACTOR DATA=SOCECON PRIORS=SMC ROTATE=PROMAX REORDER;
   TITLE2 ′主因子分析及PROMAX斜交旋转′;
RUN;
 

数据挖掘研究院

在初始的主因子结果之后是方差最大预旋转的结果(只显示了旋转阵和旋转后的因子载荷): 数据挖掘研究院

                        Orthogonal Transformation Matrix             
                                        1         2                 
                              1      0.78895   0.61446              
                              2     -0.61446   0.78895              
                             Rotated Factor Pattern                 
                                     FACTOR1   FACTOR2              
                          HOUSE      0.94072  -0.00004              
                          SCHOOL     0.90419   0.00055              
                          SERVICES   0.79085   0.41509              
                          POP        0.02255   0.98874              
                          EMPLOY     0.14625   0.97499             
 

数据挖掘研究院

可见第一因子反映了房价、教育水平、服务业人数,这些应该与发达程度有关。第二因子反映了人口和就业情况,与城市规模有关。这样得到的因子已经比较好用。我们再看斜交旋转的结果,这里只给出了旋转后的因子模式阵: 数据挖掘研究院

                     Rotated Factor Pattern (Std Reg Coefs)         
                                     FACTOR1   FACTOR2              
                          HOUSE      0.95558  -0.09792              
                          SCHOOL     0.91842  -0.09352              
                          SERVICES   0.76053   0.33932              
                          POP       -0.07908   1.00192              
                          EMPLOY     0.04799   0.97509             
 数据挖掘实验室 

从结果看得到的因子比正交旋转没有改进。因为斜交旋转后的公因子是相关的,所以结果中还给出了公因子的相关阵,参考结构(Reference Structure,为每个原始变量与公因子扣除其它公因子影响的偏相关),因子结构(Factor Structure,为原始变量与公因子间的相关系数)。 数据挖掘研究院

Prerotation Method: Varimax                                  
                        Orthogonal Transformation Matrix  
                                        1         2 
                              1      0.78895   0.61446         
                              2     -0.61446   0.78895         
                             Rotated Factor Pattern  
                                     FACTOR1   FACTOR2   
                          POP        0.02255   0.98874    
                          SCHOOL     0.90419   0.00055    
                          EMPLOY     0.14625   0.97499    
                          SERVICES   0.79085   0.41509    
                          HOUSE      0.94072  -0.00004 
 

数据挖掘实验室

为了产生因子得分,需要在FACTOR过程中使用SCORE选项和OUTSTAT=选项输出得分系数数据集并调用SCORE过程。比如,为了计算方差最大正交旋转的主因子得分,可以用如下程序: 数据挖掘研究院

PROC FACTOR DATA=SOCECON PRIORS=SMC ROTATE=VARIMAX REORDER SCORE OUTSTAT=OUTF;
   TITLE2 ′主因子分析及VARIMAX正交旋转′;
RUN;
PROC SCORE DATA=SOCECON SCORE=OUTF OUT=OUTS;
   TITLE2 ′ VARIMAX正交旋转后的主因子得分′;
RUN; 数据挖掘研究院 
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?