关于矩阵存在共线性的第二谈

来源:互联网 发布:淘宝的购物评级怎么涨 编辑:程序博客网 时间:2024/06/16 12:51

前面一篇文章中我们谈了非正定的问题。那么,针对Mplus中的这个警告做一点解释

THE MODEL ESTIMATION TERMINATED NORMALLY


     THE STANDARD ERRORS OF THE MODEL PARAMETER ESTIMATES MAY NOT BE

     TRUSTWORTHY FOR SOME PARAMETERS DUE TO A NON-POSITIVE DEFINITE

     FIRST-ORDER DERIVATIVE PRODUCT MATRIX.  THIS MAY BE DUE TO THE STARTING

     VALUES BUT MAY ALSO BE AN INDICATION OF MODEL NONIDENTIFICATION.  THE

     CONDITION NUMBER IS      -0.378D-16.  PROBLEM INVOLVING THE FOLLOWING PARAMETER

先来看这个数据集,一个著名的共线性数据集,具体内容见这个链接

http://www.itl.nist.gov/div898/strd/lls/data/Longley.shtml

先把上面出现的那个提示解释一下,

关于这个问题,很多人提问Mplus作者貌似压根没有说明白

http://www.statmodel.com/discussion/messages/11/1602.html?1475195929


矩阵的条件数(condition number

condition number 是一个矩阵的稳定性或者敏感度的度量,如果一个矩阵的 condition number1附近,那么它就是well-conditioned的,如果远离1,它的输出结果就不可相信。本数据的矩阵条件数是-0.378D-16,这是科学计数法,网上没有查到具体是多少。


关于共线性的度量主要有三个:

1 容忍度(tolerance), 

2 方差膨胀因子(variable inflation factor,VIF)

3条件数,常用k表示

r容忍度和 VIF的定义



一般vif太大比如大于10,则说明存在多重共线性


条件数K


矩阵特征值最大比上最小,当自变量正交时,条件数为1,当k>15时存在共线性问题

对于条件数在这里多说一下


在矩阵运算中,常常需要考虑观察数据存在某种程度的不确定性和误差,而且在数据计算也总是伴随着误差,同时我们还需要关注在牛顿迭代过程中算法的

稳定性,给定方程求解其中的某个解集 d,我们希望得到的近似值d* 如果f(d)逼近f(d*)那么这个算法在求解此问题是就是“良性”的,如果在逼近f(d*)有时相差

很大,那么我们就称为“病态”。我们只有在保证算法稳定的前提下让f(d)逼近f(d*)计算出的结果才是可信的。

在求解线性方程AX=b时,其中矩阵A是 n*n的元素为已知数值的系数矩阵,b是n*1的已知向量,X是一个待求解的参数向量,系数矩阵A非奇异时,由于独立

方程的个数和未知参数的个数相等,故方程有唯一的解,成为正定方程,这时我们对求解的稳定性感兴趣,如果系数矩阵A和向量矩阵b发生扰动,那么方程的解向量

X如何变化,如果解向量X如何受系数矩阵A和系数向量b的元素微小扰动的影响,将得到描述矩阵A的一个重要特征数值称为条件数(condition number),在 matlab中

函数是cond同时在python求解用np.linalg.cond() 这个指令。关于cond的计算在间文末的附录

     当系数矩阵A一个很小的扰动引起向量X很小的扰动,则称A为(well-condition matrix)良态矩阵,若引起很大的扰动,则称矩阵A是

(ill-condition matrix)病态,而条件数则是衡量求解线性方程,误差的通过矩阵A的传播扩大为解向量的误差程度,也就是说,是衡量线性方程数值稳定

性的一个重要指标。


我们再来看看

Mplus语句和本数据输出的结果

    data: file is longnm.csv;

    variable: names are y x1-x6;

    model:x1-x6 on y;

    output:modindices tech1 tech4;


tech4出现这样的相关矩阵


           ESTIMATED CORRELATION MATRIX FOR THE LATENT VARIABLES

              X1            X2            X3            X4            X5

              ________      ________      ________      ________      ________

 X1             1.000

 X2             0.992         1.000

 X3             0.621         0.604         1.000

 X4             0.465         0.446        -0.177         1.000

 X5             0.979         0.991         0.687         0.364         1.000

 X6             0.991         0.995         0.668         0.417         0.994

 Y              0.971         0.984         0.502         0.457         0.960


想必也看到了,这个矩阵的存在大量相关系数大于0.9的变量

那么无疑是存在着共线性了。