为什么普通最小二乘法比泊松回归表现更好?

机器算法验证 回归 最小二乘 泊松回归
2022-02-10 14:24:28

我试图拟合回归来解释城市每个地区的凶杀案数量。虽然我知道我的数据遵循泊松分布,但我试图拟合这样的 OLS:

log(y+1)=α+βX+ϵ

然后,我还尝试了(当然!)泊松回归。问题是我在 OLS 回归中有更好的结果:伪R2更高(0.71 对 0.57)和 RMSE 也更高(3.8 对 8.88。标准化为具有相同的单位)。

为什么?正常吗?无论数据分布如何,使用 OLS 有什么问题?

编辑 按照 kjetil b halvorsen 和其他人的建议,我通过两个模型拟合数据:OLS 和负二项式 GLM (NB)。我从我拥有的所有功能开始,然后我递归地删除了不重要的功能。OLS 是

crimearea=α+βX+ϵ

权重=area.

summary(w <- lm(sqrt(num/area) ~  RNR_nres_non_daily + RNR_nres_daily + hType_mix_std + area_filtr + num_community_places+ num_intersect + pop_rat_num + employed + emp_rat_pop + nden_daily + nden_non_daily+ bld_rat_area + bor_rat_area + mdist_highways+ mdist_parks, data=p, weights=area))

error2 <- p$num - (predict(w, newdata=p[,-1:-2], type="response")**2)*p$area

rmse(error2)
[1] 80.64783

NB 预测犯罪数量,以该地区的面积为偏移量。

summary(m3 <- glm.nb(num ~  LUM5_single  + RNR_nres + mdist_daily + mdist_non_daily+ hType_mix_std + ratio_daily_nondaily_area + area_filtr + num_community_places  + employed  + nden_daily + nden_non_daily+ bld_rat_area + bor_rat_area + mdist_smallparks + mdist_highways+ mdist_parks + offset(log(area)), data=p, maxit = 1000))

error <- p$num - predict(m3, newdata=p[,-1:-2], type="response")

rmse(error)
[1] 121.8714

OLS 残差:

在此处输入图像描述

NB残差

在此处输入图像描述

因此,OLS 中的 RMSE 较低,但残差似乎不是那么正常......

4个回答

我怀疑部分问题可能在于您选择的性能指标。如果您使用 RMSE 测量测试性能,则训练模型以最小化 MSE 与测试标准匹配,从而提示什么是重要的。您可能会发现,如果您使用测试集的负对数似然使用泊松似然来衡量测试性能,那么泊松模型的效果会更好(正如预期的那样)。与提出的其他问题相比,这可能是一个小问题,但它可能是一个有用的健全性检查。

首先,对于这样的数据,我预计会出现过度分散(如果您不知道那是什么,请参阅https://stats.stackexchange.com/search?q=what+is+overdispersion%3F)。

这必须使用泊松 glm 来解决,但通常的线性回归不是问题。正如评论中所说,您想要包含泊松 glmlog(DistrictSize)作为偏移量,您需要使用线性回归作为响应变量Nr. homicidesDistrict Size. 结果差异的一个可能原因是您在两种情况下对这个问题的处理方式不同。你可以在这里发布一些结果图,比如残差图,这样我们就可以看到发生了什么。或者您可以将您的数据作为表格发布在原始帖子中......可能会很有趣。

另一个问题是您在线性回归中使用的转换。与计数数据一起使用的通常方差稳定变换是平方根,而不是对数。

另一个问题是与线性回归一起使用的变换的选择。用作响应时Yi/xi,您将需要加权线性回归。假设作为一个近似值YiPoisson(λxi), 我们有

EYixiλVYixixi1
所以你应该使用加权线性回归xi作为重量。一个简单的分析表明,作为近似值,相同的权重适用于Yi/xi或者log(Yi/xi+1)作为回应。

    EDIT

至于您在帖子中的附加分析,请注意,不能直接在两个模型之间比较 rmse,因为使用了不同的响应!要进行直接比较,您需要将预测值反向转换为原始比例。然后你可以自己计算rmse,看看。但请注意,由于非线性,在反向变换后获得的预测可能存在偏差。因此,对反向转换的预测进行一些调整可以使它们更有用。在某些情况下,这可以从理论上计算出来,或者您可以只使用引导程序。

伪有很多选择R2的。其中很多都是非常有缺陷的。一般来说,通常没有理由R2从 OLS 生成的值与给定的伪值相当R2; 而是伪R2's 通常用于比较同一分布族的模型。

确实,您的数据不是正态分布的(我认为这就是您还运行泊松回归的原因),但您的数据也可能不是泊松分布。泊松分布假设均值和方差相同,但情况可能并非如此(如其他答案中所述 - 您可以捕获这种差异并将其合并到模型中)。由于您的数据并不是真正适合任何一种模型,因此 OLS 可能表现更好是有道理的。

需要注意的另一件事是,普通最小二乘估计对非正态性具有鲁棒性,这可能就是您获得合理模型的原因。高斯-马尔可夫定理告诉我们,在以下假设下,OLS 系数估计是最好的(就均方误差而言)线性无偏估计量 (BLUE),

  • 误差的平均值为零
  • 观察结果不相关
  • 误差具有恒定的方差

这里没有正态性假设,因此您的数据对于这个模型很可能是合理的!话虽如此,我会研究一个带有过度分散参数的泊松模型,你应该会得到更好的结果。