首页 > 编程知识 正文

不完全共线性的后果,stata多重共线性

时间:2023-05-06 00:13:55 阅读:162036 作者:2300

通过检查相关矩阵的特征值,可以检测出高复用共线性。 较低的本征值表示数据在同一条直线上,对应的本征向量表示哪个变量在同一条直线上。

如果数据没有共线性,则特征值最好都不接近零: xs=NP.random.randn (100,5 ) # independent variables

corr=NP.corrcoef(xs,rowvar=0) # correlation matrix

w,v=NP.LinaLG.EIG(corr ) # eigen values eigen vectors

w

array ([ 1.256,1.1937,0.7273,0.9516,0.8714 ]

但是,如果x[4] - 2 * x[0] - 3 * x[2]=0,则noise=NP.random.randn(100 ) # white noise

xs [ :4 ]=2* xs [ :0 ]3* xs [ :2 ].5 * noise # col linearity

corr=NP.corrcoef(xs,rowvar=0) ) )。

w,v=NP.LinaLG.EIG(Corr ) ) ) ) ) ) ) ) w,v=NP.LinaLG.EIG(Corr ) ) ) ) ) ) ) ) )。

w

array ([ 0.0083,1.9569,1.1687,0.8681,0.9981 ]

一个特征值(这里是第一个特征值)接近零。 所对应的特征向量是v [ 33,360,0 ]

array ([-0.4077,0.0059,- 0.5886,0.0018,0.6981 ]

无视几乎为零的系数,以上基本上说了x[0]。 x[2]和x[4]是同一条直线(如预期)。 如果将xs值归一化并乘以此特征向量,则结果会在0附近徘徊,方差会变小。 STD_xs=(xs-xs.mean ) axis=0) )/xs.STD ) axis=0) ) #标准值

ys=STD _ xs.dot (v [ :0 ]

ys.mean (,ys.var ) )。

(0,0.0083 ) )。

请注意,ys.var ()基本上是接近零的模态。

因此,为了得到高的多线性度,只要考虑相关矩阵的特征值即可。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。