如何正确提供数据以更新功能? 让我们考虑执行logit或概率回归的函数跟踪: my_glm <- function(y, x, model_type = "logit") { do.call("glm", c(list( formula = y ~ ., data = base::quote(as.data.frame(x)), family = quote(binomial(link = model_type)) ))) }
我想要的是一个函数,它可以对函数如何正确提供数据以更新功能? 让我们考虑执行logit或概率回归的函数跟踪: my_glm <- function(y, x, model_type = "logit") { do.call("glm", c(list( formula = y ~ ., data = base::quote(as.data.frame(x)), family = quote(binomial(link = model_type)) ))) },r,model,regression,R,Model,Regression,我想要的是一个函数,它可以对函数my_model中的模型执行似然比测试 我目前的工作 因为我的函数my_glm是使用do.call函数创建的,所以我不能将此函数编码为: #Incorrect! library(lmtest) test_model <- function(model) { lrtest(model) } 然而,我仍然不知道如何通过数据更新我的模型。我试着替换 test <- lrtest(update(model, family = binomial(&
my_model
中的模型执行似然比测试
我目前的工作
因为我的函数my_glm
是使用do.call
函数创建的,所以我不能将此函数编码为:
#Incorrect!
library(lmtest)
test_model <- function(model) {
lrtest(model)
}
然而,我仍然不知道如何通过数据更新我的模型。我试着替换
test <- lrtest(update(model, family = binomial("logit")))
尝试在my_车型上运行时:
test_model(my_model)
我得到一个错误:
Error: node stack overflow
Error during wrapup: node stack overflow
另一种尝试(更简单的一种):
test\u model Tryupdate(model,family=binomial(“logit”),data=model$model[-1])
。参数名为data
,调用中的值为x
。嘿@nicola非常感谢你的回答!您是对的,替换它是合理的,但是lrtest(更新(model,family=binomial(“logit”),data=model$model[-1])
给出了完全相同的结果。请将您正在运行的实际代码和收到的错误发布在同一页上。你们只是在定义函数,所以让读者去理解什么不起作用
test <- lrtest(update(model, family = binomial("logit"), data = model$model[-1]))
test_model <- function(model) {
if (model$family$link == "logit") {
test <- lrtest(update(model, family = binomial("logit"), data = model$model[-1]))
}
else if (model$family$link == "probit") {
test <- lrtest(update(model, family = binomial("probit"), data = model$model[-1]))
}
test
}
test_model(my_model)
Error: node stack overflow
Error during wrapup: node stack overflow
test_model <- function(model) {
test <- lrtest(update(model, family = binomial("logit"), data = model$model[-1]))
}
test_model(my_model)
Error in is.data.frame(data) : object 'model' not found