手动估计分位数回归

机器算法验证 回归 回归系数 分位数 擅长 分位数回归
2022-04-09 14:41:29

假设我们有以下数据

x   y
1   5
2   4
3   5
4   4
5   7

我想在 excel 中进行分位数回归,我找到了有关给定方法的以下信息

在此处输入图像描述

基于此信息让我们选择或 75% 分位数,在 excel 中我完成了以下结构,首先根据指标函数创建虚拟变量,并选择任意值 alpha 和 beta 虚拟变量有使用以下方法填充q=75

α=0.1

β=0.2

在此处输入图像描述

最初所有值都为零,现在我计算了一列求和

在此处输入图像描述

最后我计算了所有这些值的总和,然后使用求解器我估计了最小化总和的系数,我得到了以下值和结果

在此处输入图像描述

如果我错了,请告诉我,并且统计上你能解释一下这是什么意思?这些系数用分位数来描述什么?

2个回答

(比答案长一点的评论,但我错过了评论的重复)

首先,您对损失的计算似乎是正确的(这是R代码):

y <- c(5, 4, 5, 4, 7)
x <- c(1, 2, 3, 4, 5)
a <- 0.217092
b <- 1.594303
tau <- 0.75
f <- function(par, y, x, tau) {
    sum((tau - (y  <= par[1] + par[2]*x)) * (y - (par[1] + par[2]*x)))  
}
f(par=c(a, b), y=y, x=x, tau=tau)
[1] 3.782908

其次,Excel求解器似乎有问题。使用R的优化器,我们发现:

optim(c(0.1, 0.2), f, y=y, x=x, tau=tau)
$par
[1] 4.4999998 0.4999998

$value
[1] 1.250001

$counts
function gradient 
 143       NA 

所以损失optim比使用 Excel 的求解器要低。

第三,请注意,您估计分位数回归的方法不如求解相应的线性程序。无论如何,与 Roger Koenker 的quantreg包的比较产生:

library(quantreg)
rq(y ~ x, tau=tau)
Call:
rq(formula = y ~ x, tau = tau)

Coefficients:
(Intercept)           x 
        4.5         0.5 

Degrees of freedom: 5 total; 3 residual

R这与'soptim求解器的解非常接近。

关于你的另一个问题:你能详细说明你想了解什么吗?

在@BayerSe 的基础上使用matlab 解决解决方案(感谢我的朋友,我一直尊重与他人分享知识的人),我已经在matlab 中解决了这个问题

  1. 定义目标函数

    f=@(a) sum((q-(y<=a(1)+a(2) x)). (ya(1)-a(2)*x))

进行初步猜测 αβq

a_b = [0.1,0.2];

q=0.75

最后解决

options = optimset('PlotFcns',@optimplotfval);
x = fminsearch(f,a_b,options)

x =

    4.5000    0.5000

在此处输入图像描述