我想构造一个通用函数,将数据family
和offset
传递给 glm2 包中的glm2
函数。我的目标是根据我拥有的数据类型进行计数或费率回归。尽管f()
似乎微不足道,但我想在f()
内部和glm2()
中使用偏移量。
f <- function(y,
X,
family = c("gaussian", "binomial", "poisson"),
offset = NULL) {
#Change the default if necessary.
offset <- if (is.null(offset)) {
rep(1, length(y))
}
#Lots of code
#...
eta <- 43
l <- offset * exp(eta)
#But I also want to use glm2 ...
fit <- glm2::glm2(y ~ . ,
data = data.frame(y = y, X = X),
family = family,
offset = offset)
#More code ...
return(fit)
}
df <- data.frame(y = rpois(24, 9), X = rnorm(24, 50, 8), pop = rlnorm(24, 6.8, 0.6))
f(y = df$y, X = df$X, family = "poisson")
f(y = df$y, X = df$X, family = "poisson", offset = df$pop)
#But is the glm2 estimates correct?
如果glm2()
或glm()
函数中缺少偏移量(默认值),有人知道偏移量转换成什么吗?我将f
中的偏移量设置为正常比例,即1的向量。 glm2()
是否按正常或对数尺度计算人口?因此,上面的glm2
表达式应该是:
fit <- glm2( y ~ . , data = data.frame(y = y, X = X),
family = family, offset = offset)
或
fit <- glm2( y ~ . , data = data.frame(y = y, X = X),
family = family, offset = log(offset))
?
通常,是使用对数偏移值还是非对数偏移值来设置泊松回归?毕竟,两者在统计上都是正确的。
glm2()
,glm()
和model.offset()
的帮助文件不指示offset
的形式和默认值(如果缺少)。