我正在尝试在 R 中编写一个简单的迭代重新加权最小二乘算法。我想传递一个函数作为计算权重的参数,但不幸的是 R 抱怨找不到该函数。任何想法我做错了什么?提前致谢!
这是我的代码:
irls <- function(imodel, wfunc, tol) {
repeat {
b0 <- imodel$coef
imodel <- lm(formula(imodel), weights=wfunc(imodel), data=imodel$model)
b1 <- imodel$coef
if(abs((b1-b0)/b0)<=tol) break
}
imodel
}
和一个愚蠢的例子来证明这个问题
x <- 1:100
y <- x + rnorm(100)
mlm <- lm(y~x-1)
irls(mlm, function(x){rep(1,length(x$fit))},0.001) # error: wfunc not found