栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在统计模型中捕获高多重共线性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在统计模型中捕获高多重共线性

可以通过检查检测的高多重共线性 特征值相关矩阵 。极低的特征值表明数据是共线的,相应的 特征向量 表明哪些变量是共线的。

如果数据中不存在共线性,则可以预期所有特征值都不接近零:

>>> 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>>> warray([ 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  # collinearity>>> corr = np.corrcoef(xs, rowvar=0)>>> w, v = np.linalg.eig(corr)>>> warray([ 0.0083,  1.9569,  1.1687,  0.8681,  0.9981])

特征值之一(这里是第一个)接近零。对应的特征向量为:

>>> v[:,0]array([-0.4077,  0.0059, -0.5886,  0.0018,  0.6981])

基本上忽略了 几乎为零的
系数,上面基本上说

x[0]
x[2]
并且
x[4]
是共线性的(如预期的那样)。如果一个标准化
xs
值并乘以该特征向量,则结果将在零附近徘徊,并且变化很小:

>>> std_xs = (xs - xs.mean(axis=0)) / xs.std(axis=0)  # standardized values>>> ys = std_xs.dot(v[:,0])>>> ys.mean(), ys.var()(0, 0.0083)

注意,

ys.var()
基本上本征值接近于零。

因此,为了捕获高多线性度,请查看相关矩阵的特征值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号