왜 glmer (family = binomial) 출력을 Gauss-Newton 알고리즘의 수동 구현과 일치시킬 수 없습니까?


15

lmer (실제로 glmer)의 출력을 장난감 이항 예제와 일치시키고 싶습니다. 나는 삽화를 읽었고 무슨 일이 일어나고 있는지 이해한다고 믿는다.

그러나 분명히 나는하지 않습니다. 막힌 후, 나는 무작위 효과의 관점에서 "진실"을 고쳤으며, 고정 된 효과 만 추정 한 후에 갔다. 아래 에이 코드를 포함시킵니다. 그것이 합법적임을 알기 위해 주석을 달아 + Z %*% b.k일반 glm의 결과와 일치시킵니다. 무작위 효과가 포함될 때 lmer의 출력을 일치시킬 수없는 이유를 알아 내기 위해 약간의 두뇌를 빌려야합니다.

# Setup - hard coding simple data set 
df <- data.frame(x1 = rep(c(1:5), 3), subject = sort(rep(c(1:3), 5)))
df$subject <- factor(df$subject)

# True coefficient values  
beta <- matrix(c(-3.3, 1), ncol = 1) # Intercept and slope, respectively 
u <- matrix(c(-.5, .6, .9), ncol = 1) # random effects for the 3 subjects 

# Design matrices Z (random effects) and X (fixed effects)
Z <- model.matrix(~ 0 + factor(subject), data = df)
X <- model.matrix(~ 1 + x1, data = df)

# Response  
df$y <- c(1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1)
    y <- df$y

### Goal: match estimates from the following lmer output! 
library(lme4)
my.lmer <- lmer( y ~ x1 + (1 | subject), data = df, family = binomial)
summary(my.lmer)
ranef(my.lmer)

### Matching effort STARTS HERE 

beta.k <- matrix(c(-3, 1.5), ncol = 1) # Initial values (close to truth)
b.k <- matrix(c(1.82478, -1.53618, -.5139356), ncol = 1) # lmer's random effects

# Iterative Gauss-Newton algorithm
for (iter in 1:6) {
  lin.pred <- as.numeric(X %*% beta.k +  Z %*% b.k)
  mu.k <- plogis(lin.pred)
  variances <- mu.k * (1 - mu.k)
  W.k <- diag(1/variances)

  y.star <- W.k^(.5) %*% (y - mu.k)
  X.star <- W.k^(.5) %*% (variances * X)
  delta.k <- solve(t(X.star) %*% X.star) %*% t(X.star) %*% y.star

  # Gauss-Newton Update 
  beta.k <- beta.k + delta.k
  cat(iter, "Fixed Effects: ", beta.k, "\n")
}

답변:


28

모형 적합 명령을 다음과 같이 변경하면 일치하는 접근 방식이 작동합니다.

my.lmer <- glmer(y ~ x1 + (1 | subject), data = df, family = binomial, nAGQ = 0)

주요 변경 사항은이며 nAGQ = 0, 접근 방식과 일치하지만 기본값 ( nAGQ = 1)은 그렇지 않습니다. nAGQ'적응 가우스-허 마점 구적 점 수'를 의미하고 glmer혼합 모형을 피팅 할 때 임의 효과를 통합 하는 방법 을 설정합니다 . 때 nAGQ1보다 큰 경우, 다음 적응 직교가 사용됩니다 nAGQ점. 의 nAGQ = 1경우 Laplace 근사값이 사용되고의 nAGQ = 0경우 적분은 '무시'됩니다. 너무 구체적이지 않고 너무 기술적이지 nAGQ = 0않다면 랜덤 효과는 추정 된 조건 모드를 통해 고정 효과의 추정치에만 영향을 미칩니다.nAGQ = 0무작위 효과의 무작위성을 완전히 설명하지는 않습니다. 임의의 효과를 완전히 설명하려면 효과를 통합해야합니다. 그러나, 당신은 사이의 차이를 발견 nAGQ = 0하고 nAGQ = 1종종 매우 작은 수 있습니다.

일치하는 접근 방식이 작동하지 않습니다 nAGQ > 0. 이는 이러한 경우 최적화를위한 세 단계가 있기 때문입니다. (1) 랜덤 효과의 조건 모드를 추정하기 위해 반복적으로 가중 된 최소 제곱 (PIRLS), (2) 조건 모드에 대한 랜덤 효과를 (약) 통합합니다. , 및 (3) 목적 함수의 비선형 최적화 (즉, 적분 결과). 이러한 단계는 수렴 될 때까지 반복됩니다. 당신은 단순히 가정합니다 반복적으로 reweighted 최소 제곱 (IRLS) 실행하고있는 b알려져있다 퍼팅 Z%*%b오프셋 관점에서. 귀하의 접근 방식은 PIRLS와 동등한 것으로 판명되었지만이 동등성 glmer은 추정 조건부 모드 (다른 방법으로는 알지 못함)를 얻는 데 사용 하기 때문에 유지 됩니다.

이것이 잘 설명되지 않으면 사과하지만 빠른 설명을 제공하는 주제는 아닙니다. https://github.com/lme4/lme4pureR이 유용 할 수 있는데, 이는 lme4순수한 R 코드에서 접근 방식 의 (불완전한) 구현입니다 . lme4pureR보다 lme4느리게 읽을 수 있도록 설계되었습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.