confint的索引元素()

时间:2012-06-28 15:18:43

标签: r

我估算了数据集中每个组的截距置信区间,如下所示:

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 %")之类的内容,其中所有内容都不起作用。我会感激指向正确的方向。感谢。

2 个答案:

答案 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