Python:在面板数据的statsmodel(回归)中捕获高共线性

时间:2019-01-19 04:49:18

标签: python machine-learning time-series regression statsmodels

我正在尝试解决一个问题,该问题要求我评估数字广告活动是否成功推动了销量增长。

因为我们的印象数据有限,所以我为nan的印象填充了0。

数据是每周一次,看起来像这样: enter image description here

然后我做了一个散点图,用于展示和数量: enter image description here

但是,当我尝试在statsmodel中使用印象作为x和数量作为y进行回归时,会给我共线性警告,但我仅将印象用作x变量。我正在使用的代码如下: enter image description here

它给了我以下结果: enter image description here enter image description here

有人可以帮我弄清楚吗?我的方法错了吗?我真的很困惑,因为我只有一个x,不应有任何共线性。我是否应该担心,因为它是面板数据,所以我应该使用其他方法?任何建议表示赞赏,非常感谢!

1 个答案:

答案 0 :(得分:0)

例如参见https://stats.stackexchange.com/questions/332428/regression-model-constant-causes-multicollinearity-warning-but-not-in-standardi/332597#332597

Statsmodels计算设计矩阵的条件编号,因此它对解释变量的缩放敏感。
用这种方法计算条件数的主要目的是表明实际设计矩阵是否存在数值问题,而不仅仅是多共线性的诊断指标。 Statsmodels将用户提供的设计矩阵作为给定值,并且不对设计矩阵进行标准化或转换以提高数值稳定性。

在此示例中,没有多重共线性,但是Impression的比例远大于编码为1的常数。

此外,回归系数非常小,以补偿较大的解释变量。

因此,通过重新缩放Impression变量,例如通过使用100,000作为Impression的单位,可以改善数值稳定性和参数解释。