@@ -84,8 +84,9 @@ as the bridge into inference. Fits existing slots (no additions).
8484>
8585> Geometric-covariance cells were extracted to
8686> ` notebooks/Notebook_5/_staging_covariance_geometry.py ` (leading underscore → not
87- > rendered, not in the book config). Fold them into ** 5a** when PCA is worked, and
88- > update that file's badge URLs to 5a's path.
87+ > rendered, not in the book config), to be folded into ** 5a** when PCA was worked.
88+ > ** Now folded in and the staging file removed** — see the "Geometric covariance →
89+ > 5a" section below.
8990
9091### Key findings from the current notebooks
9192
@@ -155,6 +156,33 @@ Per repo convention: edit the `.py`, then `jupytext --sync`; re-run
155156
156157---
157158
159+ ## Geometric covariance → 5a ✅ IMPLEMENTED
160+
161+ ** Finding:** 5a already had its own "Covariance as geometry" section (5-panel
162+ isotropic/stretched/tilted comparison, built around ` add_covariance_ellipse ` ) leading
163+ into PCA — written independently of the M3 staging file, with different (wine-
164+ dataset-oriented) framing. The staging file's content was therefore mostly
165+ ** redundant** , not missing. Two things it had that 5a didn't:
166+
167+ 1 . A ** badged exercise** on reading the panels (5a had the same three questions as
168+ an unbadged "Discussion").
169+ 2 . An ** interactive shape explorer** (sliders for ` std_x ` , ` std_y ` , ` rho ` ).
170+
171+ ** Fold-in:** converted 5a's discussion into a badged exercise
172+ (` id="ex-covariance-shapes" ` ), then added the interactive explorer as a new
173+ ` plot_covariance_explorer ` cell reusing 5a's existing ` add_covariance_ellipse `
174+ (overlaying eigenvector arrows), with its own badged exercise
175+ (` id="ex-covariance-explorer" ` ). Badges regenerated via
176+ ` scripts/add_exercise_badges.py ` ; notebook re-executed
177+ (` CELL_TIMEOUT=300 scripts/execute_notebooks.sh ` — the default 120s timeout was too
178+ short for an unrelated pre-existing t-SNE cell later in 5a); book re-rendered clean.
179+
180+ ` notebooks/Notebook_5/_staging_covariance_geometry.py ` /` .ipynb ` ** removed** (never
181+ committed, so no history to preserve) — its unique value is now in 5a and the rest
182+ was duplicate of what 5a already had.
183+
184+ ---
185+
158186## Other proposals (from handoff — not yet worked)
159187
160188* (M1 split — now ✅ implemented; see the M1 section below.)*
@@ -172,9 +200,17 @@ ridge/lasso.
172200generalization. Recommendation: ** keep as a structural keystone** , don't cut to a
173201buffer or to fund DL (wrong time of year).
174202
175- 🔧 ** Type I/II spiral** (cross-module) — introduce in 3b (α, power = 1−β), quantify
203+ ✅ ** Type I/II spiral** (cross-module) — introduce in 3b (α, power = 1−β), quantify
176204in 3c (power vs sample size/noise), reconnect in ** 4b** (confusion matrix FP/FN =
177- Type I/II; "Error Costs" exercise = cost asymmetry).
205+ Type I/II; "Error Costs" exercise = cost asymmetry). ** IMPLEMENTED.**
206+
207+ > 4b already had FP/FN labeled "Type 1"/"Type 2" and an "Error Costs" exercise
208+ > (pre-existing, unrelated to this rework). Closed the loop: relabeled to match 3b/3c's
209+ > Roman-numeral convention, added a "Callback: Type I/II errors, from hypothesis tests
210+ > to classifiers" section connecting the confusion matrix to the $H_0$ table from 3b
211+ > (precision ↔ Type I, recall ↔ Type II, threshold ↔ α), and sharpened the exercise to
212+ > ask which error type dominates per scenario and how that trades off against the
213+ > decision threshold.
178214
179215---
180216
0 commit comments