Stats for

Longitudinal and Growth Models · Generalized and Multilevel Regression

Multilevel Growth-Curve Modeling

Multilevel growth modeling describes each person's change over time and predicts it.

Multilevel growth-curve modeling takes repeated scores from the same people, fits a line through each person's scores over time, and tests how the average line changes and what predicts people's rates of change.

Example

Does a full CBT app reduce anxiety faster than psychoeducation alone? 120 adults with moderate anxiety were randomly assigned to a full CBT app or a psychoeducation-only version and rated their anxiety on the GAD-7 every week for 8 weeks, with some weeks missed.

Same People, Many Occasions + Continuous Time + Continuous Outcome + Missing Occasions Allowed → Multilevel Growth-Curve Modeling
Tests
Average rate of change over time, and differences in it between groups
Observations
Nested
Parametric
Yes
Headline Statistic
t
Effect Size
Feingold's d_{\text{GMA}}
Groups
1+

The Basics

When to Use It

Use it when the same people are measured on a continuous outcome on three or more occasions, you want to describe how scores change over time, and you want to know whether change differs between people or groups. Time is a number, so the occasions can be unequally spaced or fall on different days for different people, and people who miss some occasions still count. Occasions are nested in people, which makes this a multilevel regression with time as the level-1 predictor. For example:

  • Does a full CBT app reduce anxiety faster than psychoeducation alone?
  • Do children's reading fluency scores grow faster in classrooms using a phonics curriculum, measured each term from first to third grade?
  • Does reaction time on a vigilance task slow more across a night of sleep deprivation in older adults than in younger ones?

Vocabulary You Need

Definition Growth Trajectory

The course a person's scores take across repeated measurements, described by a simple curve fitted through them: most often a straight line, with a level (where the line is at a chosen time point) and a slope (how much it rises or falls per unit of time). Each person has their own trajectory; averaging them gives the mean trajectory, and how much they differ gives the individual differences in change. A person's observed scores bounce around their trajectory from occasion to occasion, and a growth model treats that bounce as noise, not change. Trajectories can also curve, level off or change direction, which takes a curved shape such as a quadratic, or a model that lets the data set the shape (freed time loadings, in SEM terms). Glossary →

Definition Random Slope (u_{1j})

A random effect that lets a lower-level predictor's slope differ from group to group: in one classroom prior grades might predict anxiety strongly, in another hardly at all. Group j's slope is the fixed (average) slope plus u₁ⱼ, and the model estimates the variance of those deviations and usually their correlation with the random intercepts. A classroom-level predictor of why slopes differ enters the model as a cross-level interaction. In a growth model the groups are people and the predictor is time, so each person gets their own rate of change, and a person-level predictor of that rate, such as treatment, is the time × predictor interaction. Leaving out a slope variance that really exists can make the standard error of that predictor's fixed effect too small; including one the data can't support often produces a warning that the fit is singular (a variance estimated at zero or a correlation at ±1). Glossary →

Definition Fixed Effect (b)

A coefficient that a multilevel (mixed-effects) model estimates as one value for everyone: the overall intercept, or the slope of a predictor averaged across groups. Fixed effects are read like ordinary regression coefficients (the difference in the predicted outcome per unit of a predictor, holding the others constant), and they're what research questions are usually about. A predictor measured on the groups themselves (a teacher's practice, a clinic's size) can only have a fixed effect, since it doesn't vary inside a group. HLM notation writes them γ (“gamma”); many papers and programs write b or β. On this site β means a standardized coefficient. They contrast with random effects, which describe how groups vary around these averages. Glossary →

Definition Time Coding

The values given to each measurement occasion in a growth model, such as 0, 1, 2, 3 for four equally spaced waves. They fix two things. The slope is the change per one unit of the codes, so 0, 1, 2, 3 for measurements three months apart makes it the change per three months, and 0, 3, 6, 9 would make it the change per month. The intercept is the predicted level where time equals 0, so putting 0 at the first wave makes it the starting level, and putting 0 at the last wave (−3, −2, −1, 0) makes it the level at the end. Recoding time doesn't change how well the model fits, but it changes the intercept's mean and variance, its correlation with the slope, and the effects of any predictors of the intercept. Unequally spaced occasions get codes in proportion to the time that passed. Glossary →

Assumptions

1. Independent Observations The people (or other units) in your study don't influence each other.
What It Means
Each person's data comes from a separate, unconnected source, so knowing one person's scores tells you nothing about anyone else's. In designs that measure people more than once, their own scores are meant to be related; it's different people who must be independent. Methods built for clustered data, such as multilevel models and GEE, also allow members of the same group to be related, as long as the analysis names the grouping; then it's the groups that must be independent.
Applies To
Observations
How to Check
By design, not by a test. Did each person contribute their own data, with no clusters such as roommates, couples, therapy groups or classrooms whose members influence each other? If there are clusters, does the analysis model every one of them?
How Much It Matters
A lot, for the people. Each person's weekly scores are meant to be related, and the random intercept and slope handle that. But different people must be independent. If participants used the app in cohorts that chatted in a shared forum, their changes would be more alike than the model expects, and p would come out too small. Within a person, the model also assumes the week-to-week bounce around their own line is independent from one week to the next. Ratings a few days apart can stay high or low together, which can throw off the standard errors and the variance estimates. Ours barely do: letting the residuals correlate from week to week (AR(1)) gives a correlation of .00 and doesn't improve the fit (χ²(1) = 0.00, p = .96).

If It's Violated

  • Alternative Test Multilevel Regression (HLM). Add a level for the cohort or therapist above the person, with its own random intercept (and slope).
  • Correction Add an autoregressive residual structure (nlme's correlation = corAR1() in R; SPSS MIXED's REPEATED with COVTYPE(AR1)) and compare the fits.
  • Design Change Deliver the program individually, or randomize whole cohorts and analyze at that level.
2. Linear Relationship The relationship between your variables follows a straight line, not a curve.
What It Means
Each person's scores change by about the same amount every week, so a straight line over the weeks describes both the average change and each person's change. Fast early improvement that then levels off breaks it.
Applies To
Relationship
How to Check
Plot each group's weekly means, and a sample of people's own trajectories, against week. Then add a quadratic week term (and, if it helps, its interaction with group) and compare the models with a likelihood-ratio test on maximum-likelihood fits.
How Much It Matters
It matters for what the slope means. A straight line summarizes the average weekly change; if anxiety dropped fast early and then leveled off, the slope averages over that, and a difference in slopes can hide a difference in timing. On our data, adding week² improves the fit a little (χ²(1) = 5.77, p = .016): the decline slows slightly over the 8 weeks. The data can't tell the two groups' curves apart (χ²(1) = 0.37, p = .54), so the difference in straight-line slopes still summarizes how much faster anxiety fell with the full app.

