我想将glm模型传递给自定义函数,但会遇到错误消息
eval(expr,envir,enclos)中的错误:object ... not found
我想传递拟合的glm模型,并使用相同的公式,族,数据和权重作为输入以适应新模型。我已尝试使用下面的代码(如果我只设置glmModel = testModel
并在手动中运行代码中,则可以正常工作)。出了什么问题?
glmPassing <- function(glmModel){
weightsTest = glmModel$weights
glmTest = glm(formula = glmModel$formula, family = glmModel$family, data = glmModel$data, weights = weightsTest)
summary(glmTest)
}
test = iris
testModel = glm(Sepal.Length ~ Sepal.Width + I(Sepal.Width^2), family = gaussian, data = test, weights = Petal.Width)
glmPassing(testModel)
我已经将权重分离为一个新变量,因为我发现了导致错误消息的原因。使用上面的代码,错误消息是
eval(expr,envir,enclos)中的错误:object&#39; weightsTest&#39;找不到
谢谢!
答案 0 :(得分:0)
使用此
glmPassing <- function(glmModel){
weightsTest = glmModel$weights
glmTest = do.call("glm", list(formula = glmModel$formula, family = glmModel$family, data = quote(glmModel$data), weights = weightsTest))
summary(glmTest)
}
通常,do.call
函数有助于摆脱环境问题。
我正在实施自己的交叉验证。以上示例非常简洁,以说明问题,并尝试重做完全相同的glm分析。感谢您的参与(已经回答)。
感谢。但正如弗里克先生所说,我也认为update()
是一个方便的设施。 cv.glm()
包中的boot
函数只是用它来进行交叉验证。