r - 在函数调用内部构造的 glms 上的 step/stepAIC
问题描述
我遇到了与可见性/环境相关的问题。简而言之,在函数内部构造的 glms 不能使用 step/stepAIC 来简化:
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)
这会导致以下错误:
Error in glm(formula = y ~ 1, family = model$family, data = dframe) :
object 'model' not found
尽管 m2 看起来很合身并且家庭已定义,但这仍然存在。对不起,如果这个例子有点做作。
解决方案
找到了解决办法——原来的glm需要用do.call来构造。
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)
推荐阅读
- vue.js - 使用 Vuex 的可重用模块来处理多选项卡窗口
- algorithm - 制作索引文件的有用算法
- python - django在一对一字段中访问图像
- amazon-web-services - Athena 查询引擎 2 错误查询已取消!: 已超出扫描字节数限制
- python - python postgresql TypeError:字符串格式化期间并非所有参数都转换
- google-colaboratory - colab pro 中每天是否有限制导致输入/输出错误
- javascript - 我想使用不和谐的 Oauth2 显示用户名和头像
- css - @font-face 直接链接到字体文件,但无法加载?
- python - cs50 python tictactoe minimax 算法
- xml - XSLT - 如何按公共子元素值对输出进行分组