2016-10-10 11 views
4

임의 효과혼합 효과 모델에 연속 또는 숫자 변수를 사용하는 것이 의미가 없음을 이해합니다 (예 : here 참조).R의 lmer (또는 lme)에서 임의의 효과 변수가 자동으로 요인으로 사용됩니까?

는하지만 제가 궁금하네요 것은 내가 부탁 해요 것은 ... 의도적으로 그렇게하지 못할 특히

경우 lme4::lmer 또는 R에 nlme::lme이다 : 나는 공급할 경우 lmer (또는 lme) 어떤 비 factor (non-categorical) 변수를 무작위 효과로 사용하면 함수가 자동으로이를 요인으로 처리합니까? 상기 에러 데이터에 직접 그룹화 팩터를 추가 언급되지만

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 감사합니다. Alex가 도움이됩니다. 최종 단락 ("그룹화 요소 ... 등")을 어디에서 결정 했습니까? – theforestecologist

+1

@ theforeststologologist는 일반적으로 https://github.com/lme4/lme4/blob/master/R/utilities.R의 출처에서 구별 할 수없는 특정 비트가 있습니까? – alexforrence