3

私は、本当に単純な質問だと思いました。参加者のグループによる縦断実験では、全員が他の全員を 10 個の変数 (たとえば、「この人は好感が持てる」、「この人はつまらない」など) について 7 つの異なる時点で評価しました。1つの変数/応答に対して何らかの知覚者と目標分散を取得したい場合は、次を使用します。

lmer(scale(Var1) ~ (1|target) + (1|perceiver), data= subset(x, time_point == 1))

ここでは、データフレーム「x」の従属変数「Var1」があり、最初の time_point (x の変数でもあります) が指定されています。

これまでのところ、これはうまくいきます。

私が言ったように、私は複数の応答と複数の時点を持っています。したがって、a) 「for」ループ、または b) ラップリーを使用して、すべてのモデルを一度に取得したいと考えました。

x[,10]いずれにせよ、列の位置 ( 10 は Var1 の想定位置) または変数自体 ( x$Var1) または (少なくとも少し奇妙です)を指定するか、従属変数を何らかの方法で「インデックス付け」する必要があります。式に変数の名前を入力します ( col.names(c[10])。

私が言おうとしているのは、どちらもうまくいかないということです。変数の長さが異なると、常にエラーが発生します。しかし、私が書いたように、まったく同じ列を使用しています!

複数の lmer を実行した経験のある人はいますか?

すべてのアイデアを歓迎します。ご不明な点がございましたら、ご不明な点がございましたら、お気軽にお問い合わせください。

乾杯、アル

4

1 に答える 1

3

各評価に独自のレコードが含まれるようにデータを再形成してから、それらを反復処理します。

library(reshape2)


# This will create a data.frame with one row for each  rating, 
# which are uniquely specified by the characteristic being rated,
# the time point, the perceiver, and the target
# (I think)
x.melt <- melt(x,
               id.var = c("time_point", "perceiver", "target"),
               measure.var = c("Var1", "Var2", "Var3", "Var4",
                               "Var5", "Var6", "Var7")
)


# I'd use plyr to iterate, personally
library(plyr)

# This will return a list containing one model for each combination of variable
# (which are your various outcomes) and time_point
x.models <- dlply(x.melt, .var = c("variable", "time_point"), .fun = function(x) {

    lmer(scale(value) ~ (1|target) + (1|perceiver), data= x))

})


# Which then makes it easy to do things like print summaries for every model
lapply(x.models, summary)

モデルのコンポーネントとしてtime_point を使用する方が理にかなっていると思います。その場合は、.var = c("variable", "time_point")引数からそれを削除して、モデル仕様に追加するだけです。

R では、データが適切な形になっていると、多くのことが簡単になります。パッケージの背後にある「溶解」と「鋳造」の概念について学ぶことは非常に価値があります。reshape2

于 2013-12-11T17:47:50.117 に答える