1

G'dayみんな、

'lme4'の'lmer'関数を実行すると、多くのスロットを持つS4オブジェクトが生成されます。これらのスロットの1つ、つまりmodel @ Xと、この「X」スロット出力がどのように生成されるかに興味があります。この出力を、この「X」出力を自動的に生成しない別のモデル関数(glmmPQL)で再現してみたい(FYI「lmer」はクラス「mer」のオブジェクトを生成し、スロット「X」はモデルです)固定効果の行列)。以下のコードは、私が話していることを示しています。

私が理解したいのは、この「X」データがどのように生成されたかです。ターミナルに「()」を付けずに「lmer」のコードを記述して調べましたが、何も見つかりませんでした。showMethod('lmer')も試しましたが、関数'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ていることがわかります。frlme4:::lmerFramesfr$X

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