【问题标题】:Least Absolute Deviation function最小绝对偏差函数
【发布时间】:2015-11-09 02:04:01
【问题描述】:

我正在尝试估计 LAD 回归,但它给我的信息是:“错误收敛 (8)”。这是什么意思以及为什么nlminb 估计器等于lm 估计器?

Sample generation step

dgp=function(){
  x=c(sample(0:9,10),sample(0:9,10));
  b0=2;
  b1=-6;
  eps=rbinom(20,1,0.05)*rnorm(20,0,1)+rbinom(20,1,0.95)*rnorm(20,0,1);
  eps=eps/sd(eps);
  y=b0+b1*x+eps;
  return(data.frame(y=y,x=x))
}
z=dgp()

Estimation step

LAD=function(...){
  z=(...);
  y=z[[1]]
  x=z[[2]]
  LADf=function(par) {(sum(y-par[1]-par[2]*x)^2)}

  outLS=lm(y~x);
  b0=as.numeric(outLS$coefficients[1]);b0
  b1=as.numeric(outLS$coefficients[2]);b1

  out=nlminb(c(b0,b1),LADf)
  return(list(out$par,out$message))
}
LAD(z)

【问题讨论】:

    标签: r function least-squares estimation


    【解决方案1】:

    你的 LAD 函数:

    LADf=function(par) {(sum(y-par[1]-par[2]*x)^2)}
    

    对我来说看起来就像最小二乘。因此,您所做的是最小化平方和,而不是绝对偏差。你需要类似的东西

    LADf <- function(par) { sum(abs(y - par[1] - par[2]*x)) }
    

    请注意,此函数不可微,因此您必须使用可以处理该函数的优化器(例如 Nelder-Mead 或 SANN)。

    LAD 估计器也相当于中值回归,因此您可以使用分位数回归包来代替。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2013-12-21
      相关资源
      最近更新 更多