从gee包中估算的gee对象中获取X级别

时间:2014-08-20 23:12:11

标签: r

在基础环境中使用glm估计的

stats::glm对象具有编码因子级别的方便属性,甚至是基于字母顺序的效果编码为因子的字符变量。此属性是xlevels广告位,使用不可见函数.getXlevels计算,该函数使用模型字词和模型框架。

模型框架很复杂,大型物体回想起来很难计算。

我使用gee包来获得用可交换相关结构估计的模型系数的稳健标准误差。我想修改模型输出以显示具有引用的因子的空白行"水平。这对于glm个对象很容易,但对于gee,没有xlevels个属性。从gee个对象获取这些级别的最佳方法是什么?

示例

library(gee)

n <- 300
x <- sample(letters[1:3], n, replace=TRUE)
w <- sample(letters[1:3], n, replace=TRUE)
y <- rnorm(n, ifelse(x=='a' | w == 'b', .4, 0))
i <- rep(1:12, each=25)

fit1 <- glm(y ~ x + w)
fit2 <- gee(y ~ x + w, id=i, corstr='exchangeable')

summary.glm2 <- function(obj) {
  out <- coef(summary(obj))
  lev <- obj$xlevels
  lev <- mapply(paste0, names(lev), lev)
  print(paste('XLEVELS ARE', paste(lev, collapse=', ')))
  lev[1, ] <- paste(lev[1, ], '(ref)')
  lev <- Reduce(c, lev)
  ind <- c(1, match(lev , rownames(out)))
  out <- out[ind, ]
  rownames(out) <- c('(Intercept)', lev)
  out
}

summary.glm2(fit1)
summary.glm2(fit2)

1 个答案:

答案 0 :(得分:0)

我没有提供这个作为完成的解决方案,因为找到关于传递给回归函数的内容的常用方法是查看数据&#39;论点。但是,对于您的情况:

> preds <-  attr(fit2$terms, "term.labels")
> sapply( preds, function(x)  unique(  get(x) )  )
$x
[1] "x"

$w
[1] "a" "c" "b"