Je suis à l'aide d' lmer()
dans le paquet lme4
de l'estimation à effets mixtes modèles. Cela fonctionne bien, mais maintenant je veux lancer le processus d'estimation pour un nombre fixe d'itérations, puis de reprendre le processus en spécifiant les valeurs de départ, tel que calculé par le dernier processus d'estimation.
Conformément à l'aide de ?lmer
c'est possible, en définissant les arguments:
-
start
- ce sont les nouvelles valeurs de départ, et selon l'aide que l'on peut extraire de la valeur dans la fenteST
à partir d'un modèle ajusté et d'utiliser ces derniers, c'est à dire utiliserx@ST
-
maxiter
- fourni comme argument nommé à l'control
Ainsi, par exemple, supposons que je veux pour s'adapter à un lme
à l'aide de l' iris
données, on peut essayer ceci:
library(lme4)
# Fit model with limited number of iterations
frm <- "Sepal.Length ~ Sepal.Width | Species"
x <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=1), model=FALSE)
# Capture starting values for next set of iterations
start <- list(ST=x@ST)
# Update model
twoStep <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=100), model=TRUE,
start=start)
Les travaux de cette. Jetez un oeil à la sortie, où la première colonne est la REML, c'est à dire de l'effet aléatoire du maximum de vraisemblance. Remarque surtout que le REML dans le modèle 2 commence là où le modèle 1 se termine:
> x <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=1), model=FALSE)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518239 1.01025 0.205835
1: 204.22878: 0.518239 1.01025 0.205835
> # Capture starting values for next set of iterations
> start <- list(ST=x@ST)
> # Update model
> twoStep <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=100), model=TRUE,
+ start=start)
0: 204.22878: 0.518239 1.01025 0.205835
1: 201.51667: 0.610272 2.00277 0.286049
2: 201.46706: 0.849203 1.94906 0.358809
3: 201.44614: 0.932371 1.88581 0.482423
4: 201.39421: 1.00909 1.71078 0.871824
5: 201.36543: 1.00643 1.60453 1.01663
6: 201.31066: 1.00208 1.35520 1.27524
7: 201.28458: 1.08227 1.22335 1.35147
8: 201.24330: 1.50333 0.679759 1.31698
9: 201.11881: 1.95760 0.329767 0.936047
Cependant, quand j'ai une autre valeur de maxIters
cela ne fonctionne plus:
x <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=3), model=FALSE)
start <- list(ST=x@ST)
twoStep <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=100), model=TRUE,
start=start)
Notez que le REML valeur redémarre au 264, c'est à dire le début:
> x <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=3), model=FALSE)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518238 1.01025 0.205835
2: 201.94075: 0.00000 1.51757 -1.18259
3: 201.71473: 0.00000 1.69036 -1.89803
3: 201.71473: 0.00000 1.69036 -1.89803
> # Capture starting values for next set of iterations
> start <- list(ST=x@ST)
> # Update model
> twoStep <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=100), model=TRUE,
+ start=start)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518238 1.01025 0.205835
2: 201.94075: 0.00000 1.51757 -1.18259
3: 201.71473: 0.00000 1.69036 -1.89803
4: 201.64641: 0.00000 1.82159 -2.44144
5: 201.63698: 0.00000 1.88282 -2.69497
6: 201.63649: 0.00000 1.89924 -2.76298
7: 201.63649: 4.22291e-08 1.90086 -2.76969
8: 201.63649: 4.22291e-08 1.90086 -2.76969
Question: Comment puis-je redémarrer de manière fiable lmer()
avec des valeurs de départ obtenus à partir d'un déjà monté modèle?
Les informations de Session:
packageVersion("lme4")
[1] ‘0.999999.2'