aNet.ai
Data Science/Lab work
0day streak0XP · Lv 1
← Lab 6 overview and setup
Lab 6 · Section 5 of 7

Keep unknown outcomes separate

Task 4 · denominators, bounds and small groups

First · connect to the lecture

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:

  1. "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.
  2. "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.

aNet.ai · Data Science Fundamentals · Weeks 1–6 · practice material, not an official examProgress saved in this browser