क्या पदानुक्रमित रैखिक प्रतिगमन करने के लिए मानक एल्गोरिदम (कार्यक्रमों के विपरीत) हैं? क्या लोग आमतौर पर सिर्फ MCMC करते हैं या फिर अधिक विशिष्ट, शायद आंशिक रूप से बंद किए गए, एल्गोरिदम हैं?
क्या पदानुक्रमित रैखिक प्रतिगमन करने के लिए मानक एल्गोरिदम (कार्यक्रमों के विपरीत) हैं? क्या लोग आमतौर पर सिर्फ MCMC करते हैं या फिर अधिक विशिष्ट, शायद आंशिक रूप से बंद किए गए, एल्गोरिदम हैं?
जवाबों:
एक के लिए हार्वे गोल्डस्टीन के पुनरावृत्त सामान्यीकृत न्यूनतम-वर्ग (IGLS) एल्गोरिथ्म है, और यह भी मामूली संशोधन है, प्रतिबंधित पुनरावृत्त सामान्यीकृत न्यूनतम-वर्ग (RIGLS), जो कि भिन्न मापदंडों का निष्पक्ष अनुमान देता है।
ये एल्गोरिदम अभी भी पुनरावृत्त हैं, इसलिए इसे बंद नहीं किया गया है, लेकिन वे MCMC या अधिकतम संभावना से कम्प्यूटेशनल रूप से सरल हैं। आप केवल तब तक पुनरावृति करते हैं जब तक कि पैरामीटर परिवर्तित नहीं हो जाते।
गोल्डस्टीन एच। बहुस्तरीय मिश्रित रैखिक-मॉडल विश्लेषण Iterative Generalized Least-Squares का उपयोग करते हुए। बायोमेट्रिक 1986; 73 (1): 43-56। doi: 10.1093 / बायोमेट्रिक / 73.1.43
गोल्डस्टीन एच। प्रतिबंधित निष्पक्ष धमनीकृत सामान्यीकृत खमीर-वर्ग अनुमान। बायोमेट्रिक 1989; 76 (3): 622-623। doi: 10.1093 / बायोमेट्रिक / 76.3.622
इस और विकल्पों के बारे में अधिक जानकारी के लिए, देखें:
R में lme4 पैकेज पुनरावृत्त कम से कम वर्गों (IRLS) का उपयोग करता है और पुनरावृत्त पुनरावृत्त कम से कम वर्ग (PIRLS) का उपयोग करता है। PDF यहाँ देखें:
lmer()
के lme4
पैकेज में बेस फंक्शन पर विचार करते हैं, तो आपको आमतौर पर C ++ कोड के एक पूरे समूह के माध्यम से पढ़ना होगा। PIRLS के कार्यान्वयन को समझें lmer()
(जो कि हम में से उन लोगों के लिए चुनौतीपूर्ण हो सकता है जो C ++ प्रोग्रामिंग में पारंगत नहीं हैं)।
HLM के लिए "कंप्यूटिंग एल्गोरिदम" के लिए एक और अच्छा स्रोत (हद तक कि आप उन्हें LMM के समान विनिर्देशों के रूप में देखते हैं) होगा:
एलएमएम की गणना के लिए उनके द्वारा सूचीबद्ध एल्गोरिदम में शामिल हैं:
एल्गोरिदम वे GLMM की सूची में शामिल हैं:
GLMM के लिए अन्य एल्गोरिदम है कि वे सुझाव शामिल हैं:
यदि आप 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 )
}