2

我正在尝试使用该quantreg软件包来拟合指数曲线。

这是一个可复制的示例。IRL 我有更复杂的异常值数据,这就是为什么我不喜欢使用nls对异常值不可靠的数据。

library(quantreg)
library(ggplot2)

x = 1:100
set.seed(42)
y = 500*exp(-0.02*x) +rnorm(100, 0, 5 )
df = data.frame(cbind(x,y))
plot(df)

formula =  y ~ k * exp(b*x) 
qr_exp = nlrq(formula,
                   data = df,
                   start = list(k = 600, b = -0.01),
                   tau = .50,
                   nlrq.control(maxiter=1000))
summary(qr_exp)
sum(qr_exp$m$resid())
[1] -26.52373

我预计会有sum(qr_exp$m$resid())大约 0, tau = 0.5但该值为负数,这意味着模型倾向于高估实际值。

如您所见,我的残差总和更接近于 0tau= 0.47

formula =  y ~ k * exp(b*x) 
qr_exp = nlrq(formula,
              data = df,
              start = list(k = 600, b = -0.01),
              tau = .47,
              nlrq.control(maxiter=1000))
summary(qr_exp)
sum(qr_exp$m$resid())
[1] -4.467781

我真的不明白为什么。

是因为可能有无限数量的解决方案,因此不能保证负残差比正残差多吗?

如果是的话,如果这对我来说非常重要,那么最好的解决方案是什么:

  • 最小化最小绝对偏差而不是最小二乘偏差(对异常值不稳健)
  • 有平衡残差吗?

添加一小部分 L2 惩罚来平衡是否有意义?(参见Huber 损失

4

0 回答 0