Within-Subject ANOVA, G1 G2 G3 Repeated Grades, Pairwise Changes and Effect Size
Repeated Measures ANOVA: Formula, Interpretation, SPSS, Python, R and Excel Guide
Repeated Measures ANOVA tests whether the same subjects have different mean scores across three or more repeated measurements. In this worked example, the repeated measures are G1, G2 and G3 grade scores for the same students. The mean profile rises from G1 to G2 and again from G2 to G3, the overall repeated-measures effect is statistically significant, and the strongest change is from G1 to G3.
Google AdSense top placement reserved here
Quick Answer: Repeated Measures ANOVA Result
The worked Repeated Measures ANOVA compares the same students across three repeated grade outcomes: G1, G2 and G3. The overall mean profile increases from about 11.40 at G1 to about 11.57 at G2 and about 11.91 at G3.
The overall repeated-measures p-value is 4.637e-16, which is far below alpha = .05. The Bonferroni-adjusted paired comparisons are also significant: G2 − G1 p = 0.01002, G3 − G1 p = 1.035e-11, and G3 − G2 p = 1.408e-10. The effect-size chart reports partial eta squared = 0.053, while eta squared and omega squared are both about 0.005.
Final interpretation: The repeated grade means are not equal. G3 is higher than G2, G2 is higher than G1, and the largest average improvement is from G1 to G3. The repeated-measures effect is statistically significant, but the effect-size chart shows a modest practical effect rather than a large one.
Important reporting point: Repeated Measures ANOVA is used because G1, G2 and G3 are measured on the same subjects. This is not the same as a regular one-way ANOVA, where the groups are independent.
Table of Contents
- What Is Repeated Measures ANOVA?
- Repeated Measures ANOVA Formula
- Repeated Measures ANOVA Hypotheses
- Dataset and Repeated Measures Variables Used
- SPSS Output Interpretation for Repeated Measures ANOVA
- Python Chart-by-Chart Interpretation
- R Chart-by-Chart Validation
- SPSS, R, Python and Excel Workflows
- Code Blocks for Repeated Measures ANOVA
- APA Reporting Wording
- Common Mistakes
- When to Use Repeated Measures ANOVA
- Downloads and Resources
- Related Guides
- FAQs
What Is Repeated Measures ANOVA?
Repeated Measures ANOVA is an ANOVA test for comparing three or more related means measured on the same subjects. It is used when each participant contributes a score at every repeated time point or condition.
In this example, each student has three grade measurements: G1, G2 and G3. Because these repeated scores belong to the same students, they are correlated. The correlation matrix confirms this: G1–G2 = 0.86, G1–G3 = 0.83 and G2–G3 = 0.92.
The test asks whether the average repeated-measure profile is flat or whether at least one repeated measurement has a different mean. Here, the mean profile is not flat. It rises from G1 to G2 and rises more strongly from G2 to G3.
Simple definition: Repeated Measures ANOVA compares related means from the same subjects. In this example, it tests whether the same students have equal average scores on G1, G2 and G3.
Repeated Measures ANOVA connects naturally with Mixed ANOVA, Mauchly’s Test of Sphericity, Greenhouse-Geisser Correction, Huynh-Feldt Correction, F Distribution, Eta Squared, Omega Squared, Cohen’s F Formula, and ANOVA Effect Size.
Repeated Measures ANOVA Formula
A repeated-measures model separates the outcome into a subject component, a repeated-measure component and residual error. The subject component is important because every subject is measured more than once.
Here, Yij is the score for subject i at repeated measure j. The term μ is the grand mean, τj is the repeated-measure effect, si is the subject effect, and eij is residual error.
F Statistic Formula
The repeated-measures F statistic compares variation explained by repeated time or condition with the appropriate within-subject error term. Because the same subjects are measured repeatedly, the error term is not the same as an independent-groups ANOVA error term.
Effect Size Formula
The effect-size chart reports partial eta squared = 0.053. This means the repeated-measure factor explains a modest portion of the effect-plus-error variation. The same chart reports eta squared and omega squared near 0.005, which are more conservative practical-size summaries.
| Quantity | Value | Meaning | Interpretation |
|---|---|---|---|
| G1 mean | 11.40 | First repeated grade mean. | Lowest mean point. |
| G2 mean | 11.57 | Second repeated grade mean. | Slightly above G1. |
| G3 mean | 11.91 | Final repeated grade mean. | Highest mean point. |
| Overall p-value | 4.637e-16 | Overall repeated-measures test. | Reject equal repeated means. |
| Partial eta squared | 0.053 | Effect-size estimate. | Modest within-subject effect. |
| Omega squared | 0.005 | Conservative effect-size estimate. | Very small to small practical effect. |
Repeated Measures ANOVA Hypotheses
The null hypothesis says that the repeated-measure means are equal. The alternative hypothesis says that at least one repeated mean is different.
| Hypothesis | Statistical Meaning | Plain Interpretation |
|---|---|---|
| Null hypothesis | μG1 = μG2 = μG3 | The same students have equal mean scores across G1, G2 and G3. |
| Alternative hypothesis | At least one repeated mean differs. | At least one grade time point has a different mean. |
| Decision rule | Reject H0 when p < .05. | The overall p-value is far below .05. |
Decision for this example: Reject the equal repeated-means null hypothesis. The overall p-value is 4.637e-16, and the mean profile rises from G1 to G2 to G3.
Dataset and Repeated Measures Variables Used
The worked example uses student grade variables as repeated measurements. Each subject has scores for G1, G2 and G3. These repeated measures are not independent groups; they are repeated observations from the same subjects.
| Variable | Role | Mean Pattern | Interpretation |
|---|---|---|---|
| G1 | Repeated measure 1 | Mean about 11.40 | First grade measurement and lowest mean. |
| G2 | Repeated measure 2 | Mean about 11.57 | Second grade measurement and slightly higher than G1. |
| G3 | Repeated measure 3 | Mean about 11.91 | Final grade measurement and highest mean. |
| Subject ID | Repeated-measure identifier | Same student across measurements | Links G1, G2 and G3 within the same subject. |
Pairwise Change Summary
| Comparison | Mean Change | Adjusted p-value | Interpretation |
|---|---|---|---|
| G2 − G1 | 0.17 | 0.01002 | Small but statistically significant increase. |
| G3 − G1 | 0.51 | 1.035e-11 | Largest and strongest increase. |
| G3 − G2 | 0.34 | 1.408e-10 | Clear increase from second to final grade. |
The repeated-measure correlation matrix shows strong tracking across grades. G2 and G3 have the strongest correlation at 0.92, followed by G1 and G2 at 0.86 and G1 and G3 at 0.83. This confirms that students’ scores are strongly related across the repeated grade sequence.
For supporting concepts, review Descriptive Statistics, Mean Median and Mode, Standard Deviation, Variance, Confidence Interval, P Value, and Null and Alternative Hypothesis.
Google AdSense middle placement reserved here
SPSS Output Interpretation for Repeated Measures ANOVA
The SPSS output PDF should be read in a structured order. Start with the within-subject factor definition, then the descriptive statistics, then Mauchly’s test of sphericity, then the tests of within-subject effects, pairwise comparisons, effect size and residual diagnostics.
SPSS Reading Order
| SPSS Output Area | What to Read | Why It Matters |
|---|---|---|
| Within-subject factor | Repeated factor with three levels: G1, G2, G3. | Confirms the repeated-measures design. |
| Descriptive statistics | Mean scores for G1, G2 and G3. | Shows the direction of the repeated-measure effect. |
| Mauchly’s test | Sphericity assumption test. | Determines whether corrected results should be used. |
| Tests of within-subject effects | F statistic and p-value for the repeated factor. | Tests whether the repeated means differ. |
| Pairwise comparisons | Bonferroni-adjusted differences among G1, G2 and G3. | Shows which repeated measures differ. |
| Effect size | Partial eta squared or related effect-size values. | Shows the practical size of the repeated effect. |
| Diagnostics | Residual plots and Q-Q plot. | Shows model-checking context. |
SPSS Result Summary
| Output Item | Value | Interpretation |
|---|---|---|
| Overall repeated effect | p = 4.637e-16 | G1, G2 and G3 means are not equal. |
| G2 − G1 | Mean change = 0.17, p = 0.01002 | Small but significant increase. |
| G3 − G1 | Mean change = 0.51, p = 1.035e-11 | Largest repeated-measure increase. |
| G3 − G2 | Mean change = 0.34, p = 1.408e-10 | Final grade is significantly higher than G2. |
| Partial eta squared | 0.053 | Modest within-subject effect size. |
| Correlations | 0.83 to 0.92 | Repeated grade scores track strongly within subjects. |
The SPSS interpretation should emphasize the repeated nature of the data. Because the same subjects contribute G1, G2 and G3, the analysis controls for stable subject-to-subject differences. The significant result means the average within-subject grade profile changes across repeated measurements.
SPSS interpretation summary: The repeated-measures effect is statistically significant, p = 4.637e-16. G3 is significantly higher than G1 and G2, and G2 is significantly higher than G1. The partial eta squared value of 0.053 shows a modest repeated-measure effect.
Python Chart-by-Chart Interpretation
The Python chart sequence explains Repeated Measures ANOVA through mean profiles, individual subject profiles, repeated-measure distributions, pairwise changes, p-value decisions, effect sizes, repeated-measure correlations and residual diagnostics.
Python Chart 1: Repeated Measures Mean Profile

