知识库 > 数学方法 > 多元统计分析

因子分析    

  •     因子分析和主成分分析一样,也是一种数据简化的技术。它通过研究众多变量之间的内部依赖关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变量是不可观测的潜在变量,称为因子。
        
        
        的均值向量.
        该模型被称为个因子的因子分析模型,为公共因子,特殊因子,为因子载荷矩阵。由以上的关系我们知道,从而对角线上的元素
        
        其中反映了公共因子对的影响,称之为共同度.
        值得注意的是,因子分析并不是唯一的,若是任意阶正交阵,则可以表示成:,将作为因子载荷,作为公共因子,则因子分析的条件依然满足,因子载荷的不唯一性,使得我们有更多的选择的余地,对于我们的分析反而是有利的。
        提取因子的方法有多种,常见的有主成分分析,主因子分析,迭代主因子分析,极大似然分析。旋转的方法更是种类繁多,主要有最大方差,最大均方。由于提取因子的随机性,通过旋转公因子可以减少这种随意性,所以公共因子旋转式必要的,旋转同时也有利于公共因子现实意义的解释。
        

        定义:Factor(X:Array, VarValue:Real):Array;
        说明:对样本数据进行因子分析,分别采用主成分分析法估计因子载荷矩阵(因子载荷矩阵不唯一),方差最大法做载荷矩阵的正交旋转矩阵,回归方法计算因子得分
        参数:
        X: 二维维实数数组,表示样本矩阵;
        VarValue:实数,表示方差贡献率,控制因子个数;
        返回结果:
        Ret["Correlation Matrix",0]:样本数据的相关系数矩阵
        Ret["kmo",0]:KMO检验值;0.9<KMO: 非常适合;0.8<KMO<0.9:适合 ;0.7<KMO<0.8:一般; 0.6<KMO<0.7:适合度较低 ;KMO<0.6:适合度很低
        ret["Total Variance Explained",0]:特征值、方差贡献率、累计方差贡献率等信息
        ret["Component Matrix",0]:因子载荷矩阵
        ret["Communalities",0]:共同变量度,即载荷矩阵行的平方和
        ret["thogonal matrix",0]:正交变换后的载荷矩阵
        ret["Rotation matrix",0]:旋转矩阵
        ret["Factor score",0]:因子得分
        

        例:下面我们对2010年上证A股的9个财务指标进行因子分析(参见平台下的demo_factor函数):
        

        stockn:=getbk("上证A股");
        vo:=BackUpSystemParameters();
        SetSysParam(pn_date(),today());
        sto:=array();
        for nI:=0 to length(stockn)-1 do
        begin
           SetSysParam(pn_stock(),stockn[nI]);
           if IsStockGoMarket(inttodate(20011231)) then
              sto[length(sto)]:=stockn[nI];
        end
        st:=array2str(sto,";");
        A1:= Query("",st,True,"","代码",DefaultStockID(),
        "主营业务利润",report(46008,20101231),
        "利润总额",report(46024,20101231),
        "净利润",report(46033,20101231),
        "加权每股收益",report(42003,20101231),
        "每股净资产",report(42006,20101231),
        "加权净资产收益率",report(42013,20101231),
        "资产总计",report(44059,20101231),
        "股本",report(44099,20101231));
        RestoreSystemParameters(vo);
        a:=zeros(mrows(a1),mcols(a1));
        a[:,:]:=a1[:,:];
        stock:=a[:,0];
        data:=a[:,1:8];       //取得纯数据矩阵
        br:=factor(data,0.85); //
        return br; 
        

        结果分析:
        
        Ret["kmo",0]=0.733,即表明数据可以做因子分析
        
        ret["Total Variance Explained",0]:第一列为样本矩阵的相关系数矩阵的特征值,第二列为方差贡献率,第三列为累计方差贡献率
        ret["Component Matrix",0]:因子载荷矩阵
                          
        ret["Communalities",0]:共同度表示三个因子解释掉变量的多少,显然,共同度越大,表示能解释原来变量的信息就越全;
        
        ret["thogonal matrix",0]:从thogonal matrix中看出第一个公因子可以解释为“规模因子”,因为它的 0:主营业务收入净额、1:主营业务利润;、2:利润总额、3:净利润、7:资产总计、8:股本的绝对值都比较大;第二个公因子可以解释为“每股价值因子”“收益率因子”,因为其4:每股收益、 5:每股净资产的绝对值大;第三个公因子则可以解释为“收益率因子”,因为4:每股收益和6:净资产收益率;的绝对值较大。因子分析模型中的因子是抽象的,得根据研究对象的具体分析所解释,“解释”是抽象的概念。
        ret["Rotation matrix",0]:旋转矩阵
        array((0.9888,0.1296,0.0734),(-0.149,0.8703,0.4695),(-0.0031,-0.4752,0.8799))
        ret["Factor score",0]:因子得分,表示各个股票在这三个因子的得分情况,让研究人员更好的做其他分析。