1 votos

Opciones para la estructura de correlación general en nlme (R)

Estoy tratando de decidir qué estructura de covarianza especificar para un modelo mixto en R. Cuando se comparan dos modelos con una covarianza no estructurada (corSymm) puedo especificar si se permite o no la variación de los coeficientes.

Esta es mi sintaxis

str(lCtr <- lmeControl(opt = "optim"))
m1 <- lme(y ~  Time, random = ~ 1 + Time | id, data=sdata, na.action = na.exclude, 
           correlation = corSymm(fixed = FALSE), control = lCtr)
m2 <-  lme(y ~ Time, random = ~ 1 + Time | id, data=sdata, na.action = na.exclude,
           correlation = corSymm(fixed = TRUE), control = lCtr)
-2*logLik(m1)
-2*logLik(m2)

y resultados

'log Lik.' 1336.108 (df=21)
'log Lik.' 1354.123 (df=6)

Lo que me confunde es por qué obtengo más grados de libertad cuando especifico que los coeficientes pueden variar que de la otra manera. ¿Qué significa que los coeficientes pueden variar?

¿Hay una forma mejor de especificar una covarianza no estructurada para el modelo?

1voto

user164061 Puntos 281

Los grados de libertad se refieren al número de parámetros que se estiman para determinar la probabilidad. Véase df = p + length(coef(object[["modelStruct"]])) + as.integer(!fixSig)) en la última línea del código de la función siguiente.

> getAnywhere(logLik.lme)
A single object matching ‘logLik.lme’ was found
It was found in the following places
  registered S3 method for logLik from namespace nlme
  namespace:nlme
with value

function (object, REML, ...) 
{
    fixSig <- attr(object[["modelStruct"]], "fixedSigma")
    fixSig <- !is.null(fixSig) && fixSig
    od <- object$dims
    p <- od$ncol[[od$Q + 1L]]
    N <- od$N
    estM <- object$method
    if (missing(REML)) 
        REML <- estM == "REML"
    val <- object[["logLik"]]
    if (REML && (estM == "ML")) {
        val <- val + (p * (log(2 * pi) + 1L) + (N - p) * log(1 - 
            p/N) + sum(log(abs(svd.d(object$varFix)))))/2
    }
    if (!REML && (estM == "REML")) {
        val <- val - (p * (log(2 * pi) + 1L) + N * log(1 - p/N) + 
            sum(log(abs(svd.d(object$varFix)))))/2
    }
    structure(val, class = "logLik", nall = N, nobs = N - REML * 
        p, df = p + length(coef(object[["modelStruct"]])) + as.integer(!fixSig))
}
<bytecode: 0x47df7dd8>
<environment: namespace:nlme>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X