Nota : esta pregunta es un repost, ya que mi anterior pregunta tenía que ser eliminado por razones legales.
Si bien la comparación de PROC MIXED de SAS con la función lme
de la nlme
paquete en R, me topé con algunos bastante confuso diferencias. Más específicamente, los grados de libertad en las diferentes pruebas difieren entre PROC MIXED
y lme
, y me preguntaba por qué.
Inicio de la siguiente conjunto de datos (código R indica a continuación) :
- ind : factor que indica que el individuo donde se toma la medida
- fac : órgano donde la medición se toma
- trt : factor que indica el tratamiento
- y : algunos continua variable de respuesta
La idea es construir los siguientes modelos :
y ~ trt + (ind)
: ind
como un factor aleatorio
y ~ trt + (fac(ind))
: fac
anidado en ind
como un factor aleatorio
Tenga en cuenta que el último modelo debe causar singularidades, como sólo hay 1 valor de y
para cada combinación de ind
y fac
.
Primer Modelo
En SAS, voy a construir el siguiente modelo :
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM ind /s;
run;
De acuerdo a las tutorías, el mismo modelo en R usando nlme
debe ser :
> require(nlme)
> options(contrasts=c(factor="contr.SAS",ordered="contr.poly"))
> m2<-lme(y~trt,random=~1|ind,data=Data)
Ambos modelos dan las mismas estimaciones de los coeficientes y sus SE, pero cuando la realización de una prueba F para el efecto de la trt
, utilizan una cantidad diferente de grados de libertad :
SAS :
Type 3 Tests of Fixed Effects
Effect Num DF Den DF F Value Pr > F
trt 1 8 0.89 0.3724
R :
> anova(m2)
numDF denDF F-value p-value
(Intercept) 1 8 70.96836 <.0001
trt 1 6 0.89272 0.3812
Pregunta1: ¿Cuál es la diferencia entre ambas pruebas? Ambos están equipados uso de REML, y el uso de los mismos contrastes.
NOTA: he intentado con diferentes valores para el DDFM= opción (incluyendo BETWITHIN, que teóricamente deberían dar los mismos resultados que lme)
El Segundo Modelo
En SAS :
PROC MIXED data=Data;
CLASS ind fac trt;
MODEL y = trt /s;
RANDOM fac(ind) /s;
run;
El modelo equivalente en R debe ser :
> m4<-lme(y~trt,random=~1|ind/fac,data=Data)
En este caso, hay algunas muy extrañas diferencias :
- R encaja sin quejarse, mientras que SAS se observa que el final de hess no es positiva definida (que no me sorprende un poco, ver arriba)
- La SE en los coeficientes difieren (es menor en SAS)
- De nuevo, la prueba F se utiliza una cantidad diferente de DF (de hecho, en SAS que cantidad = 0)
SAS de salida :
Effect trt Estimate Std Error DF t Value Pr > |t|
Intercept 0.8863 0.1192 14 7.43 <.0001
trt Cont -0.1788 0.1686 0 -1.06 .
Salida R :
> summary(m4)
...
Fixed effects: y ~ trt
Value Std.Error DF t-value p-value
(Intercept) 0.88625 0.1337743 8 6.624963 0.0002
trtCont -0.17875 0.1891855 6 -0.944840 0.3812
...
(Tenga en cuenta que en este caso, la F y la prueba de la T son equivalentes y utilizar el mismo DF.)
Curiosamente, cuando se utiliza lme4
en R el modelo ni siquiera caben :
> require(lme4)
> m4r <- lmer(y~trt+(1|ind/fac),data=Data)
Error in function (fr, FL, start, REML, verbose) :
Number of levels of a grouping factor for the random effects
must be less than the number of observations
Pregunta 2: ¿Cuál es la diferencia entre estos modelos con factores anidados? Son ellos especificado correctamente y si es así, ¿cómo viene los resultados son tan diferentes?
Los Datos simulados en R :
Data <- structure(list(y = c(1.05, 0.86, 1.02, 1.14, 0.68, 1.05, 0.22,
1.07, 0.46, 0.65, 0.41, 0.82, 0.6, 0.49, 0.68, 1.55), ind = structure(c(1L,
2L, 3L, 1L, 3L, 4L, 4L, 2L, 5L, 6L, 7L, 8L, 6L, 5L, 7L, 8L), .Label = c("1",
"2", "3", "4", "5", "6", "7", "8"), class = "factor"), fac = structure(c(1L,
1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 2L), .Label = c("l",
"r"), class = "factor"), trt = structure(c(2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Cont",
"Treat"), class = "factor")), .Names = c("y", "ind", "fac", "trt"
), row.names = c(NA, -16L), class = "data.frame")
Los Datos Simulados :
y ind fac trt
1.05 1 l Treat
0.86 2 l Treat
1.02 3 l Treat
1.14 1 r Treat
0.68 3 r Treat
1.05 4 l Treat
0.22 4 r Treat
1.07 2 r Treat
0.46 5 r Cont
0.65 6 l Cont
0.41 7 l Cont
0.82 8 l Cont
0.60 6 r Cont
0.49 5 l Cont
0.68 7 r Cont
1.55 8 r Cont