The mean profile chart shows a steady upward trend. The mean is about 11.40 at G1, about 11.57 at G2 and about 11.91 at G3.
The shaded confidence band shows uncertainty around the repeated-measure means. The line still moves upward across the sequence, which supports the conclusion that the repeated grade profile is not flat.
Python Chart 2: Individual Subject Profiles

The individual profile chart shows that students do not all follow exactly the same path. Some lines rise, some stay close to flat, and a few show strong changes across repeated measures.
The bold overall line still rises from G1 to G3. This means the average repeated-measure trend is upward even though individual students vary around that pattern.
Python Chart 3: Distribution by Repeated Measure

The boxplots show that the distributions shift upward from G1 and G2 toward G3. G3 has the highest central position, while G1 and G2 are slightly lower.
Low outlying values are visible, especially around zero for some grade measures. These low values help explain why the residual Q-Q plot later shows lower-tail departure.
Python Chart 4: Pairwise Mean Changes

The pairwise change chart shows a mean increase of 0.17 from G1 to G2, 0.51 from G1 to G3 and 0.34 from G2 to G3.
The largest change is from G1 to G3, which makes sense because it spans the full repeated-measure sequence. The G2 to G3 change is also clear, while G1 to G2 is smaller but still positive.
Python Chart 5: p-value Decision Summary

