首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造内部函数调用glms的step/step step

构造内部函数调用glms的step/step step
EN

Stack Overflow用户
提问于 2020-06-26 02:31:06
回答 1查看 76关注 0票数 1

我遇到了一个与能见度/环境有关的问题。简而言之,构造内部函数的glms不能使用step/stepAIC进行简化:

代码语言:javascript
复制
foo = function(model) {
  m = glm(y~x, family=model$family, data = dframe)
  return(m)
}

y = rbinom(100, 1, 0.5)
x = y*rnorm(100) + rnorm(100)
dframe = data.frame(y, x)
m = glm(y~x, family='binomial', data = dframe)
m2 = foo(m)
library(MASS)
summary(m2)
print(m2$family)
m3 = stepAIC(m2, k = 2)

这将导致以下错误:

代码语言:javascript
复制
Error in glm(formula = y ~ 1, family = model$family, data = dframe) : 
  object 'model' not found

这一点,尽管m2看起来很适合它和家庭的定义。如果这个例子有点人为的话,很抱歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-26 02:50:50

找到了解决方案--最初的glm需要用do.call构建。

代码语言:javascript
复制
foo = function(model) {
  form.1<-as.formula(y ~ x)
  dat = model$data
  fam = model$family
  m <- do.call("glm", list(form.1, data=dat, family=fam))
  ##m = glm(y~x, family='binomial', data = model$dframe)
  return(m)
}

y = rbinom(100, 1, 0.5)
x = y*rnorm(100) + rnorm(100)
dframe = data.frame(y, x)
m = glm(y~x, family='binomial', data = dframe)
m2 = foo(m)
library(MASS)
summary(m2)
print(m2$family)
m3 = stepAIC(m2, k = 2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62587127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档