2016-10-10 25 views
4

據我所知,具有混合效果模型作爲隨機效果連續或數字變量沒有多大意義(例如,請參閱here)。隨機效應變量是否會自動作爲R中lmer(或lme)中的因子?

但我不知道是如果lme4::lmer或R中nlme::lme有意阻止你這樣做......

具體來說,就是我要問的是:如果我提供lmer(或lme)任何非因子(非分類)變量作爲隨機效應,函數是否會自動將其作爲一個因子來處理?

插入factor()直接進入11聚物(如使用時lm通常的方法)產生以下錯誤:雖然上述錯誤中提到直接添加一個分組因子到數據

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 

,它不指定所述分組因子是否需要作爲一個因子(或者可能是來自單詞選擇的隱含因子)?

我知道這很簡單,直接從我的數據創建一個新的因子類變量,但我只是好奇,如果它實際上有必要使用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 >" 

分組因素經受factorize()mkBlist(),其內mkReTrms()調用,它創建用於隨機效應模型矩陣。 factorize()是一個幫手,最終在隨機效果公式的右側條款中調用factor(x)(條件是它是否已經是一個因子等)

+0

感謝您的反饋!這是一個膚淺的回答(回答粗體問題「函數是否自動將其作爲一個因子?」而不是*爲什麼*在公式的RE部分中調用函數不起作用)。這不是我理解得足夠好的評論,你想添加一個關於這個問題的答案嗎? – alexforrence

+0

@alexforrence謝謝,亞歷克斯這是有幫助的。你究竟在何處/如何確定你的最後一段(「分組因素......」)? – theforestecologist

+1

@theforestecologist通常來自https://github.com/lme4/lme4/blob/master/R/utilities.R,有沒有什麼特別的意義? – alexforrence