JAMOVI version · Date: October 15, 2026
One predictor was never the plan.
Note
This is the JAMOVI version of Week 8. Same models, same numbers, same interpretations — all point-and-click. The R version is here.
| Week | Model | What was new |
|---|---|---|
| 5 | \(Y = b_0 + b_1X\) | one continuous predictor (Covariates) |
| 6 | \(Y = b_0 + b_1D\) | the predictor can be a group (Factors) |
| 7 | \(SS_{total} = SS_{model} + SS_{res}\) | how well the line fits |
Everything so far has been one predictor at a time. That is almost never the model you want.
\[Y_i = b_0 + b_1X_{1i} + b_2X_{2i} + \dots + b_kX_{ki} + e_i\]
Important
In JAMOVI you build this model by dragging more than one variable into Covariates. That is the entire mechanical change. Everything else today is about what the numbers now mean.
The fire department wants to know what drives the cost of a fire.
300 fires: how many trucks were dispatched, how many acres burned, and the damage in thousands of dollars.
🖱️ Open the data
☰ Menu → Open → Browse → fire_data.csv
Four columns: fire_id, acres, trucks, damage. Confirm all three analysis variables are Continuous.
🖱️ Look at it first
Exploration → scatr → Scatterplot
trucks → X-Axisdamage → Y-AxisA clear, tight, positive cloud. More trucks, more damage.
🖱️ Fit it
Regression → Linear Regression
damage → Dependent Variabletrucks → Covariates| Predictor | b | SE | t | p |
|---|---|---|---|---|
| Intercept | 8.84 | 3.28 | 2.70 | .007 |
trucks |
12.73 | 0.51 | 24.73 | < .001 |
R² = .672
“Trucks strongly predict damage. Send fewer trucks.”
Warning
Every number in that sentence is correct. The recommendation would get people killed.
Before you fit anything, sketch what you think is going on. Arrows for “causes.”
trucks → damage?A variable that causes both your predictor and your outcome is a confound. Leave it out and your slope absorbs its effect.
These sketches have a name — Directed Acyclic Graphs — and Dr. Haraden is about to abuse the chalkboard with one. 🧑🏫
🖱️ Colour the cloud by fire size
Exploration → scatr → Scatterplot
trucks → X-Axis, damage → Y-Axisacres → Group (JAMOVI will bin a continuous grouping variable; alternatively make a 3-level size variable under Data → Compute using IF)Big fires get more trucks and do more damage. The slope we estimated was mostly fire size wearing a truck costume.
🖱️ One extra drag
In the same Linear Regression panel, drag acres into Covariates underneath trucks.
| Predictor | b | SE | t | p |
|---|---|---|---|---|
| Intercept | 10.94 | 1.65 | 6.62 | < .001 |
trucks |
−2.63 | 0.58 | −4.54 | < .001 |
acres |
4.09 | 0.14 | 29.64 | < .001 |
R² = .917, adj. R² = .917
trucks: +12.73 → −2.63acres: +4.09 per acreEach additional truck is associated with $2,630 less damage — among fires of the same size.
Before
We compared a 2-truck fire to a 9-truck fire. Those are not the same fire. One was a kitchen; one was a neighborhood.
After
We compare 2-truck and 3-truck fires of the same acreage. Now the extra truck can only help.
“Holding constant” is a comparison, not a magic word
\(b_1\) answers: among cases that are identical on every other predictor in the model, what is the difference in \(Y\) per unit of \(X_1\)?
Identical on the predictors you included. Nothing else.
When you leave out a variable that is related to both \(X\) and \(Y\), its effect does not vanish — it gets folded into the coefficients you did estimate.
You cannot tell which from the output. You can only tell from what you chose to measure.
A student-stress survey: everything rated 1–5.
🖱️ Open and rename
☰ Menu → Open → Browse → student_stress.xlsx
The column headers are full sentences (with emoji). Double-click each header and give it a short Name:
| Original question | Name it |
|---|---|
| Rate your sleep quality | sleep_quality |
| Headaches per week | headaches |
| Rate your academic performance | academic_perf |
| Rate your study load | study_load |
| Extracurriculars per week | extracurricular |
| Rate your stress levels | stress |
Set all six to Continuous.
🖱️ Two panels
| r with stress | |
|---|---|
study_load |
.392 |
sleep_quality |
.165 |
extracurricular |
.052 |
academic_perf |
.055 |
headaches |
−.072 |
And the two predictors we care about barely know each other: r(study_load, sleep_quality) = .065
🖱️ Linear Regression
stress → Dependent Variable · study_load → Covariates
| Predictor | b | SE | t | p |
|---|---|---|---|---|
| Intercept | 1.810 | 0.123 | 14.72 | < .001 |
study_load |
0.388 | 0.040 | 9.69 | < .001 |
R² = .153, adj. R² = .152, RSE = 1.251
Each 1-point increase in study load → 0.39 points more stress.
🖱️ Drag sleep_quality into Covariates
| Predictor | b | SE | t | p |
|---|---|---|---|---|
| Intercept | 1.292 | 0.191 | 6.76 | < .001 |
study_load |
0.378 | 0.040 | 9.54 | < .001 |
sleep_quality |
0.174 | 0.050 | 3.50 | < .001 |
| Predictor | Alone | Together |
|---|---|---|
study_load |
0.388 | 0.378 |
The study-load slope moved by 0.01. Essentially nothing.
A coefficient only changes when the new predictor is related to both the outcome and the old predictor.
Tip
“I added a predictor and the first one didn’t budge” is a real result, and it is the common one. It means your two predictors are not competing for the same variance. Say that, instead of apologizing for it.
\[\widehat{Stress} = 1.29 + 0.378(StudyLoad) + 0.174(SleepQuality)\]
Better sleep quality predicts more stress (b = +0.174, p < .001), holding study load constant.
Three possibilities, and you cannot choose between them from this output:
Important
This is the midterm’s lesson arriving in a lecture. Check the direction of every coefficient against what you expected. When it disagrees, the first suspect is always scoring — not the universe.
🖱️ Model Builder
Inside Linear Regression, open the Model Builder section:
study_load → Block 1sleep_quality → Block 2Then open Model Comparisons and tick Compare models.
JAMOVI now reports both models side by side and the test of the difference. In R this takes a second lm() and an anova() call.
| Model | R² | adj. R² | RSE |
|---|---|---|---|
| 1. study load | .1534 | .1517 | 1.2506 |
| 2. + sleep quality | .1730 | .1698 | 1.2372 |
Model Comparisons: ΔR² = .0196, F(1, 517) = 12.27, p < .001
The comparison test asks: does the drop in unexplained variability exceed what one extra predictor would buy by chance?
With one added predictor, this \(F\) is just the square of its \(t\): \(3.503^2 = 12.27\). Same test, different table. ✅
🖱️ Block 3
Add extracurricular, headaches and academic_perf together as Block 3.
| Predictor | b | p |
|---|---|---|
study_load |
0.383 | < .001 |
sleep_quality |
0.178 | < .001 |
extracurricular |
−0.015 | .697 |
headaches |
−0.074 | .097 |
academic_perf |
−0.038 | .483 |
| Model | R² | adj. R² | RSE |
|---|---|---|---|
| 2 predictors | .1730 | .1698 | 1.2372 |
| 5 predictors | .1779 ⬆️ | .1699 ➡️ | 1.2371 |
Important
Week 7’s warning, now with consequences. \(R^2\) cannot tell you whether a predictor belongs in the model. Adjusted \(R^2\), the model comparison, and your theory can.
🖱️ Standardized estimates
Model Coefficients → ✅ Standardized estimate
JAMOVI adds a Stand. Estimate column. (It standardizes continuous predictors only — which is what you want.)
Report b when
Report β when
Here: β = .38 (study load) vs .14 (sleep quality). Study load matters roughly 2.7× as much.
If two predictors are nearly the same variable, the model cannot tell them apart. Coefficients get unstable and standard errors balloon.
🖱️ Check it
Assumption Checks → ✅ Collinearity statistics
JAMOVI prints VIF and tolerance for each predictor.
trucks rose from 0.515 to 0.579 as a resultRules of thumb: > 5 is worth a sentence, > 10 is a problem. Note that the fire model still worked — high VIF widens your SEs, it does not invalidate the model.
Stress was regressed on self-reported study load and sleep quality in a sample of 520 students. The overall model was significant, F(2, 517) = 54.07, p < .001, accounting for 17.3% of the variance in stress (adj. R² = .170). Holding sleep quality constant, each one-point increase in study load was associated with a 0.38-point increase in stress (b = 0.38, SE = 0.04, t = 9.54, p < .001). Holding study load constant, each one-point increase in rated sleep quality was associated with a 0.17-point increase in stress (b = 0.17, SE = 0.05, t = 3.50, p < .001). Adding sleep quality improved fit over study load alone, ΔR² = .020, F(1, 517) = 12.27, p < .001. The positive coefficient for sleep quality was contrary to expectation and may reflect the direction in which that item was scored.
Tip
Everything a reader needs: the overall test, each coefficient with its holding-constant clause, the model comparison, and an honest flag on the odd result.
Tip
Week 8 Exercises · ~45 min · Pairs
1,763 films, 1970–2013: budget, international gross, year, and whether the film passes the Bechdel test.
Every step in the activity is given in both R and JAMOVI.
Finish these at the bottom of your activity file:
📂 Midterm Project — due Tuesday 10/27 at 11:59pm
Part 6 is now unlocked. You have everything you need: the two-predictor model, the “holding constant” interpretation, ΔR² via Model Builder → Model Comparisons, and the model-comparison table.
Target for this weekend: Parts 1–5 done, Part 6 drafted. That leaves next week for writing instead of panicking.
No lab is due this week or next — the midterm is the assignment.
📖 Chapter 14.3 — ST · Chapter 8.1 — MSR
Next week: what happens when the groups from Week 6 meet the predictors from this week — and what to do when a slope is different for different groups.