在 R 中,您可能已经估计了一个具有对数转换因变量的模型:
mfit <- lm(
formula = log(salary) ~ yrs.service + yrs.since.phd,
data = Salaries
)
然后您可能想要更改模型框架并调用更新以重新调整模型:
n <- nrow(Salaries)
mfr <- model.frame(mfit)[sample(1:n, size=n, replace=TRUE),]
mfit2 <- update(mfit, data = mfr)
这将导致错误:
Error in eval(expr, envir, enclos) : object 'salary' not found
原因是公式仍然有因变量log(salary)
,模型框架中的变量称为log(salary)
。R认为它可以找到salary
然后调用log
它。如果没有重新采样,同样的错误也会发生,这个例子只是说明了为什么人们可能想要这样做。
上面的过程来自执行重新采样行的引导程序包。这种行为是意料之中的,还是一个错误?我知道可以通过转换 data 参数中的变量来解决它,但这似乎很烦人并且被忽视了......