The p-value decision chart shows that the overall repeated effect has p = 4.637e-16. The paired comparisons are also below alpha = .05: G2 − G1 p = 0.01002, G3 − G1 p = 1.035e-11 and G3 − G2 p = 1.408e-10.
The result is not borderline. The repeated grade means differ overall, and every pairwise comparison is statistically significant after adjustment.
Python Chart 6: Effect Size Summary

The effect-size chart reports eta squared about 0.005, partial eta squared about 0.053 and omega squared about 0.005. Partial eta squared is the largest because it uses an effect-plus-error denominator.
The practical interpretation should be careful. The repeated-measures effect is statistically strong, but the effect sizes show that the average grade increase is modest rather than large.
Python Chart 7: Repeated Measure Correlation Matrix

The correlation matrix shows strong positive relationships among the repeated grade variables. G1 and G2 correlate 0.86, G1 and G3 correlate 0.83, and G2 and G3 correlate 0.92.
The strongest relationship is between G2 and G3. This supports the repeated-measures design because the same students’ scores track strongly over time.
Python Chart 8: Residuals vs Fitted Values

The residuals-versus-fitted chart shows vertical bands because the model predicts repeated-measure means. Most residuals are distributed around zero, but some negative residuals fall below -10.
This plot shows that the model captures the mean pattern, but some individual observations are much lower than their fitted repeated-measure mean. The final report should include this diagnostic caution.
Python Chart 9: Residual Q-Q Plot

