【发布时间】:2014-11-20 17:03:23
【问题描述】:
我正在尝试编写一个 R 函数来运行加权(可选)回归,但我很难让权重变量起作用。 这是该函数的简化版本。
HC <- function(data, FUN, formula, tau = 0.5, weights = NULL){
if(is.null(weights)){
est <- FUN(data = data, formula = formula, tau = tau)
intercept = est$coef[["(Intercept)"]]
zeroWorker <- exp(intercept)
}
else {
est <- FUN(data = data, formula = formula, tau = tau, weights = weights)
intercept = est$coef[["(Intercept)"]]
zeroWorker <- exp(intercept)
}
return(zeroWorker)
}
如果我不使用 weights 参数,该函数可以完美运行。
mod1 <- HC(data = mydata, formula = lin.model, tau = 0.2,
FUN = rq)
但是,当我使用 weights 参数时会引发错误消息。
mod2 <- HC(data = mydata, formula = lin.model, tau = 0.2,
FUN = rq, weights = weig)
我用谷歌搜索了这个问题,这篇文章似乎与我的问题最接近,但我仍然无法让它工作。 R : Pass argument to glm inside an R function。 任何帮助将不胜感激。 我的问题可以通过以下方式复制:
library("quantreg")
data(engel)
mydata <- engel
mydata$weig <- with(mydata, log(sqrt(income))) # Create a fictive weigth variable
lin.model <- foodexp~income
mod1 <- HC(data = mydata, formula = lin.model, tau = 0.2,
FUN = rq) # This works perfectly
mod2 <- HC(data = mydata, formula = lin.model, tau = 0.2,
FUN = rq, weights = weig) # throws an error.
HC 中的错误(数据 = mydata,公式 = lin.model,tau = 0.2,FUN = rq,权重 = weig): 找不到对象“称重”
【问题讨论】:
标签: r function if-statement regression