library(lme4)
## Loading required package: Matrix
str(Dyestuff)
## 'data.frame': 30 obs. of 2 variables:
## $ Batch: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 2 2 2 2 2 ...
## $ Yield: num 1545 1440 1440 1520 1580 ...
head(Dyestuff)
## Batch Yield
## 1 A 1545
## 2 A 1440
## 3 A 1440
## 4 A 1520
## 5 A 1580
## 6 B 1540
summary(Dyestuff)
## Batch Yield
## A:5 Min. :1440
## B:5 1st Qu.:1469
## C:5 Median :1530
## D:5 Mean :1528
## E:5 3rd Qu.:1575
## F:5 Max. :1635
str(Dyestuff2)
## 'data.frame': 30 obs. of 2 variables:
## $ Batch: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 2 2 2 2 2 ...
## $ Yield: num 7.3 3.85 2.43 9.57 7.99 ...
summary(Dyestuff2)
## Batch Yield
## A:5 Min. :-0.892
## B:5 1st Qu.: 2.765
## C:5 Median : 5.365
## D:5 Mean : 5.666
## E:5 3rd Qu.: 8.151
## F:5 Max. :13.434
model1 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff)
print(model1)
## Linear mixed model fit by REML ['lmerMod']
## Formula: Yield ~ 1 + (1 | Batch)
## Data: Dyestuff
## REML criterion at convergence: 319.6543
## Random effects:
## Groups Name Std.Dev.
## Batch (Intercept) 42.00
## Residual 49.51
## Number of obs: 30, groups: Batch, 6
## Fixed Effects:
## (Intercept)
## 1528
modelML <- lmer(Yield ~ 1 + (1|Batch), Dyestuff, REML=FALSE)
model2 <- lmer(Yield ~ 1 + (1|Batch), Dyestuff2)
model2
## Linear mixed model fit by REML ['lmerMod']
## Formula: Yield ~ 1 + (1 | Batch)
## Data: Dyestuff2
## REML criterion at convergence: 161.8283
## Random effects:
## Groups Name Std.Dev.
## Batch (Intercept) 0.000
## Residual 3.716
## Number of obs: 30, groups: Batch, 6
## Fixed Effects:
## (Intercept)
## 5.666
modelML2 <- update(model2, REML=FALSE)
modelML2
## Linear mixed model fit by maximum likelihood ['lmerMod']
## Formula: Yield ~ 1 + (1 | Batch)
## Data: Dyestuff2
## AIC BIC logLik deviance df.resid
## 168.8730 173.0766 -81.4365 162.8730 27
## Random effects:
## Groups Name Std.Dev.
## Batch (Intercept) 0.000
## Residual 3.653
## Number of obs: 30, groups: Batch, 6
## Fixed Effects:
## (Intercept)
## 5.666
summary(model2a <- lm(Yield ~ 1, Dyestuff2))
##
## Call:
## lm(formula = Yield ~ 1, data = Dyestuff2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.5576 -2.9006 -0.3006 2.4854 7.7684
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.6656 0.6784 8.352 3.32e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.716 on 29 degrees of freedom
modelML <- lmer(Yield ~ 1|Batch, Dyestuff, REML=FALSE, verbose=1)
## start par. = 0.9787605 fn = 327.7027
## At return
## eval: 18 fn: 327.32706 par: 0.752581
pr01 <- profile(modelML)
## start par. = 49.5101 fn = 327.3277
## At return
## eval: 14 fn: 327.32770 par: 49.4872
## start par. = 49.48721 fn = 327.3983
## At return
## eval: 16 fn: 327.39765 par: 49.3128
## start par. = 49.31277 fn = 327.7334
## At return
## eval: 14 fn: 327.73295 par: 49.1653
## start par. = 49.16527 fn = 328.3147
## At return
## eval: 15 fn: 328.31463 par: 49.1189
## start par. = 49.11889 fn = 329.1383
## At return
## eval: 12 fn: 329.13834 par: 49.1298
## start par. = 49.12978 fn = 330.194
## At return
## eval: 13 fn: 330.19392 par: 49.1718
## start par. = 49.17182 fn = 331.473
## At return
## eval: 16 fn: 331.47292 par: 49.2275
## start par. = 49.22745 fn = 332.9673
## At return
## eval: 14 fn: 332.96727 par: 49.2854
## start par. = 49.28537 fn = 334.6694
## At return
## eval: 15 fn: 334.66933 par: 49.3388
## start par. = 49.33883 fn = 336.5719
## At return
## eval: 14 fn: 336.57187 par: 49.3844
## start par. = 49.38444 fn = 338.6681
## At return
## eval: 15 fn: 338.66809 par: 49.4211
## start par. = 49.42108 fn = 340.9516
## At return
## eval: 15 fn: 340.95158 par: 49.4491
## start par. = 49.5101 fn = 327.3993
## At return
## eval: 16 fn: 327.39752 par: 49.8142
## start par. = 49.81421 fn = 327.8795
## At return
## eval: 13 fn: 327.86376 par: 50.7256
## start par. = 50.72559 fn = 328.7821
## At return
## eval: 16 fn: 328.73668 par: 52.3215
## start par. = 52.32145 fn = 329.9785
## At return
## eval: 20 fn: 329.88256 par: 54.6997
## start par. = 54.69972 fn = 331.2918
## At return
## eval: 16 fn: 331.14029 par: 57.7135
## start par. = 57.71355 fn = 332.4409
## At return
## eval: 16 fn: 332.28660 par: 60.7429
## start par. = 60.74295 fn = 332.754
## At return
## eval: 13 fn: 332.72989 par: 61.9644
## start par. = 37.26035 fn = 327.3319
## At return
## eval: 15 fn: 327.33178 par: 37.1279
## start par. = 37.12788 fn = 327.5477
## At return
## eval: 16 fn: 327.54450 par: 36.2761
## start par. = 36.27612 fn = 328.0507
## At return
## eval: 15 fn: 328.04675 par: 35.2950
## start par. = 35.295 fn = 328.8454
## At return
## eval: 19 fn: 328.83998 par: 34.1111
## start par. = 34.11111 fn = 329.9285
## At return
## eval: 17 fn: 329.92109 par: 32.6666
## start par. = 32.66663 fn = 331.2979
## At return
## eval: 17 fn: 331.28767 par: 30.8755
## start par. = 30.87545 fn = 332.9513
## At return
## eval: 17 fn: 332.93714 par: 28.6059
## Warning in optwrap(optimizer, par = start, fn = function(x)
## dd(mkpar(npar1, : convergence code 3 from bobyqa: bobyqa -- a trust region
## step failed to reduce q
## start par. = 28.60591 fn = 334.8866
## At return
## eval: 15 fn: 334.86688 par: 25.6381
## start par. = 25.63805 fn = 337.102
## At return
## eval: 19 fn: 337.07420 par: 21.5463
## start par. = 21.5463 fn = 339.5958
## At return
## eval: 22 fn: 339.55636 par: 15.2104
## start par. = 37.26035 fn = 327.5303
## At return
## eval: 17 fn: 327.52734 par: 38.0338
## start par. = 38.03385 fn = 328.1681
## At return
## eval: 14 fn: 328.16579 par: 38.7041
## start par. = 38.70406 fn = 329.2428
## At return
## eval: 15 fn: 329.24110 par: 39.2615
## start par. = 39.26146 fn = 330.7484
## At return
## eval: 16 fn: 330.74718 par: 39.7282
## Warning in optwrap(optimizer, par = start, fn = function(x)
## dd(mkpar(npar1, : convergence code 3 from bobyqa: bobyqa -- a trust region
## step failed to reduce q
## start par. = 39.72824 fn = 332.6801
## At return
## eval: 15 fn: 332.67921 par: 40.1225
## Warning in optwrap(optimizer, par = start, fn = function(x)
## dd(mkpar(npar1, : convergence code 3 from bobyqa: bobyqa -- a trust region
## step failed to reduce q
## start par. = 40.12254 fn = 335.0335
## At return
## eval: 15 fn: 335.03290 par: 40.4583
## start par. = 40.45828 fn = 337.8048
## At return
## eval: 12 fn: 337.80435 par: 40.7462
## start par. = 40.74622 fn = 340.9903
## At return
## eval: 12 fn: 340.98999 par: 40.9948
library(lattice)
xyplot(pr01, aspect = 1.3)

confint(pr01)
## 2.5 % 97.5 %
## .sig01 12.19854 84.06305
## .sigma 38.22998 67.65770
## (Intercept) 1486.45150 1568.54849
confint(pr01, level = 0.99)
## 0.5 % 99.5 %
## .sig01 0.00000 113.68769
## .sigma 35.56317 75.66803
## (Intercept) 1465.87401 1589.12602
splom(pr01)

ranef(modelML)
## $Batch
## (Intercept)
## A -16.628222
## B 0.369516
## C 26.974671
## D -21.801446
## E 53.579825
## F -42.494344
str(ranef(modelML))
## List of 1
## $ Batch:'data.frame': 6 obs. of 1 variable:
## ..$ (Intercept): num [1:6] -16.63 0.37 26.97 -21.8 53.58 ...
## - attr(*, "class")= chr "ranef.mer"
dotplot(ranef(modelML, postVar = TRUE))
## Warning in ranef.merMod(modelML, postVar = TRUE): 'postVar' is deprecated:
## please use 'condVar' instead
## $Batch

qqmath(ranef(modelML, postVar=TRUE))
## Warning in ranef.merMod(modelML, postVar = TRUE): 'postVar' is deprecated:
## please use 'condVar' instead
## $Batch
