从 glm 中提取偏移项
Extract offset term from glm
我想知道如何从以下模型中提取偏移项:
mod <- glm(cyl ~ mpg + disp + offset(log(gear)), family = "poisson", data = mtcars)
我想编写一个函数 get_offset()
,其中 return 是偏移项:
get_offset <- function(x){
...
}
get_offset(mod)
#> "log(gear)"
get_offset()
还应 return 模型的偏移项:
mod2 <- glm(cyl ~ mpg + disp, offset = log(gear), family = "poisson", data = mtcars)
mod3 <- glm(cyl ~ mpg + offset(log(gear)) + disp, family = "poisson", data = mtcars)
mod4 <- glm(cyl ~ mpg + offset(gear) + disp, family = "poisson", data = mtcars)
给予:
get_offset(mod2)
#> "log(gear)"
get_offset(mod3)
#> "log(gear)"
get_offset(mod4)
#> "gear"
由 reprex package (v0.3.0)
于 2021 年 1 月 2 日创建
我们可以从 terms
中获取属性
get_offset <- function(model) {
nm1 <- names(attributes(model$terms)$dataClasses)
if('(offset)' %in% nm1) {
deparse(as.list(model$call)$offset)
} else {
sub("offset\((.*)\)$", "\1", grep('offset', nm1, value = TRUE))
}
}
get_offset(mod)
#[1] "log(gear)"
get_offset(mod2)
#[1] "log(gear)"
get_offset(mod3)
#[1] "log(gear)"
get_offset(mod4)
#[1] "gear"
我想知道如何从以下模型中提取偏移项:
mod <- glm(cyl ~ mpg + disp + offset(log(gear)), family = "poisson", data = mtcars)
我想编写一个函数 get_offset()
,其中 return 是偏移项:
get_offset <- function(x){
...
}
get_offset(mod)
#> "log(gear)"
get_offset()
还应 return 模型的偏移项:
mod2 <- glm(cyl ~ mpg + disp, offset = log(gear), family = "poisson", data = mtcars)
mod3 <- glm(cyl ~ mpg + offset(log(gear)) + disp, family = "poisson", data = mtcars)
mod4 <- glm(cyl ~ mpg + offset(gear) + disp, family = "poisson", data = mtcars)
给予:
get_offset(mod2)
#> "log(gear)"
get_offset(mod3)
#> "log(gear)"
get_offset(mod4)
#> "gear"
由 reprex package (v0.3.0)
于 2021 年 1 月 2 日创建我们可以从 terms
get_offset <- function(model) {
nm1 <- names(attributes(model$terms)$dataClasses)
if('(offset)' %in% nm1) {
deparse(as.list(model$call)$offset)
} else {
sub("offset\((.*)\)$", "\1", grep('offset', nm1, value = TRUE))
}
}
get_offset(mod)
#[1] "log(gear)"
get_offset(mod2)
#[1] "log(gear)"
get_offset(mod3)
#[1] "log(gear)"
get_offset(mod4)
#[1] "gear"