想跟大家伙儿聊聊我最近捣鼓的一个小玩意儿,或者说是一个小命令,叫“collin”。起初,我是在处理一批数据,感觉那些变量之间好像有点不清不楚、不明不白的关系,互相影响似的,搞得我分析结果老觉得有点飘。我就寻思,这不行,得找个法子瞅瞅它们之间到底咋回事。
初识“collin”
就喜欢动手试试。之前也用过别的办法瞅,什么相关系数矩阵,肉眼看,累得慌。后来有朋友提了一嘴,说Stata里头有个叫 collin
的命令,专门干这个的,能帮着看看到底有没有“多重共线性”这档子事儿。说白了,就是看看自变量们是不是在“窝里斗”,互相解释对方,导致模型不稳定。
我一听,这敢情省得我自个儿瞎琢磨了。于是我就把我的数据给导进了Stata里头。
我的实践步骤
过程挺简单的,我跟大家捋一捋:
- 第一步:装命令(如果需要的话)
我先是在Stata的命令行敲了敲,看看我这软件里有没有自带这个collin
。有些版本可能没有,那就得先ssc install collin
一下,联网装上。我运气还行,好像是有的,或者我以前装过给忘了。 - 第二步:跑个回归
这collin
命令,它不是上来就用的,得先跑个回归模型。比如我关心的是Y,影响它的有X1, X2, X3这些变量。我就先敲:regress Y X1 X2 X3
。Stata就会给我报出来一堆回归的结果。 - 第三步:主角登场,用“collin”
等回归结果出来之后,紧我就敲下了collin
这几个字母,然后一回车。
瞅瞅结果,发现问题
这一回车不要紧,结果刷刷地就出来了。主要看几个东西:
- VIF (方差膨胀因子):这玩意儿挺直观的。一般都说,要是哪个变量的VIF大于10,那就得小心了,说明它跟别的自变量缠得太紧了。我当时瞅了瞅我的结果,好家伙,还真有那么一两个变量的VIF飚得挺高,十几二十的都有。
- Mean VIF:就是所有VIF的平均值。这个要是也挺大,比如大于5或者6,那也说明模型整体的共线性问题可能比较严重。我那个模型的Mean VIF也有点偏高。
- Condition Number (条件数) 或 Eigenvalue (特征值):这个稍微复杂点,但也能看出来问题。有的资料说条件数大于30就得警惕。我主要还是看VIF,对我这种懒人来说更直接。
看到这些数字,我心里就有数了。原来我之前感觉结果“飘”,不是没道理的,这变量之间确实存在不小的共线性。这就好比几个演员抢一个戏份,都想当主角,结果把戏给演砸了。
后续咋办
发现了问题,那接下来就得想办法解决了。一般来说,可以考虑:
- 删掉一些“捣乱”的变量,特别是那些VIF特别高的,而且从业务逻辑上看也不是那么非要不可的。
- 或者把几个高度相关的变量合并成一个新的综合指标。
- 再或者,用一些专门处理多重共线性的回归方法,比如岭回归啥的。
我当时是试着把VIF最高的那一两个变量先拿掉,重新跑了回归和 collin
,你别说,情况就好多了,VIF都下来了,模型也看着稳当了不少。
这个 collin
命令还是挺实用的,尤其是在做回归分析的时候,顺手敲一下,检查检查,能避免不少后续的麻烦。就像开车前检查下轮胎,虽然多一步,但心里踏实。我这就算是把我自个儿用这个小命令的经历给大家分享了一下,希望能对大伙儿有点启发。搞数据分析嘛就是得多试试,多琢磨,工具用熟了,自然就顺手了。
还没有评论,来说两句吧...