Keep unknown outcomes separate
Task 4 · denominators, bounds and small groups
The Week 5 unknown-outcome bounds and the Week 6 rule to name the denominator: one cohort gives 75% among known outcomes but 60%–80% for everyone.
Lab 6 PDF p. 5 · Task 4 (10 minutes)
Your task
Compute the known-outcome rate and both whole-cohort bounds; change one failure to a pass in groups of 9 and 900 and compare the rate changes; write two reporting sentences.
Evidence to include
75%, 60% and 80% with the assumption behind each bound; changes of about 11.1 and 0.111 percentage points; sentences with passes/n and a caution.
Worked example and code
Try the task in the PDF first, then compare your working below. Run the code in your own Python notebook.
Open Lab 6 instructions (PDF)Task 4 · L6 p. 5.
1. Choose the denominator
passed, failed, unknown = 60, 20, 20
known = passed + failed
total = known + unknown
print("Known-outcome rate:", 100 * passed / known)
print("Lowest whole-cohort rate:", 100 * passed / total)
print("Highest whole-cohort rate:", 100 * (passed + unknown) / total)
Output: 75.0, 60.0, 80.0.
- 60% assumes all 20 unknown students eventually fail.
- 80% assumes all 20 unknown students eventually pass.
Why the statements are unsupported:
- "Exactly 75% of the whole cohort passed": 75% uses only the 80 known outcomes. It equals the whole-cohort rate only if the unknown students pass at the same rate as the known ones, which is an assumption, not an observation.
- "The 20 unknowns should be counted as failures": unknown is not failure. That choice produces the lowest possible rate and reports an assumption as data.
The 60%–80% range is a set of logical bounds on possible outcomes, not a confidence interval.
2. Small denominators
small_pass, small_n = 1, 9
large_pass, large_n = 100, 900
small_rate = 100 * small_pass / small_n
large_rate = 100 * large_pass / large_n
print("Small original rate:", small_rate)
print("Large original rate:", large_rate)
small_new = 100 * (small_pass + 1) / small_n # one failure becomes a pass; n fixed
large_new = 100 * (large_pass + 1) / large_n
print("New rates:", small_new, large_new)
print("Changes (points):", small_new - small_rate, large_new - large_rate)
Output: both start at 11.11…; new rates 22.22… and 11.22…; changes about 11.1 and 0.111 percentage points. One changed outcome moves a rate by 100/n points: 100/9 ≈ 11.1 for the small group and 100/900 ≈ 0.111 for the large group. The same percentage rests on far less evidence when n is small.
3. Report rates as sentences
- "Among part-time ST110 registrations, 1 of 9 passed (11.1%); with only nine registrations, a single different outcome would change this rate by about 11 percentage points, so treat it cautiously."
- "Of the 80 students with a recorded outcome, 60 passed (75%); 20 of the 100 outcomes are not yet recorded, so the whole-cohort pass rate could lie anywhere from 60% to 80%."
Keep percentage points (an absolute difference between rates) separate from relative percent change.
Saved only in this browser. This note doesn’t fill in the downloaded notebook; “reviewed” is a personal checklist, not a grade.