Чи існують стандартні алгоритми (на відміну від програм) для ієрархічної лінійної регресії? Люди зазвичай просто роблять MCMC чи є більш спеціалізовані, можливо частково закриті форми, алгоритми?
Чи існують стандартні алгоритми (на відміну від програм) для ієрархічної лінійної регресії? Люди зазвичай просто роблять MCMC чи є більш спеціалізовані, можливо частково закриті форми, алгоритми?
Відповіді:
Існує алгоритм ітеративного узагальненого найменшого квадрата (IGLS) Харві Голдштейна для одного, а також це незначна модифікація, обмежена ітеративна узагальнена найменша квадратика (RIGLS), яка дає неупереджені оцінки параметрів дисперсії.
Ці алгоритми все ще є ітераційними, тому не є закритою формою, але вони обчислювально простіші, ніж MCMC або максимальна ймовірність. Ви просто повторюєте, поки параметри не зближаться.
Гольдштейн Г. Багаторівневий змішаний лінійно-модельний аналіз з використанням ітеративних узагальнених найменших квадратів. Біометріка 1986; 73 (1): 43–56. doi: 10.1093 / біомет / 73.1.43
Гольдштейн Х. Обмежена безпристрасна ітеративна узагальнена оцінка найменших квадратів. Біометріка 1989; 76 (3): 622-623. doi: 10.1093 / біомет / 76.3.622
Докладніше про це та альтернативи див. Наприклад:
Пакет lme4 в R використовує ітеративно переосмислені найменші квадрати (IRLS) та пенізовані ітераційно повторно зважені найменші квадрати (PIRLS). Дивіться PDF тут:
lmer()
функцію в lme4
пакеті R, вам, як правило, доведеться прочитати цілу купу коду C ++, щоб зрозуміти реалізацію PIRLS в lmer()
(що може бути складним для тих, хто з нас не так добре розбирається в програмуванні на C ++).
Ще одним хорошим джерелом для "обчислювальних алгоритмів" для HLM (знову ж таки настільки, наскільки ви розглядаєте їх як подібні специфікації, як LMM):
Перелічені ними алгоритми для обчислення LMM включають:
Алгоритми, які вони перераховують для GLMM, включають:
Інші алгоритми для GLMM, які вони пропонують, включають:
Якщо ви вважаєте HLM типом лінійної змішаної моделі, ви можете розглянути алгоритм ЕМ. Сторінка 22-23 наступних приміток курсу вказує, як реалізувати класичний алгоритм ЕМ для змішаної моделі:
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 )
}