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)
答案 0 :(得分:0)
我没有提供这个作为完成的解决方案,因为找到关于传递给回归函数的内容的常用方法是查看数据&#39;论点。但是,对于您的情况:
> preds <- attr(fit2$terms, "term.labels")
> sapply( preds, function(x) unique( get(x) ) )
$x
[1] "x"
$w
[1] "a" "c" "b"