1

大家好,

当“lme4”中的“lmer”函数运行时,它会生成一个带有很多插槽的 S4 对象。我对这些插槽之一感兴趣,即模型@X,以及如何产生这个“X”插槽输出。我想尝试为我正在使用的不同模型函数(glmmPQL)重现这个输出,它不会自动产生这个'X'输出(仅供参考'lmer'产生一个'mer'类的对象,插槽'X'是一个模型固定效应的矩阵)。下面的代码显示了我在说什么。

我想弄清楚这个'X'数据是如何产生的?我通过在没有'()'的终端中编写'lmer'的代码来查看它,但我在那里找不到任何东西。我也试过 showMethod('lmer') 但它说 function 'lmer': 。

只是想知道是否有办法获取“X”插槽具体在做什么(或 S4 对象中的任何插槽)的源代码?或者有谁知道如何重现这个?非常感谢您的帮助和时间。

    library(lme4)
    # here is a quick example of what I am looking at using the cake dataset in the 'lme4' package
    m <- lmer(cakeglmm<- lmer(angle ~ temp + recipe + (1| replicate), family = gaussian, data = cake)

    slotNames(m)
    head(m@X)
4

1 回答 1

1

你一开始就打印好了lmer。这不会告诉你在哪里m@X设置,但你可以看到哪些方法被lmer.

lmer可以使用 访问其中的方法lme4:::methodName

如果你往里看lme4:::lmer_finalize,你会看到(释义):

ans <- new(Class = "mer", ..., X = fr$X, ...)

这就是@X插槽被填充的地方。备份lmer你会看到它fr来自lme4:::lmerFrames,具体fr$X计算如下:

X <- if (!is.empty.model(mt)) 
    model.matrix(mt, mf, contrasts)
else matrix(, NROW(Y), 0)
于 2013-05-20T03:56:02.533 回答