2015-02-05 4 views
5

이것은 질문보다 버그보고 일 수 있습니다. 그러나 newdata 인수를 명시 적으로 사용하면 동일한 데이터 집합을 사용하여 훈련 데이터가 예측과 다른 예측을 생성하는 이유는 무엇입니까? newdata 인수를 생략하고 훈련 데이터 세트를 명시 적으로 사용합니까?훈련 집합에 대한 predict.glmer가 newdata의 유무에 관계없이

library(lme4) 
packageVersion("lme4") # 1.1.8 
m1 <- glmer(myformula, data=X, family="binomial") 
p1 <- predict(m1, type="response") 
p2 <- predict(m1, type="response", newdata=X) 
all(p1==p2) # FALSE 

이것은 반올림 오류가 아닙니다. 나는 cor(p1,p2) 반환 0.8보고 있습니다.

이것은 슬로프가있는 모델과 격리 된 것 같습니다. 다음 플롯에서 암시 적은 새 데이터가없는 predict(..., type="response")을 의미하고 을 의미합니다. 여기에서 X는 교육과 동일합니다. 을 의미합니다. 모델 1과 다른 모델의 유일한 차이점은 모델 1에는 (임의의) 절편 만 포함되고 다른 모델에는 무작위 절편과 임의의 슬로프가 있다는 것입니다.

enter image description here

+0

를 통해 Github에서에서 직접 개발 버전을 설치할 수 있습니다 설치 한 경우 [재현 예 (http://stackoverflow.com/questions/5963269/how-to-를 제공하기 위해 도움이 될 것입니다 make-a-great-r-reproducible-example)을 사용하여 검증 할 코드를 실행할 수 있습니다. 수식 지정 방법을 포함시켜야합니다. – MrFlick

+1

@ MrFlick; – user20650

+1

흠, 예측은'newdata'보다는'newX'를 사용하여 동일합니다 – user20650

답변

4

그것은 (this Github issue로 11 월 2014 년)이 개발 버전에서 수정되었습니다 predict.merMod 버그가 있음을 밝혀졌습니다. 당신은 컴파일 도구를 사용하면

devtools::install_github("lme4/lme4")