glm()中缺少的默认`offset`参数变成什么?

时间:2019-05-23 19:31:46

标签: r

我想构造一个通用函数,将数据familyoffset传递给 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的形式和默认值(如果缺少)。

0 个答案:

没有答案