如何正确提供数据以更新功能? 让我们考虑执行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 Try
update(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