Practica 4
Practica 4
Practica 4
:D
Consideremos ahora un experimento en el que cada observación se agrupa según dos factores.En la figura se muestra un diagrama esquemático de dicho diseño.
Supongamos que un factor se va a modelar como un efecto fijo y el otro como un efecto aleatorio. Entonces, un modelo para la k-ésima observación en el nivel i de efecto fijo A y el nivel j de efecto aleatorio B es
(ec. 4)
donde
2
bj ∼ N (0, α )
b
2
(αb)ij ∼ N (0, σ )
αθ
2
ϵijk ∼ N (0, σ )
Ademas, μ es la media poblacional global, αi son los I efectos fijos para el factor A , y bj representan los J efectos aleatorios para el factor B.
(a) Intente encontrar el modelo más apropiado, teniendo cuidado de examinar los gráficos de verificación del modelo apropiado
In [3]: library(nlme)
data(Machines)
head(Machines, 5)
A nffGroupedData: 5 × 3
Worker Machine score
1 1 A 52.0
2 1 A 52.8
3 1 A 53.1
4 2 A 51.8
5 2 A 52.8
yijk = βj + bi + ϵijk
, ,
i = 1, . . . , 6 j = 1, . . . , 3 k = 1, . . . , 3 ,
In [5]: fm1Machine <- lme( score ~ Machine, data = Machines, random = ~ 1 | Worker )
fm1Machine
Random effects:
Formula: ~1 | Worker
(Intercept) Residual
StdDev: 5.146552 3.161647
Number of Observations: 54
Number of Groups: 6
In [6]: plot(fm1Machine)
estamos buscando un patron de aumento en la dispersion conforme aumentan los fitted values
dicho patron no es evidente en nuestro primer modelo
, ,
i = 1, . . . , 6 j = 1, . . . , 3 k = 1, . . . , 3
Random effects:
Formula: ~1 | Worker
(Intercept)
StdDev: 4.78105
Number of Observations: 54
Number of Groups:
Worker Machine %in% Worker
6 18
In [8]: plot(fm2Machine)
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~1 | Worker) 1 5 296.8782 306.5373 -143.4391 NA NA
fm2Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~1 | Worker/Machine) 2 6 227.6876 239.2785 -107.8438 1 vs 2 71.19063 3.24324e-17
si, la interaccion de la ec. 4 es apropiada y es a la que habiamos llegado desde lme con fm2
(c) De manera similar, pruebe si sería apropiada una estructura de efectos aleatorios más compleja: específicamente una en la que la interacción máquina-trabajador esté correlacionada con la del trabajador.
fm3Machine
Random effects:
Formula: ~Machine | Worker
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 4.0792806 (Intr) MachnB
MachineB 5.8776433 0.484
MachineC 3.6898543 -0.365 0.297
Residual 0.9615766
Number of Observations: 54
Number of Groups: 6
In [17]: plot(fm3Machine)
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~1 | Worker) 1 5 296.8782 306.5373 -143.4391 NA NA
fm3Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~Machine | Worker) 2 10 228.3112 247.6295 -104.1556 1 vs 2 78.56698 1.673209e-15
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm2Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~1 | Worker/Machine) 1 6 227.6876 239.2785 -107.8438 NA NA
fm3Machine lme.formula(fixed = score ~ Machine, data = Machines, random = ~Machine | Worker) 2 10 228.3112 247.6295 -104.1556 1 vs 2 7.37635 0.117287
el modelo fm3, donde la interacción máquina-trabajador está correlacionada con la del trabajador parece ser apropiada en comparacion con el modelo mas simple y se muestra bastante competente respecto al segundo modelo fm2, aunque este se siga
prefiriendo.
(d) Si algún dato parece particularmente problemático en los gráficos de verificación, repita el análisis y vea si las conclusiones cambian.
Machines_new
yijk = βj + bi + ϵijk
In [23]: fm1Machine_new <- lme( score ~ Machine, data = Machines_new, random = ~ 1 | Worker )
fm1Machine_new
Random effects:
Formula: ~1 | Worker
(Intercept) Residual
StdDev: 5.572219 3.08587
Number of Observations: 51
Number of Groups: 6
In [24]: plot(fm1Machine_new)
no
Random effects:
Formula: ~1 | Worker
(Intercept)
StdDev: 4.935489
Number of Observations: 51
Number of Groups:
Worker Machine %in% Worker
6 18
In [26]: plot(fm2Machine_new)
en comparacion con los datos completos, aqui se muestran mas dispersos los residuales, y desde un valor menor de los valores ajustados
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~1 | Worker) 1 5 279.6279 288.9839 -134.81396 NA NA
fm2Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~1 | Worker/Machine) 2 6 196.6804 207.9076 -92.34019 1 vs 2 84.94753 3.063882e-20
pvalue: 3.063882e-20
AIC: 196.6804
--
pvalue anterior: 3.24324e-17
IAC anterior: 239.2785
de manera similar, pruebe si sería apropiada una estructura de efectos aleatorios más compleja: específicamente una en la que la interacción máquina-trabajador esté correlacionada con la del trabajador.
fm3Machine_new
Random effects:
Formula: ~Machine | Worker
Structure: General positive-definite, Log-Cholesky parametrization
StdDev Corr
(Intercept) 4.2288785 (Intr) MachnB
MachineB 5.7741892 0.554
MachineC 3.7552935 -0.396 0.235
Residual 0.6934156
Number of Observations: 51
Number of Groups: 6
In [34]: plot(fm3Machine_new)
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm1Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~1 | Worker) 1 5 279.6279 288.9839 -134.81396 NA NA
fm3Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~Machine | Worker) 2 10 196.3857 215.0977 -88.19285 1 vs 2 93.24222 1.399085e-18
A anova.lme: 2 × 9
call Model df AIC BIC logLik Test L.Ratio p-value
fm2Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~1 | Worker/Machine) 1 6 196.6804 207.9076 -92.34019 NA NA
fm3Machine_new lme.formula(fixed = score ~ Machine, data = Machines_new, random = ~Machine | Worker) 2 10 196.3857 215.0977 -88.19285 1 vs 2 8.294684 0.08136082
mismas conclusiones
(a)Explique cada una de las lineas del código de la función con base en la teoría revisada en el curso
sigma.b <- exp(parameters[1]) #regresa el 1er parámetro a la escala original (desde logaritmo)
sigma <- exp(parameters[2]) #regresa el 2do parámetro a la escala original (desde logaritmo)
ipsi <- c(rep(0, pf), rep(1/sigma.b^2, pr)) #vector de inversas de las varianzas de los efectos fijos y aleatorios
b1 <- solve(crossprod(X1)/sigma^2 + diag(ipsi), t(X1) %*% y/sigma^2) #estimación de los coeficientes de los efectos fijos y aleatorios
ldet <- sum(log(diag(chol(crossprod(Z)/sigma^2 + diag(ipsi[-(1:pf)]))))) #logaritmo del determinante de la matriz de covarianza de los efectos aleatorios
l <- (-sum((y - X1 %*% b1)^2)/sigma^2 - sum(b1^2 * ipsi) - n * log(sigma^2) - pr * log(sigma.b^2) - 2 * ldet - n * log(2 * pi))/2 #log-verosimilitud negativa
attr(l, "b") <- as.numeric(b1) #añade los coeficientes estimados como un atributo de la log-verosimilitud
(c) Utilice la función optim para optimizar la función de verosimilitud (llm) fijando como valores iniciales: parameters = c(0, 0)
1. optim(parameters, llm, X = X, Z = Z, y = y)
2. (function (par)
. fn(par, ...))(c(0, 0))
3. fn(par, ...)
(d) Determine los valores ́ optimos de (σ2b , σ2 ), y compare con los obtenidos en el ejemplo guía correspondiente. ¿A que se deben las posible diferencias numéricas?