2017-12-03 1 views
2

왜 이러한 GLMM이 그렇게 다른가요?LME4 GLMM은 성공으로 구성 될 때 서로 다릅니다. 시련과 원시 데이터 비교

두 가지 모두 lme4로 만들어졌지만 둘 다 동일한 데이터를 사용하지만 성공 정확도 데이터 (m1) 만 사용하는 동안 성공 및 시련 (m1bin) 관점에서 프레임이 만들어집니다. lme4가 전체 시간의 이진 데이터에서 이항 구조를 찾아낸다고 완전히 오해 한 적이 있습니까? (BRMS는 정상적으로 작동합니다.) 이제는 분석 결과 중 일부가 변경 될까봐 두렵습니다.

> summary(m1bin) 
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod'] 
Family: binomial (logit) 
Formula: cbind(right, count) ~ dim * incorrectlabel + (1 | uniqueid) 
    Data: dbin 

     AIC  BIC logLik deviance df.resid 
    398.2 413.5 -194.1 388.2  151 

Scaled residuals: 
     Min  1Q Median  3Q  Max 
-1.50329 -0.53743 0.08671 0.38922 1.28887 

Random effects: 
Groups Name  Variance Std.Dev. 
uniqueid (Intercept) 0  0  
Number of obs: 156, groups: uniqueid, 39 

Fixed effects: 
                    Estimate Std. Error z value Pr(>|z|)  
(Intercept)      -0.48460 0.13788 -3.515 0.00044 *** 
dimrelevant      -0.13021 0.20029 -0.650 0.51562  
incorrectlabelmarginal    -0.15266 0.18875 -0.809 0.41863  
dimrelevant:incorrectlabelmarginal -0.02664 0.27365 -0.097 0.92244  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Correlation of Fixed Effects: 
         (Intr) dmrlvn incrrc 
dimrelevant -0.688    
incrrctlblm -0.730 0.503  
dmrlvnt:ncr 0.504 -0.732 -0.690 
> summary(m1) 
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod'] 
Family: binomial (logit) 
Formula: accuracy ~ dim * incorrectlabel + (1 | uniqueid) 
    Data: d 

     AIC  BIC logLik deviance df.resid 
    864.0 886.2 -427.0 854.0  619 

Scaled residuals: 
     Min  1Q Median  3Q  Max 
-1.3532 -1.0336 0.7524 0.9350 1.1514 

Random effects: 
Groups Name  Variance Std.Dev. 
uniqueid (Intercept) 0.04163 0.204 
Number of obs: 624, groups: uniqueid, 39 

Fixed effects: 
             Estimate Std. Error z value Pr(>|z|) 
(Intercept)   0.140946 0.088242 1.597 0.1102 
dim1     0.155923 0.081987 1.902 0.0572 . 
incorrectlabel1  0.180156 0.081994 2.197 0.0280 * 
dim1:incorrectlabel1 0.001397 0.082042 0.017 0.9864 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Correlation of Fixed Effects: 
         (Intr) dim1 incrr1 
dim1  0.010    
incrrctlbl1 0.128 0.006  
dm1:ncrrct1 0.005 0.138 0.010 

d: 
                      uniqueid  dim incorrectlabel accuracy 
1 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  marginal  0 
2 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  extreme  1 
3 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 relevant  marginal  1 
4 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  marginal  1 
5 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 relevant  marginal  0 
6 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  marginal  0 

dbin: 
                      uniqueid  dim incorrectlabel right count 
                       <fctr>  <fctr>   <fctr> <int> <int> 
1 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  extreme  3  3 
2 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 incidental  marginal  1  5 
3 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 relevant  extreme  3  4 
4 A10LVHTF26QHQC:3X4MXAO0BGONT6U9HL2TG8P9YNBRW8 relevant  marginal  3  4 
5 A16HSMUJ7C7QA7:3DY46V3X3PI4B0HROD2HN770M46557 incidental  extreme  3  4 
6 A16HSMUJ7C7QA7:3DY46V3X3PI4B0HROD2HN770M46557 incidental  marginal  2  4 

나는 그들이 동일 할 거라고 생각. BRMS에서의 모델링은 동일한 견적을 가진 동일한 모델을 제공합니다.

답변

4

그들은 동일해야합니다 :이를 기반으로 로그 - 우도와 메트릭을 제외하고, (작은 수치의 차이까지 아래 참조) (로그 - 우도에서 일련의 모델들 차이 비록/AIC/등등 동일해야한다). 나는 당신의 문제가 cbind(right, count)보다는 cbind(right, count-right)을 사용하고있는 것 : ?glm에서 응답도 지정 될 수 있습니다 이항 ... 가족 ... 들어

열이 성공의 숫자를주는 두 개의 열 매트릭스 실패는입니다.

(강조 표시는 이것이 성공 횟수와 총 횟수가 아니라 성공 횟수와 실패 횟수를 나타냅니다.)

여기 집계 및 분석 데이터 세트에 맞춤을 비교 내장 데이터 세트 중 하나의 예이다 :

library(lme4) 
library(dplyr) 

## disaggregate 
cbpp_disagg <- cbpp %>% mutate(obs=seq(nrow(cbpp))) %>% 
    group_by(obs,herd,period,incidence) %>% 
    do(data.frame(disease=rep(c(0,1),c(.$size-.$incidence,.$incidence)))) 

nrow(cbpp_disagg) == sum(cbpp$size) ## check 

g1 <- glmer(cbind(incidence,size-incidence)~period+(1|herd), 
      family=binomial,cbpp) 
g2 <- glmer(disease~period+(1|herd), 
      family=binomial,cbpp_disagg) 

## compare results 
all.equal(fixef(g1),fixef(g2),tol=1e-5) 
all.equal(VarCorr(g1),VarCorr(g2),tol=1e-6) 
+1

이 절대적으로 옳다. 나는 또한'혼합 된'이 자동적으로 대조를'contr.sum'으로 설정하고, 환경은'contr.treatment'로 설정한다는 것을 깨달았습니다. 그래서 나는 이것을 계산 한 후에도 다른 것을 얻고있었습니다. (한 10 년 후 그리고 나는이 실수를 저지른다.) – jtth

관련 문제