我估算了数据集中每个组的截距置信区间,如下所示:
d <- data.frame(
g=sample(letters[1:5], 100, replace=TRUE),
y=runif(100)
)
library(lme4)
fm <- lmList(y ~ 1 | g, data=d)
ci.fm <- confint(fm)
ci.fm
# An object of class "lmList.confint"
# , , (Intercept)
#
# 2.5 % 97.5 %
# a 0.4253236 0.6668585
# b 0.4860047 0.6794625
# c 0.4071186 0.6822713
# d 0.2785848 0.5992378
# e 0.4110070 0.6890399
必须有一种方法可以分别为每个列编制索引,但我无法弄明白。我已经尝试过查看str(ci.fm)
和attributes(ci.fm)
并尝试了类似attr(ci.fm, dimnames[[2]]$"2.5 %")
之类的内容,其中所有内容都不起作用。我会感激指向正确的方向。感谢。
答案 0 :(得分:2)
这是一个S4对象:你可以拥有slotNames
的“插槽”列表,
并使用@
(而不是$
)访问它们。
在这种情况下,唯一的插槽是.Data
,带有一个前导点,
所以ci.fm@.Data
包含实际数据。
str(ci.fm)
# Formal class 'lmList.confint' [package "lme4"] with 1 slots
# ..@ .Data: num [1:5, 1:2, 1] 0.35 0.348 0.315 0.143 0.388 ...
# .. ..- attr(*, "dimnames")=List of 3
# .. .. ..$ : chr [1:5] "a" "b" "c" "d" ...
# .. .. ..$ : chr [1:2] "2.5 %" "97.5 %"
# .. .. ..$ : chr "(Intercept)"
slotNames(ci.fm)
# [1] ".Data"
str( ci.fm@.Data ) # 3-dimensional array
# num [1:5, 1:2, 1] 0.35 0.348 0.315 0.143 0.388 ...
# - attr(*, "dimnames")=List of 3
# ..$ : chr [1:5] "a" "b" "c" "d" ...
# ..$ : chr [1:2] "2.5 %" "97.5 %"
# ..$ : chr "(Intercept)"
ci.fm@.Data[,1,1] # First column
# a b c d e
# 0.3496147 0.3482908 0.3147435 0.1434213 0.3876549
答案 1 :(得分:2)
ci.fm[,"2.5 %",]
a b c d e
0.4463712 0.3297468 0.3622782 0.2901415 0.2847008