The residual Q-Q plot shows visible departure from the reference line, especially in the lower tail. The middle residuals follow the general direction more closely than the extreme lower residuals.
This means residual normality is approximate rather than perfect. The repeated-measures result is statistically clear, but the diagnostics should be described honestly.
R Chart-by-Chart Validation
The R validation charts repeat the same workflow in a second software environment. They confirm the repeated-measure mean profile, individual subject variation, distribution pattern, pairwise changes, p-value decision, effect-size summary, correlation matrix and residual diagnostics.
R Chart 1: Repeated Measures Mean Profile

The R mean profile confirms the Python result. The average grade profile increases from G1 to G2 and reaches its highest point at G3.
This software-to-software agreement strengthens the conclusion that the repeated-measure effect is a real feature of the data.
R Chart 2: Individual Subject Profiles

The R individual profile chart confirms that student-level paths vary. The overall average trend still moves upward, even though individual students follow different patterns.
This chart is important because repeated-measures data always contain both average change and individual change variation.
R Chart 3: Distribution by Repeated Measure

The R distribution chart confirms that G3 is centered higher than G1 and G2. The visible low values also match the Python distribution chart.
The distribution pattern supports the repeated-measures result and explains why residual diagnostics show lower-tail behavior.
R Chart 4: Pairwise Mean Changes

The R pairwise change chart confirms the same mean differences: G2 − G1 is about 0.17, G3 − G1 is about 0.51 and G3 − G2 is about 0.34.
The largest repeated-measure change is again G3 minus G1, confirming the practical direction of the result.
R Chart 5: p-value Decision Summary

The R p-value chart confirms that the overall repeated effect and all pairwise repeated comparisons are statistically significant at alpha = .05.
This validates the formal decision across workflows. The repeated means differ overall, and the post-analysis pairwise comparisons explain where the differences occur.
R Chart 6: Effect Size Summary

The R effect-size chart confirms that partial eta squared is about 0.053, while eta squared and omega squared are about 0.005.
This repeated validation supports a careful wording: the result is statistically significant, but the practical effect size is modest.
R Chart 7: Repeated Measure Correlation Matrix

The R correlation matrix confirms strong repeated-measure correlations. G2 and G3 have the strongest relationship, while G1 is also strongly related to both later grade measures.
This confirms that G1, G2 and G3 are related repeated measurements from the same subjects, which supports using repeated-measures ANOVA instead of independent-groups ANOVA.
R Chart 8: Residuals vs Fitted Values

The R residuals-versus-fitted chart confirms the same diagnostic pattern as Python. Most residuals are centered around zero, but there are lower negative residuals.
This diagnostic supports transparent reporting. The model shows a clear repeated-measure effect, but residual behavior is not perfectly ideal.
R Chart 9: Residual Q-Q Plot

