階層線形回帰を行うための標準アルゴリズム?


回答:


9

Harvey Goldsteinの反復一般化最小二乗(IGLS)アルゴリズムが1つあります。また、分散パラメーターの不偏推定値を提供するマイナーな変更、制限付き反復一般化最小二乗(RIGLS)もあります。

これらのアルゴリズムはまだ反復的であるため、閉じた形式ではありませんが、MCMCまたは最大尤度よりも計算的に単純です。パラメータが収束するまで繰り返すだけです。

  • ゴールドスタインH.反復一般化最小二乗法を使用したマルチレベル混合線形モデル分析。Biometrika 1986; 73(1):43-56。土井:10.1093 / biomet / 73.1.43

  • ゴールドスタインH.制限のない、偏りのない反復一般化最小二乗推定。Biometrika 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 ++コード全体を読んでPIRLSの実装を理解lmer()する必要があります(これは、C ++プログラミングに精通していない私たちにとっては難しいかもしれません)。
Chris

1

HLMの「コンピューティングアルゴリズム」のもう1つの優れた情報源(LMMと同様の仕様と見なす限り)は次のとおりです。

  • McCulloch、C.、Searle、S.、Neuhaus、J.(2008)。一般化線形モデルと混合モデル。第2版​​。ワイリー。第14章-コンピューティング。

LMMを計算するためにリストするアルゴリズムには、次のものがあります。

  • EMアルゴリズム
  • Newton Raphsonアルゴリズム

彼らがGLMMにリストするアルゴリズムは次のとおりです。

  • 数値求積法(GH求積法)
  • EMアルゴリズム
  • MCMCアルゴリズム(ご指摘のとおり)
  • 確率的近似アルゴリズム
  • シミュレーションされた最尤

彼らが提案するGLMMのその他のアルゴリズムには、次のものがあります。

  • ペナルティ付き準尤度法
  • ラプラス近似
  • PQL /ラプラスとブートストラップバイアス補正

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.