% NOTE -- ONLY EDIT THE .Rnw FILE!!! The .tex file is
% likely to be overwritten.
\SweaveOpts{engine=R,eps=FALSE,pdf=TRUE,width=10,height=6.5,strip.white=all}
\SweaveOpts{prefix=TRUE,prefix.string=figs/long,include=TRUE}
\setkeys{Gin}{width=\textwidth}
<>=
options(width=65,show.signif.stars=FALSE)
library(lattice)
library(Matrix)
library(lme4)
#lattice.options(default.theme = standard.theme(color = FALSE))
@
\begin{frame}\frametitle{Simple longitudinal data}
\begin{itemize}
\item \emph{Repeated measures} data consist of measurements of a
response (and, perhaps, some covariates) on several \emph{experimental}
(or observational) \emph{units}.
\item Frequently the experimental (observational) unit is
\code{Subject} and we will refer to these units as ``subjects''.
However, the methods described here are not restricted to
data on human subjects.
\item \emph{Longitudinal} data are repeated measures data in which
the observations are taken over time.
\item We wish to characterize the response over time within subjects and
the variation in the time trends between subjects.
\item Frequently we are not as interested in comparing the
particular subjects in the study as much as we are interested in
modeling the variability in the population from which the subjects
were chosen.
\end{itemize}
\end{frame}
\begin{frame}\frametitle{Sleep deprivation data}
\begin{itemize}
\item This laboratory experiment measured the effect of sleep deprivation
on cognitive performance.
\item There were 18 subjects, chosen from the population of interest
(long-distance truck drivers), in the 10 day trial. These subjects were
restricted to 3 hours sleep per night during the trial.
\item On each day of the trial each subject's reaction time was
measured. The reaction time shown here is the average of several
measurements.
\item These data are \emph{balanced} in that each subject is
measured the same number of times and on the same occasions.
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{Reaction time versus days by subject}
\begin{center}
<>=
print(xyplot(Reaction ~ Days | Subject, sleepstudy, aspect = "xy",
layout = c(9,2), type = c("g", "p", "r"),
index.cond = function(x,y) coef(lm(y ~ x))[1],
xlab = "Days of sleep deprivation",
ylab = "Average reaction time (ms)"))
@
\end{center}
\end{frame}
\begin{frame}\frametitle{Comments on the sleep data plot}
\begin{itemize}
\item The plot is a ``trellis'' or ``lattice'' plot where the data
for each subject are presented in a separate panel. The axes are
consistent across panels so we may compare patterns across
subjects.
\item A reference line fit by simple linear regression to the
panel's data has been added to each panel.
\item The aspect ratio of the panels has been adjusted so that a
typical reference line lies about $45^\circ$ on the page. We have
the greatest sensitivity in checking for differences in slopes
when the lines are near $\pm 45^\circ$ on the page.
\item The panels have been ordered not by subject number (which is
essentially a random order) but according to increasing intercept
for the simple linear regression. If the slopes and the
intercepts are highly correlated we should see a pattern across
the panels in the slopes.
\end{itemize}
\end{frame}
\begin{frame}\frametitle{Assessing the linear fits}
\begin{itemize}
\item In most cases a simple linear regression provides an adequate
fit to the within-subject data.
\item Patterns for some subjects (e.g.{} 350, 352 and 371) deviate
from linearity but the deviations are neither widespread nor
consistent in form.
\item There is considerable variation in the intercept (estimated
reaction time without sleep deprivation) across subjects -- 200
ms.{} up to 300 ms.{} -- and in the slope (increase in reaction time
per day of sleep deprivation) -- 0 ms./day up to 20 ms./day.
\item We can examine this variation further by plotting
confidence intervals for these intercepts and slopes. Because we use a
pooled variance estimate and have balanced data, the intervals
have identical widths.
\item We again order the subjects by increasing intercept so we can
check for relationships between slopes and intercepts.
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{95\% conf int on within-subject intercept and slope}
\begin{center}
<>=
print(plot(confint(lmList(Reaction ~ Days | Subject, sleepstudy),
pooled = TRUE), order = 1))
@
\end{center}
These intervals reinforce our earlier impressions of considerable
variability between subjects in both intercept and slope but little
evidence of a relationship between intercept and slope.
\end{frame}
<>=
fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
@
\begin{frame}\frametitle{A preliminary mixed-effects model}
\begin{itemize}
\item We begin with a linear mixed model in which the fixed effects
$[\beta_1,\beta_2]\trans$ are the representative intercept and slope
for the population and the random effects $\bm b_i=[b_{i1},b_{i2}]\trans,
i=1,\dots,18$ are the deviations in intercept and slope associated
with subject $i$.
\item The random effects vector, $\bm b$, consists of the $18$
intercept effects followed by the $18$ slope effects.
\end{itemize}
\begin{center}
<>=
print(image(fm1@Zt,xlab=NULL,ylab=NULL,sub=NULL))
@
\end{center}
\end{frame}
\begin{frame}[fragile]\frametitle{Fitting the model}
<>=
(fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy))
@
\end{frame}
\begin{frame}[fragile]\frametitle{Terms and matrices}
\begin{itemize}
\item The term \code{Days} in the formula generates a model matrix
$\bm X$ with two columns, the intercept column and the numeric
\code{Days} column. (The intercept is included unless
suppressed.)
\item The term \code{(Days|Subject)} generates a vector-valued
random effect (intercept and slope) for each of the $18$ levels of
the \code{Subject} factor.
\end{itemize}
<>=
efm1 <- expand(fm1)
print(image(efm1[["T"]], xlab = NULL, ylab = NULL, sub = "T"),
position = c(0,0,0.27,1), more = TRUE)
print(image(tcrossprod(fm1@A), xlab = NULL, ylab = NULL, sub = "AA'"),
position = c(0.24,0,0.51,1), more = TRUE)
print(image(efm1$P, xlab = NULL, ylab = NULL, sub = "P"),
position = c(0.49,0,0.76,1), more = TRUE)
print(image(fm1@L, xlab = NULL, ylab = NULL, sub = "L", colorkey = FALSE),
position = c(0.73,0,1,1))
@
\end{frame}
\begin{frame}\frametitle{A model with uncorrelated random effects}
\begin{itemize}
\item The data plots gave little indication of a systematic
relationship between a subject's random effect for slope and
his/her random effect for the intercept. Also, the estimated
correlation is quite small.
\item We should consider a model with uncorrelated random effects.
To express this we use two random-effects terms with the same
grouping factor and different left-hand sides. In the formula for
an \code{lmer} model, distinct random effects terms are modeled as
being independent. Thus we specify the model with two distinct
random effects terms, each of which has \code{Subject} as the
grouping factor. The model matrix for one term is intercept only
(\code{1}) and for the other term is the column for \code{Days}
only, which can be written \code{0+Days}. (The expression
\code{Days} generates a column for \code{Days} and an intercept.
To suppress the intercept we add \code{0+} to the expression;
\code{-1} also works.)
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{A mixed-effects model with
independent random effects}
<>=
(fm2 <- lmer(Reaction ~ Days + (1|Subject) + (0+Days|Subject), sleepstudy))
@
\end{frame}
\begin{frame}[fragile]\frametitle{Comparing the models}
\begin{itemize}
\item Model \code{fm1} contains model \code{fm2} in the sense that
if the parameter values for model \code{fm1} were constrained so
as to force the correlation, and hence the covariance, to be zero
and the model re-fit we would get model \code{fm2}.
\item The value \code{0} to which the correlation is constrained is
not on the boundary of the allowable parameter values.
\item In these circumstances a likelihood ratio test and a reference
distribution of a $\chi^2$ on 1 degree of freedom is suitable.
\end{itemize}
<>=
anova(fm2, fm1)
@
\end{frame}
\begin{frame}\frametitle{Conclusions from the likelihood ratio test}
\begin{itemize}
\item Because the large p-value indicates that we would not reject
\code{fm2} in favor of \code{fm1} we prefer the more parsimonious
\code{fm2}.
\item This conclusion is consistent with the AIC (Akaike's
Information Criterion) and the BIC (Bayesian Information
Criterion) values for which ``smaller is better''.
\item When evaluating other parameters we will use model \code{fm2}
and an MCMC sample \code{ss2} from this fitted model (variance and
covariance parameters on the transformed scale). The density
plots and QQ plots from \code{ss2} are similar to those from
\code{ss1a} and we do not repeat them here.
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{Likelihood ratio tests on variance components}
\begin{itemize}
\item As for the case of a covariance, we can fit the model with and
without the variance component and compare the quality of the fits.
\item The likelihood ratio is a reasonable test statistic for
the comparison but the ``asymptotic'' reference distribution of
a $\chi^2$ does not apply because the parameter value being tested
is on the boundary.
\item The p-value computed using the $\chi^2$ reference distribution
should be conservative (i.e. greater than the p-value that would
be obtained through simulation).
\end{itemize}
<>=
fm3 <- lmer(Reaction ~ Days + (1|Subject), sleepstudy)
anova(fm3, fm2)
@
\end{frame}
\begin{frame}[fragile]\frametitle{Values of the conditional modes}
<>=
(rr2 <- ranef(fm2))
@
\end{frame}
\begin{frame}[fragile]\frametitle{Scatterplot of the conditional modes}
\begin{center}
<>=
print(plot(rr2, aspect = 1, type = c("g", "p"))[[1]])
@
\end{center}
\end{frame}
\begin{frame}\frametitle{Comparing within-subject coefficients}
\begin{itemize}
\item For this model we can combine the conditional modes of the
random effects and the estimates of the fixed effects to get
conditional modes of the within-subject coefficients.
\item These conditional modess will be ``shrunken'' towards the
fixed-effects estimates relative to the estimated coefficients
from each subject's data. John Tukey called this ``borrowing
strength'' between subjects.
\item Plotting the shrinkage of the within-subject coefficients
shows that some of the coefficients are considerably shrunken
toward the fixed-effects estimates.
\item However, comparing the within-group and mixed model fitted
lines shows that large changes in coefficients occur in the noisy
data. Precisely estimated within-group coefficients are not
changed substantially.
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{Estimated within-group coefficients and BLUPs}
\begin{center}
<>=
df <- coef(lmList(Reaction ~ Days | Subject, sleepstudy))
cc1 <- as.data.frame(coef(fm2)[["Subject"]])
names(cc1) <- c("A", "B")
df <- cbind(df, cc1)
with(df,
print(xyplot(`(Intercept)` ~ Days, aspect = 1,
x1 = B, y1 = A,
panel = function(x, y, x1, y1, subscripts, ...) {
panel.grid(h = -1, v = -1)
x1 <- x1[subscripts]
y1 <- y1[subscripts]
panel.arrows(x, y, x1, y1, type = "closed", length = 0.1,
angle = 15, ...)
panel.points(x, y,
col = trellis.par.get("superpose.symbol")$col[2])
panel.points(x1, y1)
},
key = list(space = "top", columns = 2,
text = list(c("Mixed model", "Within-group")),
points = list(col = trellis.par.get("superpose.symbol")$col[1:2],
pch = trellis.par.get("superpose.symbol")$pch[1:2]))
)))
@
\end{center}
\end{frame}
\begin{frame}[fragile]\frametitle{Observed and fitted}
\begin{center}
<>=
print(xyplot(Reaction ~ Days | Subject, sleepstudy, aspect = "xy",
layout = c(9,2), type = c("g", "p", "r"),
coef.list = df[,3:4],
panel = function(..., coef.list) {
panel.xyplot(...)
panel.abline(as.numeric(coef.list[packet.number(),]),
col.line = trellis.par.get("superpose.line")$col[2],
lty = trellis.par.get("superpose.line")$lty[2]
)
},
index.cond = function(x,y) coef(lm(y ~ x))[1],
xlab = "Days of sleep deprivation",
ylab = "Average reaction time (ms)",
key = list(space = "top", columns = 2,
text = list(c("Mixed model", "Within-group")),
lines = list(col = trellis.par.get("superpose.line")$col[2:1],
lty = trellis.par.get("superpose.line")$lty[2:1]))))
@
\end{center}
\end{frame}
\begin{frame}[fragile]\frametitle{Prediction intervals on the random effects}
\begin{itemize}
\item For the linear mixed model we can calculate both the means and
the variances of the random-effects conditional on the estimated
values of the model parameters, which allows us to calculate
prediction intervals on the values of individual random
effects.
\item We plot the prediction intervals as
a normal probabity plot so we can see the overall shape of the
distribution of the means and which of the random effects are
``significantly different'' from zero.
\item Note that failure of the conditional means of the random
effects to look like a normal (Gaussian) distribution is not
terribly alarming. It is the ``prior'' distribution of the random
effects that is assumed to be normal. The conditional means or
BLUPs are strongly influenced by the data and may appear non-normal.
\end{itemize}
\end{frame}
\begin{frame}[fragile]\frametitle{Normal probability plot of the
prediction intervals}
\begin{center}
<>=
print(qqmath(ranef(fm1,post=TRUE))[["Subject"]])
@
\end{center}
\end{frame}
\begin{frame}\frametitle{Conclusions from the example}
\begin{itemize}
\item Carefully plotting the data is enormously helpful in
formulating the model.
\item It is relatively easy to fit and evaluate models to data like
these, from a balanced designed experiment.
\item For a linear mixed model the estimates of the fixed effects
typically have a symmetric distribution close to a Gaussian distribution.
\item The distribution of the variance components or the covariances
are not symmetric, which is why we transform these parameters to a
symmetric scale.
\item We use the MCMC sample to create confidence (actually HPD)
intervals on the fixed-effects parameters. We could also use the
parameter estimates and standard errors.
\item The ``estimates'' (actually BLUPs) of the random effects can
be considered as penalized estimates of these parameters in that
they are shrunk towards the origin.
\item Most of the prediction intervals for the random effects
overlap zero.
\end{itemize}
\end{frame}