The R Q-Q plot confirms the lower-tail departure visible in Python. The central residuals are closer to the reference direction than the extreme lower residuals.
The final diagnostic message is consistent across software: the repeated-measures result is strong, but residual normality should be described as approximate.
Google AdSense in-content placement reserved here
SPSS, R, Python and Excel Workflows for Repeated Measures ANOVA
The same Repeated Measures ANOVA workflow can be reproduced in SPSS, R, Python and Excel. SPSS uses the GLM Repeated Measures menu. R can use repeated-measures ANOVA functions or long-format models. Python can use long-format repeated-measures tools. Excel can calculate supporting summaries and paired changes, but SPSS, R or Python is better for the formal repeated-measures test.
SPSS Workflow
| Step | SPSS Menu or Syntax | Purpose |
|---|---|---|
| Open dataset | File > Open > Data | Load G1, G2 and G3. |
| Run repeated measures | Analyze > General Linear Model > Repeated Measures | Define the within-subject factor. |
| Name factor | Time or Grade | Represent G1, G2 and G3 as repeated levels. |
| Number of levels | 3 | Use three repeated measurements. |
| Assign variables | G1, G2, G3 | Connect observed columns to repeated levels. |
| Request options | Descriptives, effect size, pairwise comparisons | Get means, p-values and partial eta squared. |
| Check sphericity | Mauchly’s test and corrections | Decide whether corrected p-values are needed. |
| Export output | OUTPUT EXPORT | Save SPSS PDF output. |
R Workflow
| Step | R Action | Purpose |
|---|---|---|
| Read data | read.csv("dataset.csv") | Load repeated grade variables. |
| Add subject ID | row_number() | Create subject identifier. |
| Convert to long format | pivot_longer(G1:G3) | Make one score column and one time column. |
| Run RM ANOVA | aov(score ~ time + Error(id/time)) | Test repeated-measure effect. |
| Pairwise tests | pairwise.t.test(..., paired = TRUE) | Compare G1, G2 and G3. |
| Diagnostics | Residual plots and Q-Q plot | Check model assumptions. |
Python Workflow
| Step | Python Action | Purpose |
|---|---|---|
| Read data | pandas.read_csv() | Load G1, G2 and G3. |
| Create subject ID | df.index or row number | Identify repeated observations. |
| Reshape long | pd.melt() | Convert wide repeated columns into long format. |
| Run RM ANOVA | AnovaRM() | Test within-subject time effect. |
| Pairwise tests | Paired t tests with Bonferroni adjustment | Compare repeated pairs. |
| Charts | Mean profile, individual profiles and diagnostics | Build visual interpretation. |
Excel Workflow
| Excel Task | Formula or Tool | Purpose |
|---|---|---|
| Prepare data | Columns for G1, G2 and G3 | Keep repeated measures on the same row. |
| Calculate means | =AVERAGE() | Get G1, G2 and G3 mean scores. |
| Calculate paired changes | =G2-G1, =G3-G1, =G3-G2 | Summarize within-subject differences. |
| Run paired tests | =T.TEST(range1,range2,2,1) | Pairwise follow-up comparisons. |
| Create charts | Line chart, boxplots and correlation matrix | Visualize repeated-measure patterns. |
| Formal RM ANOVA | Use SPSS, R or Python | Excel is limited for full repeated-measures ANOVA. |
Code Blocks for Repeated Measures ANOVA
SPSS Syntax for Repeated Measures ANOVA
* Repeated Measures ANOVA in SPSS.
* Repeated measures: G1, G2, G3.
TITLE "Repeated Measures ANOVA: G1, G2 and G3".
GLM G1 G2 G3
/WSFACTOR=GradeTime 3 Polynomial
/METHOD=SSTYPE(3)
/PRINT=DESCRIPTIVE ETASQ
/EMMEANS=TABLES(GradeTime) COMPARE ADJ(BONFERRONI)
/PLOT=PROFILE(GradeTime)
/CRITERIA=ALPHA(.05)
/WSDESIGN=GradeTime.
OUTPUT EXPORT
/CONTENTS EXPORT=VISIBLE
/PDF DOCUMENTFILE="repeated_measures_anova_output.pdf".Python Code for Repeated Measures ANOVA
import pandas as pd
from statsmodels.stats.anova import AnovaRM
from scipy import stats
from itertools import combinations
df = pd.read_csv("dataset.csv")
for col in ["G1", "G2", "G3"]:
df[col] = pd.to_numeric(df[col], errors="coerce")
wide = df[["G1", "G2", "G3"]].dropna().copy()
wide["subject_id"] = range(1, len(wide) + 1)
long = wide.melt(
id_vars="subject_id",
value_vars=["G1", "G2", "G3"],
var_name="time",
value_name="score"
)
# Repeated Measures ANOVA
rm_model = AnovaRM(
data=long,
depvar="score",
subject="subject_id",
within=["time"]
).fit()
print(rm_model)
# Means
means = long.groupby("time")["score"].mean()
print(means)
# Pairwise paired t tests with Bonferroni adjustment
pairs = list(combinations(["G1", "G2", "G3"], 2))
m = len(pairs)
for a, b in pairs:
t_stat, p_value = stats.ttest_rel(wide[b], wide[a])
p_adj = min(p_value * m, 1.0)
mean_change = (wide[b] - wide[a]).mean()
print(f"{b} - {a}: mean change = {mean_change:.3f}, Bonferroni p = {p_adj:.6g}")
# Correlation matrix
print(wide[["G1", "G2", "G3"]].corr())
# Residuals around repeated-measure means
long["fitted"] = long.groupby("time")["score"].transform("mean")
long["residual"] = long["score"] - long["fitted"]
print(long.head())R Code for Repeated Measures ANOVA
# Repeated Measures ANOVA in R
library(tidyverse)
df <- read.csv("dataset.csv")
df$G1 <- as.numeric(df$G1)
df$G2 <- as.numeric(df$G2)
df$G3 <- as.numeric(df$G3)
wide <- df %>%
select(G1, G2, G3) %>%
drop_na() %>%
mutate(subject_id = row_number())
long <- wide %>%
pivot_longer(
cols = c(G1, G2, G3),
names_to = "time",
values_to = "score"
)
# Repeated Measures ANOVA
model <- aov(score ~ time + Error(subject_id/time), data = long)
summary(model)
# Repeated-measure means
long %>%
group_by(time) %>%
summarise(
n = n(),
mean = mean(score),
sd = sd(score),
.groups = "drop"
)
# Bonferroni-adjusted pairwise paired t tests
pairwise.t.test(
x = long$score,
g = long$time,
paired = TRUE,
p.adjust.method = "bonferroni"
)
# Correlation matrix
cor(wide[, c("G1", "G2", "G3")])
# Residual diagnostics
long <- long %>%
group_by(time) %>%
mutate(
fitted = mean(score),
residual = score - fitted
) %>%
ungroup()
qqnorm(long$residual)
qqline(long$residual)Excel Formulas for Repeated Measures ANOVA Support
Step 1:
Keep repeated measures on the same row:
Subject ID | G1 | G2 | G3
Step 2:
Calculate repeated-measure means:
G1 mean = AVERAGE(G1_range)
G2 mean = AVERAGE(G2_range)
G3 mean = AVERAGE(G3_range)
Step 3:
Calculate pairwise changes:
G2 - G1 = G2_cell - G1_cell
G3 - G1 = G3_cell - G1_cell
G3 - G2 = G3_cell - G2_cell
Step 4:
Calculate average changes:
=AVERAGE(change_range)
Step 5:
Run paired t tests:
=T.TEST(G2_range, G1_range, 2, 1)
=T.TEST(G3_range, G1_range, 2, 1)
=T.TEST(G3_range, G2_range, 2, 1)
Step 6:
Apply Bonferroni adjustment:
Adjusted p = raw p * number_of_pairwise_tests
Step 7:
Create mean profile:
Insert line chart using G1, G2 and G3 means.
Step 8:
Formal Repeated Measures ANOVA:
Use SPSS, R or Python for the full within-subject ANOVA table, sphericity tests and corrected p-values.APA Reporting Wording
When reporting Repeated Measures ANOVA, include the repeated factor, repeated measures, overall test result, effect size, pairwise comparison results and assumption note. If sphericity is violated, report the corrected Greenhouse-Geisser or Huynh-Feldt result from SPSS or R.
APA-style report: A repeated measures ANOVA was conducted to compare student scores across G1, G2 and G3. The repeated-measures effect was statistically significant, p = 4.637e-16, partial η² = 0.053. Mean scores increased from G1 (M ≈ 11.40) to G2 (M ≈ 11.57) and G3 (M ≈ 11.91). Bonferroni-adjusted paired comparisons showed significant differences for G2 − G1, p = 0.01002; G3 − G1, p = 1.035e-11; and G3 − G2, p = 1.408e-10. Residual diagnostics showed lower-tail departure, so the result was interpreted with diagnostic caution.
Short reporting version: Repeated grade means differed significantly across G1, G2 and G3, p < .001, partial η² = 0.053. Mean scores increased from 11.40 to 11.57 to 11.91, and all Bonferroni-adjusted pairwise comparisons were significant.
Common Mistakes
| Mistake | Why It Is Wrong | Correct Practice |
|---|---|---|
| Using one-way ANOVA for repeated data | G1, G2 and G3 are measured on the same students, so observations are related. | Use repeated measures ANOVA or a within-subject model. |
| Ignoring sphericity | Sphericity affects the repeated-measures F test. | Check Mauchly’s Test of Sphericity and corrected results. |
| Reporting only the overall p-value | The overall test does not show which repeated measures differ. | Report Bonferroni-adjusted pairwise comparisons. |
| Overstating the effect size | Partial eta squared is 0.053, while eta and omega squared are about 0.005. | Describe the effect as statistically strong but practically modest. |
| Ignoring residual diagnostics | The residual Q-Q plot shows lower-tail departure. | Discuss diagnostics and review Q-Q Plot Normality Check. |
| Confusing repeated measures with mixed ANOVA | Repeated measures ANOVA has one within-subject factor only. | Use Mixed ANOVA when there is also a between-subject factor. |
When to Use Repeated Measures ANOVA
Use Repeated Measures ANOVA when the same subjects are measured three or more times or under three or more related conditions. It is commonly used for time points, pre-mid-post testing, repeated clinical measurements, repeated exam scores, repeated lab measures and matched condition designs.
| Situation | Use Repeated Measures ANOVA? | Reporting Note |
|---|---|---|
| Same subjects measured at G1, G2 and G3 | Yes | Use a within-subject repeated-measures model. |
| Three independent groups | No | Use One Way ANOVA. |
| Within-subject factor plus between-subject factor | Use mixed ANOVA | See Mixed ANOVA. |
| Need to control covariates | Use repeated-measures ANCOVA or mixed model | Review One Way ANCOVA. |
| Sphericity is violated | Still possible with correction | Use Greenhouse-Geisser Correction or Huynh-Feldt Correction. |
Repeated Measures ANOVA should be compared with One Way ANOVA, Mixed ANOVA, Mixed MANOVA, Fixed Effects ANOVA, Factorial ANOVA, ANOVA Assumptions, ANOVA Effect Size, F Distribution, and Cohen’s F Formula.
Downloads and Resources for Repeated Measures ANOVA
Use these resources to reproduce the Repeated Measures ANOVA workflow. The R report and SPSS output PDF are included as verification files. Script and workbook placeholders can be replaced after the final downloadable files are uploaded to the WordPress Media Library.
Download Dataset
Practice dataset with G1, G2 and G3 repeated measures.
Download Repeated Measures ANOVA R Report PDF
R report PDF for repeated-measure means, pairwise comparisons, effect sizes and diagnostics.
Download Repeated Measures ANOVA SPSS Output PDF
SPSS output PDF for repeated-measures ANOVA interpretation and reporting.
Download Python Script
Python code for repeated-measures ANOVA, pairwise comparisons, effect sizes and charts.
Download R Script and Excel Workbook
R workflow and Excel support workbook for repeated-measures summaries.
FAQs About Repeated Measures ANOVA
What is Repeated Measures ANOVA?
Repeated Measures ANOVA is a within-subject ANOVA used to compare three or more related means measured on the same subjects.
What repeated measures were used in this example?
The repeated measures were G1, G2 and G3 grade scores for the same students.
What was the overall repeated-measures result?
The overall repeated-measures p-value was 4.637e-16, so the repeated grade means were significantly different.
What were the repeated-measure means?
The means were approximately 11.40 for G1, 11.57 for G2 and 11.91 for G3.
Which pairwise change was largest?
The largest average change was G3 − G1, with a mean increase of about 0.51.
Were all pairwise comparisons significant?
Yes. G2 − G1, G3 − G1 and G3 − G2 all had adjusted p-values below .05.
What was the partial eta squared?
The partial eta squared value was 0.053.
Why is sphericity important?
Sphericity is an assumption about equality of difference-score variances. When it is violated, Greenhouse-Geisser or Huynh-Feldt corrected results should be reported.
Can Repeated Measures ANOVA be done in Excel?
Excel can calculate means, pairwise changes and paired t tests, but SPSS, R or Python is better for the full repeated-measures ANOVA table and sphericity corrections.
How do I report this Repeated Measures ANOVA in APA style?
A concise report is: Repeated grade means differed significantly across G1, G2 and G3, p < .001, partial η² = 0.053. Mean scores increased from 11.40 to 11.57 to 11.91.
