계층 적 선형 회귀 분석을위한 표준 알고리즘?


답변:


9

하비 골드 스타 인의 반복적 일반화 최소 제곱 (IGLS) 알고리즘이 있으며, 사소한 수정, 제한적 반복적 일반화 최소 제곱 (RIGLS)으로 편차 매개 변수의 편향 추정치를 제공합니다.

이 알고리즘은 여전히 ​​반복적이므로 닫힌 형태는 아니지만 MCMC보다 계산적으로 간단하거나 최대 가능성입니다. 매개 변수가 수렴 될 때까지 반복합니다.

  • Goldstein H. 반복 일반화 된 최소 제곱 법을 이용한 다단계 혼합 선형 모형 분석. Biometrika 1986; 73 (1) : 43-56. 도 : 10.1093 / biomet / 73.1.43

  • Goldstein H. 제한적 편향 반복 일반화 된 최소 제곱 추정. 바이오 메트 리카 1989; 76 (3) : 622-623. 도 : 10.1093 / biomet / 76.3.622

이것과 대안에 대한 자세한 내용은 다음을 참조하십시오.


굉장한! 정확히 내가 찾던 것.
존 살바 티어

4

R의 lme4 패키지는 반복적으로 가중 된 최소 제곱 (IRLS) 및 불이익이 가해진 반복적으로 가중 된 최소 제곱 (PIRLS)을 사용합니다. 여기 PDF를 참조하십시오 :

http://rss.acs.unt.edu/Rdoc/library/lme4/doc/index.html


1
Douglas Bates와 Steven Walker는 순수한 R 코드를 사용하여 위의 PIRLS 알고리즘을 구현하는 것을 목표로하는 GitHub 프로젝트를 만들었습니다. github.com/lme4/lme4pureR . R 패키지의 기본 lmer()기능 을 고려 lme4한다면 일반적으로 C ++ 코드 전체를 읽어야 lmer()합니다.
Chris

1

HLM에 대한 "컴퓨팅 알고리즘"에 대한 또 다른 좋은 소스는 (LMM과 비슷한 사양으로 보는 정도) 다음과 같습니다.

  • McCulloch, C., Searle, S., Neuhaus, J. (2008). 일반화 선형 및 혼합 모델. 2 판. 와일리 14 장. 컴퓨팅.

LMM을 계산하기 위해 나열한 알고리즘은 다음과 같습니다.

  • EM 알고리즘
  • 뉴턴 라프 슨 알고리즘

GLMM에 대해 나열된 알고리즘은 다음과 같습니다.

  • 수치 구적법 (GH quadrature)
  • EM 알고리즘
  • MCMC 알고리즘 (설명한대로)
  • 확률 근사 알고리즘
  • 시뮬레이션 된 최대 가능성

GLMM이 제안하는 다른 알고리즘은 다음과 같습니다.

  • 페널티 된 유사 우도 방법
  • 라플라스 근사치
  • 부트 스트랩 바이어스 보정 기능이있는 PQL / Laplace

0

HLM을 선형 혼합 모델의 유형으로 간주하면 EM 알고리즘을 고려할 수 있습니다. 다음 코스 노트의 22-23 페이지는 혼합 모델에 대해 기존 EM 알고리즘을 구현하는 방법을 보여줍니다.

http://www.stat.ucla.edu/~yuille/courses/stat153/emtutorial.pdf

###########################################################
#     Classical EM algorithm for Linear  Mixed Model      #
###########################################################
em.mixed <- function(y, x, z, beta, var0, var1,maxiter=2000,tolerance = 1e-0010)
    {
    time <-proc.time()
    n <- nrow(y)
    q1 <- nrow(z)
    conv <- 1
    L0 <- loglike(y, x, z, beta, var0, var1)
    i<-0
    cat("  Iter.       sigma0                 sigma1        Likelihood",fill=T)
    repeat {
            if(i>maxiter) {conv<-0
                    break}
    V <- c(var1) * z %*% t(z) + c(var0) * diag(n)
    Vinv <- solve(V)
    xb <- x %*% beta
    resid <- (y-xb)
    temp1 <- Vinv %*% resid
    s0 <- c(var0)^2 * t(temp1)%*%temp1 + c(var0) * n - c(var0)^2 * tr(Vinv)
    s1 <- c(var1)^2 * t(temp1)%*%z%*%t(z)%*%temp1+ c(var1)*q1 -
                                                c(var1)^2 *tr(t(z)%*%Vinv%*%z)
    w <- xb + c(var0) * temp1
    var0 <- s0/n
    var1 <- s1/q1
    beta <- ginverse( t(x) %*% x) %*% t(x)%*% w
    L1 <- loglike(y, x, z, beta, var0, var1)
    if(L1 < L0) { print("log-likelihood must increase, llikel <llikeO, break.")
                             conv <- 0
break
}
    i <- i + 1
    cat("  ", i,"  ",var0,"  ",var1,"  ",L1,fill=T)
    if(abs(L1 - L0) < tolerance) {break}  #check for convergence
    L0 <- L1
    }
list(beta=beta, var0=var0,var1=var1,Loglikelihood=L0)
}

#########################################################
#  loglike calculates the LogLikelihood for Mixed Model #
#########################################################
loglike<- function(y, x, z, beta, var0, var1)
}
{
n<- nrow(y)
V <- c(var1) * z %*% t(z) + c(var0) * diag(n)
Vinv <- ginverse(V)
xb <- x %*% beta
resid <- (y-xb)
temp1 <- Vinv %*% resid
(-.5)*( log(det(V)) + t(resid) %*% temp1 )
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.