cassionData Analysis

Exercise · Intermediate

Triage a draft DQA report

Five findings from a colleague's draft. Two are real, two are chance dressed as evidence, and one is a district failure written up as twenty-seven facility failures. Test each against the data and rewrite the survivors.

Python45 min

A colleague has drafted the data quality assessment and asked you to review it before it goes to the district health team. The five findings below are quoted from the draft exactly as written.

Your job is triage. Some of these will damage the relationship with the district for no analytical gain, and one of them is the most important thing in the document.

The file

vaccination-coverage-2024.v1.csv — 2,736 rows of monthly aggregate reporting from 38 health facilities across six antigens, of which 2,094 carry a submitted report. Synthetic and DHIS2-shaped.

The draft findings

Finding 1. FAC020’s data appear fabricated. 23% of its reported values end in zero, against 10% across the district.

Finding 2. Twenty-seven facilities failed to submit a report in August. Recommend data quality training for the staff of each facility.

Finding 3. FAC013 reported a 67% spike in second-dose measles vaccination in December, the largest single-month increase in the district.

Finding 4. FAC005 reported 13 penta3 doses in October against a monthly median of 43.

Finding 5. Health posts report at 71.7% against 82.8% for health centres. Recommend training for health post staff.

The task

For each finding, produce:

  1. The code that tests it. Reproduce the number the draft quotes, then test whether it means what the draft says it means.
  2. A verdict — keep, keep with rewording, or drop. Findings you drop still get a row, with the reason.
  3. For the survivors, a rewrite in the course’s five-column form — finding, root cause, corrective action, owner, deadline — with a number in the finding and a category name for the cause.

What the tests need to cover

You will need at least these, and the exercise is largely about knowing which applies where.

  • A base rate computed from the data, not assumed. The district’s round-number share is not 10% because a tenth of digits are zero; compute it.
  • A correction for the number of units examined. Thirty-eight facilities were looked at, and a check at 5% will flag some of them from clean data. Say how many you expect.
  • An absolute floor beside any ratio. At least one finding is a large percentage of a very small number.
  • The shape of the defect in time and across units. One finding is concentrated in one month across all facilities, which rules out three of the five root cause categories immediately.

Two numbers to check yourself against

The district’s round-number share is about 10.4%, computed on the 2,094 rows that carry a report. Eleven facility-antigen-months in the whole extract fall below half their own median.

If your test of finding 1 gives a p-value below 0.05 and you stop there, you have not finished the finding.

The questions to answer in prose

Three sentences each.

1. Finding 1 and finding 3 fail for related reasons. Name the common cause, and say what a reader of the draft would have done about FAC020 and FAC013 that would have wasted a vehicle.

2. Finding 2 is real and its recommendation is wrong. Say what the shape of the August data tells you about the category of root cause, and what the recommendation should be instead.

3. Finding 5 quotes two numbers that are both correct. Explain why the recommendation still does not follow from them, and what you would need to know before proposing any action.

What to hand in

A Python script producing a triage table with one row per draft finding — finding, quoted value, your test, verdict, reason — and a second table holding the rewritten survivors in five-column form. Both printed and written to outputs/.

How to know you are done

Your triage table has five rows and your rewritten table has fewer. Every surviving finding names a root cause category from the course’s five, and no corrective action is the word “training” on its own.