我想用LAD回归估计非线性回归模型的参数。本质上,LAD估计器是M估计器。据我所知,不可能使用robustbase
包来做到这一点。如何使用R进行LAD回归?我可以使用标准包装吗?
答案 0 :(得分:0)
您可以使用内置的optim()
函数
整理一些数据(确保x
为正数,以便使a*x^b
有意义-将负数提高为小数幂是有问题的):
set.seed(101)
a <- 1; b <- 2
dd <- data.frame(x=rnorm(1000,mean=7))
dd$y <- a*dd$x^b + rnorm(1000,mean=0,sd=0.1)
定义目标函数:
objfun <- function(p) {
pred <- p[1]*dd$x^p[2] ## a*x^b
sum(abs(pred-dd$y)) ## least-absolute-deviation criterion
}
测试目标函数:
objfun(c(0,0))
objfun(c(-1,-1))
objfun(c(1,2))
优化:
o1 <- optim(fn=objfun, par=c(0,0), hessian=TRUE)
您确实需要指定起始值,并亲自处理任何数值/计算问题...
我不确定我是否知道如何计算标准误差:您可以使用sqrt(diag(solve(o1$hessian)))
,但我不知道它所基于的标准理论是否仍然适用...