为什么使用分位数回归而不是将数据拆分为分位数并计算多重线性回归?

机器算法验证 回归 最小二乘 分位数回归
2022-04-11 05:00:58

为什么使用分位数回归而不是将数据拆分为分位数并计算多重线性回归?

这些方法的优点和缺点是什么?

据我了解,分位数回归基于中位数,因此更能抵抗异常值,但是我也可以将数据拆分为分位数,并可以计算每个分位数的中位数回归?

1个回答

您需要查看有条件分位数和无条件分位数之间的区别。

您的方法分析的无条件分位数,以及它们如何依赖于这可能是一个值得提出的问题,但这不是分位数回归讨论的问题。yx

分位数回归分析为条件的分位数。也就是说:给定 x 的值,这个的条件分布的可能分位数是多少?y xxyx

让我们模拟一些数据。

qr 1

的线性关系,即一条直线),使得的每个值处,我们预计一定百分比的数据位于这条线之上。在这里,我正在使用 80% 的分位数:xx

qr 2

您提出的方法相当于在不考虑的情况下切断的前 20% 。从图形上看,这相当于将一条水平线穿过点云,然后查看这条线上方的点:y x

qr 3

对这些点的分析可能是有用的。但这只是与分位数回归不同的分析。您也许可以谈谈的前 20% 中的分布情况但是对于任何给定,您将无法说出的条件分位数。xyyx

绘图的 R 代码:

n_points <- 2000
set.seed(1)
xx <- rnorm(n_points)
yy <- xx+rnorm(n_points)

qq <- 0.8

width <- 400
height <- 400

png("qr_1.png",width=width,height=height)
    par(mai=c(.8,.8,.1,.1),las=1)
    plot(xx,yy,pch=19,cex=0.6)
dev.off()

library(quantreg)
model <- rq(yy~xx,tau=qq)
png("qr_2.png",width=width,height=height)
    par(mai=c(.8,.8,.1,.1),las=1)
    plot(xx,yy,pch=19,cex=0.6,col="lightgray")
    abline(model,lwd=1.5,col="red")
    index <- yy>=predict(model)
    points(xx[index],yy[index],pch=19,cex=0.6)
dev.off()

png("qr_3.png",width=width,height=height)
    par(mai=c(.8,.8,.1,.1),las=1)
    plot(xx,yy,pch=19,cex=0.6,col="lightgray")
    index <- yy>=quantile(yy,qq)
    points(xx[index],yy[index],pch=19,cex=0.6)
dev.off()