If It's Violated

  • Correction Add week² (with its own random effect if people's curves differ) or use a piecewise slope with a break at the point where change should slow.
  • Transformation Use log(week + 1) when change is fastest at the start and slows steadily.
3. Normality The scores the test relies on are roughly bell-shaped, or your sample is big enough that it doesn't matter.
What It Means
The test's model assumes the scores it relies on are roughly normal: the scores within each group (or the scores themselves, for a one-sample test), the difference scores in a paired design, or the residuals (the errors left around a model's predictions) in a regression. For p-values and confidence intervals, what really matters is that the estimates (such as a mean, a difference between means or a model's coefficients) are roughly normal across repeated samples. A large enough sample usually provides that; how large depends on how skewed the scores are and how extreme their outliers.
Applies To
Residuals
How to Check
Look at a histogram or Q–Q plot for strong skew or extreme outliers. Don't rely on a normality test: with small samples it misses real problems, and with large ones it flags trivial ones.
How Much It Matters
Little for the fixed effects with 120 people: their tests rely on the sample size more than on the shape of the residuals. Floor effects matter more. GAD-7 can't go below 0, and a program that works pushes some people to the floor, which bends their lines and squeezes the residuals. Only 7 of our 810 ratings are 0.

If It's Violated

  • Robust Estimation Sandwich standard errors, computed with people as clusters, keep the fixed-effect tests honest when the residuals or random effects are misspecified.
  • Alternative Test Generalized Estimating Equations (GEE). Estimates the same average slopes with robust standard errors and no model for how people's lines vary, so it can't answer questions about individual differences. It also needs data missing completely at random rather than MAR, so with missed weeks, cluster-robust standard errors on the mixed model are usually the better check; with this many people, the fixed-effect tests rarely need either.
4. Normally Distributed Random Effects The groups' deviations from the average are roughly bell-shaped.
What It Means
A multilevel model treats each group's intercept (and any random slope) as a draw from a normal distribution with a mean of zero and a variance the model estimates. That's what lets it estimate a variance component from a sample of groups and pull unreliable group estimates toward the average. Groups whose deviations are skewed, bimodal or include a few extreme groups break it.
Applies To
Covariance structure
How to Check
Plot the model's predicted group effects (the empirical Bayes estimates, ranef() in R) in a histogram or Q-Q plot and look for strong skew, two humps or a group far from the rest; then look at what makes any outlying group different. With few groups, the plot says little, so reason about how the groups were sampled too.
How Much It Matters
Moderate. The fixed effects and their standard errors are fairly robust to non-normal intercepts and slopes; the random-effect variances, and any predictions for individual people, lean on it more. A subgroup who got worse while most improved would show up as a lump in the predicted slopes; ours show no lump and only slight skew.

If It's Violated

  • Robust Estimation Report sandwich standard errors next to the model-based ones; if they agree, the test of the slope difference doesn't depend on the assumption (the variance estimates still do).
  • Proceed with Caveat Give the SD of people's slopes and the range it implies, and don't over-read predictions for single people.
5. Equal Spread of Residuals Your scores scatter about equally around the predictions, whatever the prediction.
What It Means
The residuals have about the same spread at every predicted value, so the model misses by about as much for people predicted to score low as for people predicted to score high. The opposite, heteroscedasticity, often looks like a funnel. If the model's form is right, unequal spread doesn't bias the coefficients, though it makes them less precise than they could be; it does make their standard errors, and so the p-values and confidence intervals, unreliable.
Applies To
Residuals
How to Check
Plot the residuals against the predicted values (in the SPSS REGRESSION procedure, *ZRESID against *ZPRED; for MIXED, save them with /SAVE=PRED RESID and plot those). A band of even width is fine; a funnel or fan that widens or narrows is not. Don't use a test such as Breusch–Pagan as a gatekeeper: with small samples it misses real problems, and with large ones it flags trivial ones.
How Much It Matters
Some. The model assumes the week-to-week noise (σ²) is the same at every week and in both groups. If ratings got noisier as treatment went on, or in one group, the standard errors of the slopes are off. Ours is similar: the residuals around people's own lines have SDs between 1.5 and 2.0 points at every week, and 1.66 and 1.85 in the two groups.

If It's Violated

  • Correction Fit a separate residual variance for each week or group (nlme's weights = varIdent in R; SPSS MIXED's REPEATED with a diagonal covariance type), and compare the fits.
6. Missing at Random Your missing scores aren't missing because of what they would have been.
What It Means
Methods that use every available score, such as full-information maximum likelihood (FIML) and multiple imputation, can be trusted when whether a score is missing depends only on things that were measured and are included in the analysis, such as earlier scores or a recorded background variable, and not on the missing score itself. Then, if the model is right, their estimates are close to right in large samples. Data missing completely at random, with no pattern at all, meet the assumption too. If people skip a measurement because of the very value they'd have reported, such as students missing a mood survey in the weeks they're most depressed, no method that ignores why they're missing can fully correct for it.
Applies To
Observations
How to Check
It can't be tested from the data, because the scores that would show it are the missing ones. Compare people with and without missing waves on their earlier scores and background variables, include variables that predict missingness in the model, and record why people dropped out. When the risk is serious, check how much the results change under different assumptions about the missing scores (a sensitivity analysis).
How Much It Matters
A lot, if it fails. We have 150 missing weekly ratings of 960 (16%), and 26 people gave their last rating before week 7. The model uses all 810 ratings, and its estimates stay trustworthy (if the model is right) when skipping a week depended only on things it sees, such as a person's earlier ratings and condition. If people skipped the weeks they felt worst, beyond what their earlier ratings show, the declines would look better than they were.

If It's Violated

  • Proceed with Caveat Report how many ratings are missing at each week in each group, and how people who dropped out differed at their last observed week.
  • Robust Estimation Refit under missing-not-at-random scenarios (pattern-mixture models, or imputation with the missing scores made worse by a set amount) and see whether the conclusion holds.
  • Design Change Collect the outcome from people who stop using the app, and record why people drop out.

Limitations

This Is Not Your Test If…

What It Doesn't Tell You

  • Why. Random assignment lets us credit the steeper decline to the full app's content rather than to who chose it, but not to any one part of it: the CBT exercises, the reminders or simply spending more time in the app.
  • Whether it matters. A quarter point a week, 1.7 points on the GAD-7 by week 7, is statistically significant; whether people would feel it is a clinical judgment.
  • Who else, and why data went missing. The estimates hold for adults like these, and they're trustworthy only if missed weeks were missing at random and the model is right. If people skipped the weeks they felt worst, beyond what their earlier ratings show, both groups' declines are too rosy.
  • That change is a straight line. The slopes summarize eight weeks with one number per person. A version that worked faster early and then leveled off could differ in timing in ways a difference in slopes hides. Our declines slow slightly over the 8 weeks, about equally in both groups.

Common Mistakes

  • Don'tRead the condition's main effect as the treatment effect when time is coded 0 at the start.

    InsteadTest the week × condition interaction, the difference in rates of change. The main effect is the difference at week 0, before treatment.

  • Don'tCompare models with different fixed effects using their REML likelihoods.

    InsteadRefit both by maximum likelihood for a likelihood-ratio test, or test the fixed effect with its t and Satterthwaite df from the REML fit.

  • Don'tDrop the random slope because it's awkward, or because a test of it isn't significant.

    InsteadKeep a random slope for time when people plausibly change at different rates. Without it, the standard error of the interaction comes out too small.

  • Don'tDelete everyone with a missed week so you can run a repeated-measures ANOVA.

    InsteadFit the growth model to all available ratings, which stays trustworthy under MAR if the model is right, and describe the missing data.

  • Don'tReport the random-effect correlation without saying where time was coded 0.

    InsteadSay how time was coded. Moving zero from the start to the end of the study changes the intercept's variance and its correlation with the slope.

  • Don'tDescribe a regression coefficient as the effect of raising the predictor.

    InsteadSay the prediction is that much higher per unit of the predictor, on the model's scale (the outcome itself, or its log-odds or log rate in a logistic, ordinal or Poisson model). Causal language needs a design that supports it, such as an experiment.

  • Don'tRead a p-value as the chance that the null hypothesis is true.

    InsteadRead it as: if the null were true, how often data at least this extreme would turn up.

Result Decoder

Significance and Effect Size Guidelines

Benchmarks Significance (p Value)
  • p < .001

    Very strong evidence against the null hypothesis.

  • .001 ≤ p < .01

    Strong evidence against the null hypothesis.

  • .01 ≤ p < .05

    Statistically significant at α = .05. Moderate evidence against the null hypothesis.

  • .05 ≤ p < .10

    Not significant. Weak evidence; sometimes called a “trend.” Treat it as inconclusive.

  • p ≥ .10

    Not significant. Little evidence against the null, which is not the same as evidence of no effect.

These evidence labels are one common convention for describing p in graded language rather than as significant or not; the boundaries are rough guides, not rules, and other authors draw them differently. Muff et al. (2022) argue for this kind of language of evidence over a single cutoff. α is chosen before the analysis, and p never says how big or important an effect is.

More about statistical significance ↓

Benchmarks Effect Size (Feingold's d_{\text{GMA}})
  • |d| < 0.2 Below Small

    Smaller than the conventional small benchmark. Whether an effect this size matters depends on the setting.

  • 0.2 ≤ |d| < 0.5 Small

    A relatively modest standardized difference

  • 0.5 ≤ |d| < 0.8 Medium

    A moderate standardized difference

  • |d| ≥ 0.8 Large

    A relatively substantial standardized difference

Feingold (2009) built this d to sit in the same metric as Cohen's d from a classical before-and-after analysis, so Cohen's (1988) benchmarks can be applied the same way, with the same caution: they're conventions, not measures of clinical importance.

More about effect size ↓

How It's Reported

Equation Form

Example

b = −0.25 points per week, 95% CI [−0.44, −0.05], dGMA = −0.43, t(107.47) = −2.48, p = .015

Table 1. Fixed Effects of a Linear Growth Model for Weekly Anxiety

Example
bSEdftp95% CI
Intercept 12.100.50118.3223.95< .001[11.10, 13.10]
Week −0.310.07107.28−4.36< .001[−0.45, −0.17]
Full app −0.190.71118.56−0.26.792[−1.60, 1.23]
Week × full app −0.250.10107.47−2.48.015[−0.44, −0.05]

Note. Linear mixed model fit by REML, 810 ratings from 120 people. Week is coded 0 (the start) to 7; condition is coded 0 = psychoeducation, 1 = full app. So the intercept is the psychoeducation group's average at week 0, week is its weekly change, and week × full app is how much faster anxiety fell with the full app. df are Satterthwaite's; CIs are 95%.

Table 2. Random Effects

Example
VarianceSDr with Intercept
Intercept (participant) 13.403.66
Week slope (participant) 0.160.40−.22
Residual 3.961.99

Note. Variances and standard deviations of people's own intercepts (anxiety at week 0) and slopes (weekly change) around their group's average line, their correlation, and the week-to-week noise around each person's own line.

Full Text (APA Style)

Example

Anxiety fell in both groups over the 8 weeks: it changed by an estimated −0.31 points a week with psychoeducation, 95% CI [−0.45, −0.17], and by −0.55 points a week with the full app, 95% CI [−0.69, −0.42]. People differed a lot in where they started (SD = 3.66 points) and somewhat in how fast they changed (SD = 0.40 points a week). Anxiety fell faster with the full app: the difference in weekly change was −0.25 points, 95% CI [−0.44, −0.05], an extra 1.73 points over the 7 weeks, dGMA = −0.43 (Feingold, 2009). A linear mixed model with a random intercept and slope for each person, fit by REML with Satterthwaite degrees of freedom, showed the difference in rates of change was statistically significant, t(107.47) = −2.48, p = .015. The groups didn't differ reliably at the start, b = −0.19, 95% CI [−1.60, 1.23]. The model used all 810 available ratings (150 of 960 were missing), which gives valid estimates if missed weeks were missing at random and the model is right.

  • Give both tables: the fixed effects (b, SE, df, t, p and CI for each) and the random effects (SDs, their correlation and the residual SD). A reader can't judge a growth model from one coefficient.
  • Say how time was coded (weeks since the start, 0 to 7), what the intercept therefore means, and how the condition was coded.
  • Name the estimation (REML) and the degrees-of-freedom method (Satterthwaite or Kenward-Roger), and name the software and version.
  • Report how much data were missing, by week and group, and the missing-data assumption (MAR).
  • Translate the interaction into the outcome's units over the whole study (1.73 points over 7 weeks) and give an effect size on the scale of the raw scores.

Reading Each Piece

The equation form above, piece by piece, in this order: how big, how certain, then how surprising.

b = −0.25 points per week Anxiety fell a quarter of a point a week faster with the full app than with psychoeducation alone, on the 0-to-21 GAD-7.
dGMA = −0.43 By week 7, the full-app group's anxiety was an estimated 1.73 GAD-7 points lower than psychoeducation's, relative to where each started: 0.43 of a baseline standard deviation, a small effect by the benchmarks above. Whether 1.7 points on a 21-point scale matters to someone living with anxiety is a clinical question, not a statistical one. Benchmarks ↑
95% CI [−0.44, −0.05] The full app's extra weekly drop is plausibly anywhere from 0.05 to 0.44 points: over 7 weeks, from about a third of a point to about 3 points. The whole range is below zero, but its low end is tiny.
t(107.47) = −2.48 The difference in weekly change is 2.48 standard errors below zero. The 107.47 is the Satterthwaite degrees of freedom, from the next step.
p = .015 If the two versions really lowered anxiety at the same rate (and the model is right), slopes at least this far apart, in either direction, would turn up about 1.5% of the time. That's below .05, so the difference is statistically significant. Benchmarks ↑

Calculations

The Running Example

Example

The anxiety-app study: 120 adults, two versions of an app (full CBT or psychoeducation only), weekly GAD-7 ratings from week 0 to week 7, 810 of 960 possible ratings.

Null Hypothesis:
\gamma_{11} = 0
Alternative (Two-Sided):
\gamma_{11} \neq 0

\gamma_{11} (“gamma one-one”) is the difference between the two versions' average weekly change in anxiety, full app minus psychoeducation, among all adults like these. In the model it's the coefficient on week × condition (the interaction), which our −0.25 points a week estimates. The null says both versions lower anxiety at the same rate (or neither does); it says nothing about whether anxiety falls at all, which is a separate coefficient, the psychoeducation group's slope.

What Your Data Should Look Like

Long format: one row per person per occasion, with columns for the person's ID, the time of that measurement as a number, the score, and any person-level predictors (like condition) repeated on each of their rows. A missed occasion is simply a row that isn't there. Code time in real units from a meaningful zero, such as weeks since the start, so the intercept is the starting level and unequal spacing keeps its real gaps.

Example
participantconditionweekanxiety
1psychoeducation015
1psychoeducation112
1psychoeducation215
1psychoeducation314
1psychoeducation413
1psychoeducation514
… 804 more rows
Week 0Week 1Week 2Week 3Week 4Week 5Week 6Week 7All
Psychoeducation12.13 (4.26) (n = 60)11.74 (4.28) (n = 54)11.33 (4.36) (n = 51)11.45 (4.04) (n = 44)10.37 (4.09) (n = 51)10.06 (4.72) (n = 47)10.12 (4.56) (n = 50)10.11 (5.04) (n = 45)10.96
Full App12.37 (3.81) (n = 60)10.67 (4.32) (n = 49)10.20 (3.84) (n = 49)10.42 (3.99) (n = 53)8.59 (3.67) (n = 49)8.96 (4.43) (n = 51)7.79 (4.01) (n = 48)7.96 (4.53) (n = 49)9.70
All12.2511.2310.7810.899.509.498.988.9910.33

Cell M (SD), condition by week. All gives the marginal means; the grand mean is 10.33.

Week is within subjects: 64 of the 120 participants have a score at every week; 810 of 960 scores are present. Condition is between subjects: n = 60 per condition.

Simulated data.

Download all 810 rows (data.csv)

Napkin Math

The whole test, one idea at a time. Under each heading, a line says why the step matters, and the green note reads the equation in plain English with the anxiety-app study's numbers. Collapse all to read just the headings: they tell the whole story on their own.

  1. 1. Line Up Every Rating by Person and Week

    The model works on long data, one row per rating, with the week as a number. Missed weeks simply have no row, so nobody is dropped for skipping one. Counting the weeks from 0 makes zero mean the start of the program.

    \text{week}_{ti} = 0, 1, 2, \dots, 7

    n_{\text{people}} = 120

    N_{\text{ratings}} = 810

    \text{missing} = 150

    t is the occasion, i the person, and time is counted in weeks. Our 120 people could have given 120 × 8 = 960 ratings; they gave 810, so 150 are missing, and each person has between 1 and 8.

  2. 2. Describe Each Person's Anxiety as a Starting Level and a Weekly Change

    Each person gets their own straight line through their weekly ratings: where it starts and how steeply it falls. This is the model's first level, one line per person. The next step says what the lines depend on.

    y_{ti} = \pi_{0i} + \pi_{1i}\,\text{time}_{ti} + e_{ti}

    \pi_{0i} is person i's own starting level (their anxiety at week 0), \pi_{1i} their own weekly change, and e_{ti} how far their rating at occasion t lands from their line. \text{time}_{ti} is the week. The model fits all 120 lines at once, so people with only a few ratings still count.

  3. 3. Compare the Two Groups' Weekly Change

    The model's second level predicts each person's start and slope from their condition (app = 0 for psychoeducation, 1 for the full app): \pi_{0i} = \gamma_{00} + \gamma_{01}\,\text{app}_i + u_{0i} and \pi_{1i} = \gamma_{10} + \gamma_{11}\,\text{app}_i + u_{1i}, where u_{0i} and u_{1i} are the person's own departures from their group's average. Put these into the first level and you get one regression, the one your software fits. The treatment question, whether anxiety fell faster with the full app, is \gamma_{11}, the coefficient on week × app. The difference at week 0 doesn't answer it: that's before the program had any chance to work.

    \hat{y}_{ti} = \gamma_{00} + \gamma_{01}\,\text{app}_i + \gamma_{10}\,\text{week}_{ti} + \gamma_{11}\,\text{week}_{ti} \times \text{app}_i =12.10 - 0.19\,\text{app}_i - 0.308\,\text{week}_{ti} - 0.247\,\text{week}_{ti} \times \text{app}_i

    = −0.247 points a week

    \gamma_{00} = 12.10 points

    \gamma_{01} = −0.19

    \gamma_{10} = −0.308

    \gamma_{10} + \gamma_{11} = −0.554

    Set app = 0 and you get the psychoeducation group's average line, 12.10 − 0.308 × week: it started at 12.10 on the GAD-7 and dropped 0.308 points a week, 2.15 points by week 7. Set app = 1 and you get the full app's, 11.91 − 0.554 × week: it started 0.19 points lower, a gap that's just noise, and dropped 0.554 points a week. The difference between the two slopes is \gamma_{11} itself, −0.247 points a week, which the model estimates directly.

  4. 4. Measure How Much People Differ in Where They Start and How Fast They Change

    People aren't their group's average line. The variances of the u's, \tau_{00} and \tau_{11}, measure how far people's own starts and slopes spread around it, and their covariance, \tau_{01}, whether people who start higher tend to fall faster. What's left over is the week-to-week bounce around each person's own line.

    SD_{\text{slope}} = \sqrt{\tau_{11}} =\sqrt{0.159}

    = 0.40 points a week

    SD_{\text{intercept}} = \sqrt{13.40} = 3.66

    \rho_{01} = \dfrac{\tau_{01}}{\sqrt{\tau_{00}\,\tau_{11}}} = \dfrac{-0.315}{\sqrt{13.40 \times 0.159}} = −.22

    \sigma = 1.99

    \tau_{00} = 13.40 is the variance of people's starting levels (SD 3.66 points) and \tau_{11} = 0.159 the variance of their weekly slopes (SD 0.40 points a week). Their covariance, −0.315, over √(13.40 × 0.159) gives a correlation of −.22: people who started more anxious tended to fall a little faster, though its 95% interval, −.43 to .05, includes no relationship at all. Around their own lines, ratings bounced by about 1.99 points.

  5. 5. Compare the Difference with How Precisely We Know It

    A difference in slopes means something only relative to its uncertainty. The standard error comes from the whole fitted model: how many ratings each person gave, how much people's slopes vary and how noisy the ratings are. t says how many standard errors the difference is from 0.

    t = \dfrac{b}{SE_b} =\dfrac{-0.2466}{0.0993}

    = −2.48

    SE = 0.099

    b (our \hat{\gamma}_{11}) is the −0.2466-point difference and SE its 0.0993-point standard error. −0.2466 ÷ 0.0993 = −2.48: the difference is 2.48 standard errors below 0.

  6. 6. Account for How Well the Data Pin Down That Uncertainty

    The standard error is itself an estimate, built from the estimated variances, so t isn't judged against a normal curve. Satterthwaite's approximation turns how uncertain the squared standard error is into degrees of freedom: the less certain, the fewer.

    \nu = \dfrac{2\,\left(SE_{b}^{2}\right)^{2}}{\widehat{\text{Var}}\!\left(SE_{b}^{2}\right)} =\dfrac{2 \times 0.0098697^2}{1.81273 \times 10^{-6}}

    = 107.47

    SE^2 = 0.00987

    SE^2 is 0.0993², or 0.0098697, and the variances behind it are uncertain enough that its own variance is 0.00000181273. 2 × 0.0098697² ÷ 0.00000181273 = 107.47 degrees of freedom, a bit fewer than our 120 people.

  7. 7. Measure How Big the Difference Is by the End of the Program

    A quarter point a week is hard to judge. Multiply by the 7 weeks to get the model's estimated extra drop by the end, then divide by how much people differed at the start, which puts it on the same scale as Cohen's d from a simple before-and-after comparison (Feingold, 2009).

    d_{\text{GMA}} = \dfrac{\gamma_{11} \times \text{duration}}{SD_{\text{baseline}}} =\dfrac{-0.2466 \times 7}{4.04}

    = −0.43

    \gamma_{11} \times 7 = −1.73

    SD_{\text{baseline}} = 4.04

    \gamma_{11} is our −0.2466 points a week, the duration is 7 weeks (week 0 to week 7), and SD_{\text{baseline}} is the pooled SD of the two groups' week-0 ratings, 4.04. −0.2466 × 7 = −1.73 points, and −1.73 ÷ 4.04 = −0.43.

  8. 8. Give a Range of Plausible Values for the Difference in Weekly Change

    Instead of one best guess, give the range of differences in slope that fit the data, using the t cutoff for the Satterthwaite degrees of freedom.

    \hat{\gamma} \pm t^{*}_{\nu} \times SE_{\hat{\gamma}} =-0.2466 \pm 1.982 \times 0.0993

    = [−0.44, −0.05]

    t^{*}_{\nu} = 1.982 holds the middle 95% of a t distribution with 107.47 df. 1.982 × 0.0993 = 0.197, so the range is −0.2466 ± 0.197, from −0.44 to −0.05 points a week.

  9. 9. Ask How Surprising the Difference Would Be If Both Versions Worked Equally Well

    Finally, ask how often chance alone would produce slopes at least this far apart if the two versions really lowered anxiety at the same rate.

    p = 2 \times P(T_{df} \le -|t|) =2 \times P(T_{107.47} \le -2.48)

    = .015

    \chi^2_{\text{LRT}}(1) = 6.11

    p_{\text{LRT}} = .013

    P(T_{107.47} \le -2.48) is the chance that a t with 107.47 df lands at or below −2.48. Doubling it counts both directions: .015, about 1 in 68. A likelihood-ratio test comparing maximum-likelihood fits with and without the interaction agrees: χ²(1) = 6.11, p = .013.

Run It in Software

The code below reads the running example's data from data.csv; save it in the same folder you run the code from.

SPSS (version 30, as documented by IBM)
  1. The file is already long, one row per rating. Make a 0/1 code for condition: Transform → Compute Variable, app = condition = 'full_app'.
  2. Analyze → Mixed Models → Linear. Move participant into Subjects, leave Repeated empty, and click Continue.
  3. Move anxiety into Dependent Variable and week and app into Covariate(s).
  4. Fixed: select week and app and click Add with Main Effects; select both again and click Add with Interaction.
  5. Random: check Include intercept, move week into the Model box, set Covariance Type to Unstructured, and move participant into Combinations.
  6. Estimation: Restricted Maximum Likelihood (REML), the default. Statistics: check Parameter estimates for fixed effects and Tests for covariance parameters. Click OK.

Or paste this syntax:

COMPUTE app = (condition = 'full_app').
EXECUTE.

MIXED anxiety WITH week app
  /FIXED=week app week*app | SSTYPE(3)
  /METHOD=REML
  /PRINT=SOLUTION TESTCOV
  /RANDOM=INTERCEPT week | SUBJECT(participant) COVTYPE(UN).

Reading the Output

Read Estimates of Fixed Effects first, the week * app row: the difference in weekly change (Estimate), its 95% confidence interval, then t, its df and Sig. Then read Estimates of Covariance Parameters for how much people's starting levels and slopes vary. SPSS's MIXED uses Satterthwaite degrees of freedom by default.

Estimates of Fixed Effects (Dependent Variable: anxiety)

Parameter Estimate Std. Error df t Sig. 95% CI Lower Upper
Intercept 12.095210 .504981 118.320 23.952 .000 11.095238 13.095183
week -.307636 .070565 107.283 -4.360 .000 -.447518 -.167754
app -.188836 .714517 118.563 -.264 .792 -1.603705 1.226034
week * app -.246570 .099346 107.475 -2.482 .015 -.443503 -.049637

Estimates of Covariance Parameters

Parameter Estimate
Residual 3.956884
Intercept + week [subject = participant] UN (1,1) 13.403275
UN (2,1) -.314893
UN (2,2) .159271

UN (1,1) and UN (2,2) are the variances of people's intercepts and slopes; take square roots for the SDs (3.66 and 0.40). UN (2,1) is their covariance: divide by the product of the SDs for the correlation, −.22. The Information Criteria table gives the −2 Restricted Log Likelihood, 3881.012. To compare models that differ in fixed effects, switch /METHOD to ML for both and subtract their −2 Log Likelihoods (3880.858 − 3874.751 = 6.11, χ² with 1 df).

Output laid out from this page's computed results, not captured from a live run; labels and layout may differ slightly in your version.

R
library(lmerTest)   # loads lme4 and adds Satterthwaite df and p-values

anxiety <- read.csv("data.csv")
anxiety$app <- as.integer(anxiety$condition == "full_app")   # 1 = full app, 0 = psychoeducation

# Random intercept and slope for week, fit by REML (the default).
# bobyqa: lmer's default optimizer stops a little early on these data and warns.
fit <- lmer(anxiety ~ week * app + (week | participant), data = anxiety,
            control = lmerControl(optimizer = "bobyqa"))
summary(fit)

# 95% CIs with Satterthwaite df, for the interaction
contest(fit, c(0, 0, 0, 1), joint = FALSE, confint = TRUE)

# Compare fixed effects with ML: anova() refits both models by ML
anova(fit, update(fit, . ~ . - week:app))
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: anxiety ~ week * app + (week | participant)
   Data: anxiety
Control: lmerControl(optimizer = "bobyqa")

REML criterion at convergence: 3881

Scaled residuals:
    Min      1Q  Median      3Q     Max
-3.3518 -0.5702  0.0028  0.6001  2.8917

Random effects:
 Groups      Name        Variance Std.Dev. Corr
 participant (Intercept) 13.4033  3.6610
             week         0.1593  0.3991   -0.22
 Residual                 3.9569  1.9892
Number of obs: 810, groups:  participant, 120

Fixed effects:
             Estimate Std. Error        df t value Pr(>|t|)
(Intercept)  12.09521    0.50498 118.32039  23.952   <2e-16 ***
week         -0.30764    0.07056 107.28339  -4.360    3e-05 ***
app          -0.18884    0.71452 118.56296  -0.264   0.7920
week:app     -0.24657    0.09935 107.47459  -2.482   0.0146 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
         (Intr) week   app
week     -0.321
app      -0.707  0.227
week:app  0.228 -0.710 -0.325

    Estimate Std. Error       df   t value      lower      upper  Pr(>|t|)
1 -0.2465703 0.09934646 107.4746 -2.481924 -0.4435032 -0.0496375 0.0146157

refitting model(s) with ML (instead of REML)
Data: anxiety
Models:
update(fit, . ~ . - week:app): anxiety ~ week + app + (week | participant)
fit: anxiety ~ week * app + (week | participant)
                              npar    AIC    BIC  logLik -2*log(L)  Chisq Df
update(fit, . ~ . - week:app)    7 3894.9 3927.7 -1940.4    3880.9
fit                              8 3890.8 3928.3 -1937.4    3874.8 6.1072  1
                              Pr(>Chisq)
update(fit, . ~ . - week:app)
fit                              0.01346 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Read the week:app row: the difference in weekly change (−0.247), then the interval from contest() (−0.44 to −0.05), then t, its Satterthwaite df and p. The Random effects block gives the SDs of people's intercepts (3.66) and slopes (0.40), their correlation (−.22) and the residual SD (1.99). Loading lmerTest before fitting is what adds the df and p columns; plain lme4 prints only t. With lmer's default optimizer, this model stops slightly short of the best fit and warns that it "failed to converge"; the df come out 107.46 instead of 107.47. Switching to bobyqa (or allFit() to compare optimizers) removes the warning. anova() of two fits refits both by maximum likelihood, as it should for fixed effects.

Output from a real run: R 4.6.1 (lme4 2.0.6, lmerTest 3.2.1), run 2026-09-29.

Python
import pandas as pd
import statsmodels.formula.api as smf

anxiety = pd.read_csv("data.csv")
anxiety["app"] = (anxiety["condition"] == "full_app").astype(int)

model = smf.mixedlm("anxiety ~ week * app", anxiety,
                    groups=anxiety["participant"], re_formula="~week")
fit = model.fit(reml=True)
print(fit.summary())
           Mixed Linear Model Regression Results
===========================================================
Model:             MixedLM  Dependent Variable:  anxiety
No. Observations:  810      Method:              REML
No. Groups:        120      Scale:               3.9569
Min. group size:   1        Log-Likelihood:      -1940.5059
Max. group size:   8        Converged:           Yes
Mean group size:   6.8
-----------------------------------------------------------
                 Coef.  Std.Err.   z    P>|z| [0.025 0.975]
-----------------------------------------------------------
Intercept        12.095    0.505 23.951 0.000 11.105 13.085
week             -0.308    0.071 -4.359 0.000 -0.446 -0.169
app              -0.189    0.715 -0.264 0.792 -1.589  1.212
week:app         -0.247    0.099 -2.479 0.013 -0.442 -0.052
Group Var        13.403    1.094
Group x week Cov -0.315    0.104
week Var          0.159    0.020
===========================================================

The coefficients and variances match R's. The tests don't quite: statsmodels uses z and the normal distribution, with no Satterthwaite df, and a standard error from a slightly different information matrix, so it gives z = −2.48, p = .013 and a narrower interval where lmerTest gives t(107.47) = −2.48, p = .015. With 120 people the difference is small; with few people, report R's or SPSS's Satterthwaite (or Kenward-Roger) test. Scale is the residual variance (SD 1.99); Group Var, week Var and Group x week Cov are the random intercept and slope variances and their covariance. Check the Converged line: asked to use only L-BFGS (method="lbfgs"), statsmodels stops far from the best fit on these data and says Converged: No; the default tries several optimizers.

Output from a real run: Python 3.9.6 (statsmodels 0.14.6, pandas 2.3.3), run 2026-10-03.

Impact

Effect Size

The raw effect is already in meaningful units: anxiety fell 0.25 GAD-7 points a week faster with the full app. To compare it with other studies, Feingold (2009) multiplies the difference in slopes by the length of the study, which gives the model's estimated difference between the groups at the end (allowing for where they started), and divides by the standard deviation at baseline. That puts it in the same metric as Cohen's d from a classical before-and-after analysis.

d_{\text{GMA}} = \dfrac{\gamma_{11} \times \text{duration}}{SD_{\text{baseline}}} = \dfrac{-0.2466 \times 7}{4.04} = -0.43

By week 7, the full app had taken an extra 1.73 GAD-7 points off, 0.43 of how much people differed at the start: a small effect by convention.

Don't divide by the SD of people's slopes instead (0.40 points a week here). That d answers a different question, how the difference compares with how much people's rates of change vary, and it comes out much larger (0.62) for the same result, so it can't be held against benchmarks built for differences in scores.

The random effects are part of the size story too. The SD of people's slopes, 0.40 points a week, is larger than the 0.25-point difference between the versions: plenty of psychoeducation users improved faster than plenty of full-app users. In the full-app group, whose average is −0.55 points a week, that SD puts the middle 95% of people between about −1.34 (a fast drop) and +0.23 (slowly getting worse). Benchmarks are conventions; whether 1.7 fewer points of anxiety is worth an app is a clinical question.

Analysts usually build up to this model, and the steps on the way give two more sizes. A model with no predictors puts 69% of the variation in weekly ratings between people (the intraclass correlation), so ratings from the same person are far from independent, which is why a multilevel model is needed. A model with week alone gives people's slopes a variance of 0.171; adding condition shrinks it to 0.159. That 7% is a rough measure of how much of the differences in how fast people changed lines up with which version they got: most of the spread is individual.

Benchmarks Feingold's d_{\text{GMA}} at a Glance
Below Small
|d| < 0.2
Small
0.2 ≤ |d| < 0.5
Medium
0.5 ≤ |d| < 0.8
Large
|d| ≥ 0.8

Full benchmarks and caveats ↑

Statistical Significance

p answers one narrow question: if the two groups' average rates of change were really the same, how often would the estimated slopes land at least this far apart, in either direction? In a mixed model the standard error rests on estimated variances, so t is judged against a t distribution with approximate degrees of freedom. Satterthwaite's approximation, fit by REML, keeps the false-positive rate close to .05 even in modest samples (Luke, 2017). Below the conventional α = .05, the result is called statistically significant.

If both versions lowered anxiety at the same rate (and the model is right), slopes at least as far apart as ours, in either direction, would turn up about 1.5% of the time, roughly 1 in 68. A likelihood-ratio test on maximum-likelihood fits gives nearly the same answer, p = .013.

To test a fixed effect with a likelihood-ratio test, fit both models by maximum likelihood; REML likelihoods can only be compared between models with the same fixed effects (Luke, 2017). REML likelihood-ratio tests are fine for random effects, such as whether people's slopes vary at all. For the anxiety-app study they clearly do: dropping the random slope worsens the fit by χ²(2) = 50.93, p < .001 (a conservative test, since a variance can't go below 0).

p is not the probability that the versions work equally well, and it says nothing about how large the difference is. That's what the difference in slopes, its interval and d are for.

Benchmarks p at a Glance
Very Strong
p < .001
Strong
.001 ≤ p < .01
Significant
.01 ≤ p < .05
Weak
.05 ≤ p < .10
Little
p ≥ .10

Strength of evidence against the null hypothesis.

Full benchmarks and caveats ↑

Power and Sample Size

Power is the chance that a study detects an effect that's really there. For a difference in growth, it depends on the difference in slopes, the number of people, and how precisely each person's own slope is measured. That precision depends on how much people's true slopes vary (\tau_{11}), how noisy the weekly ratings are (\sigma^2), and how many occasions there are and how far apart. Longer studies spread time out and more occasions add ratings, and both sharpen each person's slope. When people's true slopes vary more than the noise in one person's estimate, as here, more people help most.

With complete, equally spaced data, the test of the group difference in slopes works like a two-sample t-test on people's own slopes. So a planning d is the difference in slopes divided by the SD of a person's estimated slope, \sqrt{\tau_{11} + \sigma^2 / \sum(t - \bar{t})^2}, and the calculator below finds power for it.

Planning a new trial of the app from our estimates: people's slopes vary with \tau_{11} = 0.159, the noise is \sigma^2 = 3.96, and 8 weekly occasions give \sum(t - \bar{t})^2 = 42. So one person's slope is estimated with an SD of \sqrt{0.159 + 3.96/42} = 0.50 points a week, and a 0.25-point difference is d = 0.49. With 60 people per group, power is about 76% with complete data. A simulation of 1,000 trials per design, generating each person's ratings from our estimates and fitting each trial with lme4 and lmerTest, agreed (77%). We then removed weeks the way our data lost them: from week 1 on, a person was more likely to skip a week the higher their last rating, and a quarter of skips became dropout for good. With that missing data, power fell to about 68% at 60 per group, and reaching 80% took about 80 per group (81%). Losing 16% of the weekly ratings completely at random instead, with no dropout, cost about as much: 71% at 60 per group and 77% at 70.

Missing occasions cost power, and so does dropout, which removes the late occasions that carry the most information about slopes; plan for the missing data you expect. Our variance estimates come from one sample, so plan with cautious values, and for a smaller difference in slopes than you hope for. For designs with unequal spacing, three levels or curved growth, simulate power from the model you'll fit.

Researchers usually aim for at least 80% power. Plan it before collecting data, using the smallest difference in change that would matter. Try it:

Other Info

Follow-Up and Post Hoc Tests

Planned Contrasts

  • Planned Contrasts: Model-based differences at a chosen week are planned contrasts on the fixed effects. The most common is the difference at the end of the study: recode time so week 7 is 0, and the condition coefficient becomes the estimated difference at week 7 (−1.91 points, t(113.83) = −2.34, p = .021). That's the 1.73-point difference in change plus the 0.19-point gap at the start (1.726 + 0.189).

Post Hoc Tests

  • Simple Effects Analysis: After a significant interaction, describe each group's own rate of change. In the anxiety-app study, anxiety fell 0.31 points a week with psychoeducation, t(107.28) = −4.36, p < .001, and 0.55 a week with the full app (the week slope plus the interaction). Recoding condition so the full app is 0 gives that slope its own test.

References

  • Laird, N. M., & Ware, J. H. (1982). Random-effects models for longitudinal data. Biometrics, 38(4), 963–974. https://doi.org/10.2307/2529876
    “Models for the analysis of longitudinal data must recognize the relationship between serial observations on the same unit.” (Abstract)
  • Patterson, H. D., & Thompson, R. (1971). Recovery of inter-block information when block sizes are unequal. Biometrika, 58(3), 545–554. https://doi.org/10.1093/biomet/58.3.545
  • Bates, D., Mächler, M., Bolker, B., & Walker, S. (2015). Fitting linear mixed-effects models using lme4. Journal of Statistical Software, 67(1), 1–48. https://doi.org/10.18637/jss.v067.i01
    “Maximum likelihood or restricted maximum likelihood (REML) estimates of the parameters in linear mixed-effects models can be determined using the lmer function in the lme4 package for R.” (Abstract)
  • Kuznetsova, A., Brockhoff, P. B., & Christensen, R. H. B. (2017). lmerTest package: Tests in linear mixed effects models. Journal of Statistical Software, 82(13), 1–26. https://doi.org/10.18637/jss.v082.i13
    “We have implemented the Satterthwaite's method for approximating degrees of freedom for the t and F tests.” (Abstract)
  • Satterthwaite, F. E. (1946). An approximate distribution of estimates of variance components. Biometrics Bulletin, 2(6), 110–114. https://doi.org/10.2307/3002019
  • Luke, S. G. (2017). Evaluating significance in linear mixed-effects models in R. Behavior Research Methods, 49(4), 1494–1502. https://doi.org/10.3758/s13428-016-0809-y
    “Type 1 error rates are closest to .05 when models are fitted using REML and p-values are derived using the Kenward-Roger or Satterthwaite approximations” (Abstract)
    “if LRTs are to be used to evaluate significance, models must be fitted using maximum likelihood (ML)” (LRTs versus t-as-z)
  • McNeish, D., & Matta, T. (2018). Differentiating between mixed-effects and latent-curve approaches to growth modeling. Behavior Research Methods, 50(4), 1398–1414. https://doi.org/10.3758/s13428-017-0976-5
    “Over the past 20 years, methodological research has shown that the LC and ME approaches are actually nuanced twists on the same idea; they have been shown to converge, and to be mathematically equivalent in many cases.” (Overview)
    “full maximum likelihood estimation leads to downwardly biased estimates of random-effect variances, fixed-effect standard errors, and growth factor mean standard errors when a study includes fewer than about 50 people” (Small sample sizes)
  • Rubin, D. B. (1976). Inference and missing data. Biometrika, 63(3), 581–592. https://doi.org/10.1093/biomet/63.3.581
  • Ibrahim, J. G., & Molenberghs, G. (2009). Missing data methods in longitudinal studies: A review. Test, 18(1), 1–43. https://doi.org/10.1007/s11749-009-0138-x
    “In the ignorable situation, standard longitudinal data software allowing for unbalanced data can be used.” (Section 1, Introduction)
  • Feingold, A. (2009). Effect sizes for growth-modeling analysis for controlled clinical trials in the same metric as for classical analysis. Psychological Methods, 14(1), 43–53. https://doi.org/10.1037/a0014699
    “the correct effect size for treatment efficacy in GMA--the difference between the estimated means of the 2 groups at end of study (determined from the coefficient for the slope difference and length of study) divided by the baseline standard deviation--is not reported in clinical trials” (Abstract)
  • Spitzer, R. L., Kroenke, K., Williams, J. B. W., & Löwe, B. (2006). A brief measure for assessing generalized anxiety disorder: The GAD-7. Archives of Internal Medicine, 166(10), 1092–1097. https://doi.org/10.1001/archinte.166.10.1092
  • Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence Erlbaum Associates.
  • Muff, S., Nilsen, E. B., O'Hara, R. B., & Nater, C. R. (2022). Rewriting results sections in the language of evidence. Trends in Ecology & Evolution, 37(3), 203–210. https://doi.org/10.1016/j.tree.2021.10.009
    “we suggest language of evidence that allows for a more nuanced approach to communicate scientific findings as a simple and intuitive alternative to statistical significance testing” (Abstract)
  • Schielzeth, H., Dingemanse, N. J., Nakagawa, S., Westneat, D. F., Allegue, H., Teplitsky, C., Réale, D., Dochtermann, N. A., Garamszegi, L. Z., & Araya-Ajoy, Y. G. (2020). Robustness of linear mixed-effects models to violations of distributional assumptions. Methods in Ecology and Evolution, 11(9), 1141–1152. https://doi.org/10.1111/2041-210X.13434
    “Model estimates were usually robust to violations of assumptions, with the exception of slight upward biases in estimates of random effect variance if the generating distribution was bimodal but was modelled by Gaussian error distributions.” (Abstract)
  • Williams, M. N., Gómez Grajales, C. A., & Kurkiewicz, D. (2013). Assumptions of multiple regression: Correcting two misconceptions. Practical Assessment, Research & Evaluation, 18(11), 1–14. https://doi.org/10.7275/55hn-wk47
    “ordinary least squares estimates will be unbiased and consistent as long as the errors are independent, but will not be efficient” (p. 9)
  • Hayes, A. F., & Cai, L. (2007). Using heteroskedasticity-consistent standard error estimators in OLS regression: An introduction and software implementation. Behavior Research Methods, 39(4), 709–722. https://doi.org/10.3758/BF03192961
  • Curran, P. J., Obeidat, K., & Losardo, D. (2010). Twelve frequently asked questions about growth curve modeling. Journal of Cognition and Development, 11(2), 121–136. https://doi.org/10.1080/15248371003699969
    “the missing data must be characterized as missing completely at random (e.g., cases are truly missing at random) or missing at random (e.g., cases are missing as a function of measured characteristics such as gender or ethnicity)” (“Can Growth Models Be Estimated with Partially Missing Data?”)

Spot an error? Something still confusing? Tell us at support@statsforpsychology.com.