2016-10-10 6 views
4

ランダム効果混合効果モデルで連続変数または数値変数を持つことは意味がありません(たとえば、hereを参照)。ランダムな効果変数は、Rのlmer(またはlme)の要素として自動的に取り込まれますか?

しかし、私は思ったんだけどRでlme4::lmerまたはnlme::lmeが意図的にそうすることからあなたを防ぐ場合ですが...

具体的には、私が求めていることである:私はlmer(またはlme)を供給する場合には任意の非ランダムな効果としての因子(非カテゴリー)変数は自動的にそれを因子として扱いますか?上記のエラーがデータに直接グループ化因子を添加言及が

lmer(y ~ z + (1|factor(x)), data = dat) 
Error: couldn't evaluate grouping factor factor(x) within model frame: try adding grouping factor to data frame explicitly if possible 

それはない:(lmを用いて通常の方法であるように)、次のエラーが発生し

lmerに直接factor()を挿入しますグループ化係数にはが必要かどうかを指定してください(または、おそらく単語の選択肢から暗示されているかどうか)。

新しい因子クラス変数を自分のデータから直接作成するのはかなり簡単ですが、lmer(またはlme)を使用するときに実際に必要かどうか不思議です。

答えて

2

これは問題ではないようです。オブジェクトの残りの部分をチェック

library(lme4) 

sl <- sleepstudy 
sl$Subject <- as.numeric(levels(sl$Subject))[sl$Subject] 

## subject as factor 
m1 <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy) 

## subject as numeric 
m2 <- update(m1, data = sl) 

all.equal(VarCorr(m1), VarCorr(m2)) 
# TRUE 

、呼び出しが異なっている(理にかなって、私は別の何かのデータフレームと呼ばれる)、およびフレームが(原因件名の数値対係数差に)異なっています。それ以外はすべて同じです。

all.equal(m1, m2) 
#[1] "Attributes: < Component “call”: target, current do not match when deparsed >"  
#[2] "Attributes: < Component “frame”: Component “Subject”: 'current' is not a factor >" 

グループ化因子は、ランダム効果のモデル行列を作成する、mkReTrms()内と呼ばれる、mkBlist()factorize()に供されます。 factorize()は、最終的にはランダム効果の式の右辺にあるfactor(x)を呼び出すヘルパーです(既に因子なのかどうかの条件付き)

+0

フィードバックありがとうございます!それは表面的な答えのビットです(太字の質問に答えるのは、関数のRE部分の関数を呼び出すのがなぜ機能しないのかという理由ではなく、関数が自動的にそれを要素として扱いますか?)。コメントするだけで十分理解できるものではありません。その答えを追加したいですか? – alexforrence

+0

@alexforrenceありがとう、アレックスこれは役立ちます。最終段落(「グループ化要因...など」)をどこで正確に決定しましたか? – theforestecologist

+1

@森林学者は、一般的にはhttps://github.com/lme4/lme4/blob/master/R/utilities.Rのソースから入手できますが、意味を持たない特定のビットはありますか? – alexforrence

関連する問題