Hiyerarşik doğrusal regresyon yapmak için standart algoritmalar?


Yanıtlar:


9

Biri için Harvey Goldstein'ın yinelemeli genelleştirilmiş en küçük kareler (IGLS) algoritması var ve ayrıca küçük değişiklikler, varyans parametrelerinin tarafsız tahminlerini veren iteratif genelleştirilmiş en küçük kareler (RIGLS) kısıtlandı .

Bu algoritmalar hala yinelemelidir, bu nedenle kapalı form değildir, ancak MCMC veya maksimum olasılıktan hesaplamalı olarak daha basittir. Parametreler yakınlaşana kadar tekrarlıyorsunuz.

  • Goldstein H. Yinelemeli Genelleştirilmiş En Küçük Kareler Kullanılarak Çok Düzeyli Karışık Doğrusal Model Analizi. Biometrika 1986; 73 (1): 43-56. doi: 10.1093 / biyometri / 73.1.43

  • Goldstein H. Sınırsız Tarafsız İteratif Genelleştirilmiş En Küçük Kareler Tahmini. Biometrika 1989; 76 (3): 622-623. doi: 10.1093 / biyometri / 76.3.622

Bu ve alternatifler hakkında daha fazla bilgi için bkz.


Muhteşem! Tam aradığım şey.
John Salvatier

4

R'deki lme4 paketi yinelemeli olarak yeniden ağırlıklandırılmış en küçük kareleri (IRLS) kullanır ve yinelemeli olarak yeniden ağırlıklandırılmış en küçük kareleri (PIRLS) cezalandırır. PDF'lere buradan bakın:

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


1
Douglas Bates ve Steven Walker, yukarıdaki PIRLS algoritmasını uygulamak için saf R kodunu kullanmak olan bir GitHub projesi oluşturdular. github.com/lme4/lme4pureR . R paketindeki temel lmer()işlevi göz önünde bulundurursanız, lme4normalde C ++ kodunun bir demetini okumak zorundasınız (PIRLS'in uygulanmasını anlayın lmer()(bu, C ++ programlamasında çok iyi tecrübeli olmayanlarımız için zor olabilir).
Chris

1

HLM'ler için "hesaplama algoritmaları" için bir başka iyi kaynak (yine LMM'lerle benzer özellikler olarak gördüğünüz ölçüde):

  • McCulloch, C., Searle, S., Neuhaus, J. (2008). Genelleştirilmiş Doğrusal ve Karışık Modeller. 2. Baskı. Wiley. Bölüm 14 - Hesaplama.

LMM'leri hesaplamak için listeledikleri algoritmalar şunları içerir:

  • EM algoritması
  • Newton Raphson algoritması

GLMM'ler için listeledikleri algoritmalar şunları içerir:

  • Sayısal kareleme (GH kareleme)
  • EM algoritması
  • MCMC algoritmaları (belirttiğiniz gibi)
  • Stokastik yaklaşım algoritmaları
  • Simüle edilen maksimum olasılık

GLMM'ler için önerdikleri diğer algoritmalar şunları içerir:

  • Cezalandırılmış yarı olabilirlik yöntemleri
  • Laplace yaklaşımları
  • Önyükleme sapması düzeltmeli PQL / Laplace

0

HLM'nin bir tür doğrusal karışık model olduğunu düşünüyorsanız, EM algoritmasını düşünebilirsiniz. Aşağıdaki ders notlarının 22-23. Sayfalarında, karma model için klasik EM algoritmasının nasıl uygulanacağı gösterilmektedir:

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 )
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.