# Lombardia reported cases: trend and daily reporting variation

The autumn rise and fall remains clear after smoothing, but individual daily reversals can give a misleading impression of its timing and speed. In the fixed window **1 July–31 December 2020**, the largest daily count was **11,489 on 7 November**. Both the prespecified centered seven-day and 21-day means peaked on **10 November**, at **8,806** and **8,135 reported cases/day**, respectively. These describe the reported-case series; they do not reconstruct infections.

The scope and methods were fixed before examining the trend. Only Lombardia (region code 03) was analyzed. Ten days of boundary context on each side, 21 June 2020–10 January 2021, support complete centered windows; those extra dates are excluded from target-window summaries. The original regional files contain other regions, which were retained unchanged for provenance.

**Evidence and definitions.** The inputs are official Italian Civil Protection `pcm-dpc/COVID-19` regional CSVs at commit `fc82987b9ebda01fe8e5b59d5667e3e00721edb9`, dated 10 January 2025. Sources were retrieved on 29 September 2026, approximately 08:04–08:06 UTC. This is a pinned later repository snapshot, not a reconstruction of the exact data available to observers on each day in 2020.

The outcome is `nuovi_positivi`, new reported positive cases. It is not `variazione_totale_positivi`, the net change in active cases, which also reflects recoveries and deaths. Dates are the source's Italian notification dates, preserved without UTC date conversion. Cumulative `tamponi` is used only as contextual testing information; its daily differences count tests, not distinct people.

All **184 target dates** and **204 dates including context** are present, with one Lombardia row per date. There are no missing or negative target new-case values, no discrepancies between those values and cumulative-case differences, and no negative daily testing differences. Original records were not adjusted or imputed. These checks establish internal consistency, not completeness of infection ascertainment. Total new reported cases in the target window are **385,002**.

**Trend comparison.** For an odd window w, the centered mean at date t is the arithmetic average of the w daily counts from t−(w−1)/2 to t+(w−1)/2. The primary seven-day mean includes each weekday once and reduces a recurring weekly reporting cycle. It is not an explicit weekday-adjustment model and cannot remove irregular backlogs or changing weekday effects. The 21-day mean is a prespecified sensitivity check spanning three complete weeks; its greater smoothness blunts and broadens rapid changes.

| Series | Maximum, cases/day | Maximum date | Days at least 95% of maximum |
|---|---:|---|---|
| Raw daily cases | 11,489 | 7 November | 2 dates: 7 and 10 November |
| Centered seven-day mean | 8,806.3 | 10 November | 7 dates within 4–13 November, not all consecutive |
| Centered 21-day mean | 8,135.1 | 10 November | 12 consecutive dates, 4–15 November |

The seven-day near-maximum dates are 4, 7, 8, 9, 10, 12 and 13 November. The 21-day maximum is 7.6% lower than the seven-day maximum. Agreement on the maximum date supports a broad early-to-mid-November reported-case peak, but is not evidence that a biological peak is known to the day. The 95%-of-maximum sets describe curve shape; **they are not 95% confidence intervals**.

The seven-day mean rises from 265.9 cases/day on 1 October to 8,806.3 on 10 November, then falls to 1,873.6 on 31 December. There are 25 complete Monday–Sunday weeks fully inside the window. The largest weekly total is **60,026 on 9–15 November**, compared with **12,737 on 21–27 December**, a 78.8% decrease. End-of-year holiday reporting and testing make the final weeks especially unsuitable for interpreting a single day's change as a transmission change.

| Complete week | Reported cases | Change from preceding complete week |
|---|---:|---:|
| 5–11 October | 4,959 | +166.5% |
| 12–18 October | 13,745 | +177.2% |
| 9–15 November | 60,026 | +6.4% |
| 16–22 November | 50,830 | −15.3% |
| 23–29 November | 34,252 | −32.6% |
| 14–20 December | 15,556 | +6.9% |
| 21–27 December | 12,737 | −18.1% |

The table gives selected weeks; the full unselected sequence and partial-week coverage are included in the CSV outputs. Weekly aggregation reduces weekday imbalance but still does not correct testing or ascertainment changes.

**Daily fluctuations and weekday structure.** The daily departure is 100 × (daily cases / centered seven-day mean − 1). Over all 184 days, the median absolute departure is **20.6%**. The central half of signed departures lies between **−18.8% and +20.9%**. These describe the observed variation around a smoother that itself includes that day; they are not independent prediction errors.

For example, daily cases dropped from 11,489 on 7 November to 4,777 on 9 November (−58.4%), then rebounded to 10,955 on 10 November (+129.3%). Across those dates, the seven-day means were approximately 8,579, 8,706 and 8,806. Reading the raw series alone would suggest a collapse and rebound while the broader reported-case trend remained close to its peak.

| Weekday | Dates | Median departure | Interquartile range |
|---|---:|---:|---:|
| Monday | 26 | −44.6% | −52.9% to −36.5% |
| Tuesday | 26 | −17.8% | −37.0% to −2.5% |
| Wednesday | 27 | −1.8% | −11.8% to +10.8% |
| Thursday | 27 | +12.9% | +4.7% to +29.0% |
| Friday | 26 | +23.8% | +15.4% to +33.5% |
| Saturday | 26 | +19.4% | +4.1% to +28.4% |
| Sunday | 26 | −6.3% | −19.6% to +6.1% |

Testing shows a similar weekly cadence: the median Monday test-count/seven-day-test-mean ratio is 0.545, compared with 1.197 on Friday. This supports interpreting some daily case variation in the context of testing and reporting schedules. It does not identify how much each process contributes, establish causation, or justify using cases divided by test counts as person-level positivity. The weekday summaries pool the full fixed six-month period, give each date equal weight, and may conceal changes over time. Relative departures can also be large when summer counts are small.

**What the uncertainty analysis does and does not establish.** The tables are administrative counts rather than a random sample with a supplied error model. Their sampling variation, reporting error and missing infections cannot be separated from this one aggregate series. Accordingly, no Poisson confidence band, independence-based standard error, hypothesis test or infection-incidence interval is imposed.

There are three distinct sources of uncertainty:

- **Descriptive variability:** daily departures and weekday interquartile ranges quantify observed fluctuations. They include genuine incidence changes as well as testing, reporting and other effects.
- **Method sensitivity:** seven- versus 21-day smoothing changes peak height and peak breadth. These are two deliberate descriptive choices, not an exhaustive range of plausible latent trends.
- **Unmeasured observation-process uncertainty:** changing test volume, eligibility, care seeking, ascertainment, delays, batch reporting and retrospective revisions can change reported cases independently of infections. Their contributions are not identifiable here.

Adjacent centered means share observations, and weekday observations also belong to one temporally evolving series. The displayed distributions therefore should not be read as independent replicated experiments. The seven-day mean uses three future days, and the 21-day mean uses ten: this is a retrospective analysis, not a real-time surveillance method or nowcast. Neither smoothing method shifts reports back to symptom onset or infection dates.

The target Lombardia rows contain no nonempty `note`, `note_test` or `note_casi` entries. Among 160 global note rows in the context period, a whole-word search for Lombardia and its provincial names found no matching entries. The full official note file and the unfiltered period extract are supplied so that this limited check is inspectable. Absence of such notes does not establish absence of delays, revisions or unrecorded reporting issues. The changelog documents schema changes, including the June 2020 diagnostic/screening fields and December ICU-admission field; it is not a complete measurement-error history.

**Figure caption and accessible description.** The standalone figure has three panels. A overlays daily new cases in grey, the primary seven-day mean as a solid blue line, and the 21-day sensitivity mean as a dashed brown line. All show a steep October rise, a broad November peak and a subsequent decline, with much larger day-to-day oscillations in the raw counts. B shows each day's percentage departure from the seven-day mean. C groups the same departures by weekday: Mondays are predominantly below zero, and Thursdays through Saturdays predominantly above zero. Boxes show medians and interquartile ranges; whiskers end at the most extreme observed values within 1.5 IQR of the box, and circles show values beyond them. All observed values are retained. There are no confidence bands. The PNG is 2640 × 2420 pixels; the PDF provides a vector version.

**Reproduction and validation.** Download and extract `lombardia_offline_rerun.zip`. From the extracted directory, run:

```text
python analysis.py --input-dir . --output-dir rerun_outputs
```

The script is offline and first checks every downloaded source file against `provenance/source_manifest.csv`. It uses existing Python, NumPy, pandas and Matplotlib; the verified environment was Python 3.12.3, NumPy 2.4.6, pandas 3.0.5 and Matplotlib 3.8.4. The archive records the environment; it does not bundle an interpreter or packages. No packages were installed or settings changed for this analysis.

A native Notebook rerun executed the script as `__main__` with fresh script globals, an extracted copy of the bundle and a separate output directory, while socket connection and DNS calls were blocked. All **214 downloaded-source checksums** passed. All **10 regenerated CSV outputs were byte-identical**, the summary matched, and the comparison PNG had identical pixels. PDF byte identity was not required because export metadata may differ. Direct window sums independently matched rolling means, and direct daily sums matched weekly totals. Verification used the same installed runtime, not a clean second machine; cross-version reproducibility has not been tested.

The archive includes original regional CSVs and documentation, calculated CSVs, figures, script, this report, a data dictionary, frozen scope, run/version records, and a SHA-256 inventory of every archive member except the inventory itself. The original downloaded source payload totals **2,621,317 bytes (2.62 MB)**, including metadata and the official notes file. Only the 204 requested daily regional tables were downloaded; no repository clone or complete raw case history was fetched.

**Primary sources, all pinned to the same revision:**

- [Official repository revision](https://github.com/pcm-dpc/COVID-19/commit/fc82987b9ebda01fe8e5b59d5667e3e00721edb9).
- [Regional and national field definitions](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/dati-andamento-covid19-italia.md).
- [Regional CSV example: 7 November 2020](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/dati-regioni/dpc-covid19-ita-regioni-20201107.csv). Every source URL is recorded in the manifest.
- [Official notes](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/note/dpc-covid19-ita-note.csv).
- [Changelog](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/CHANGELOG_EN.md), [README](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/README_EN.md), and [source license](https://github.com/pcm-dpc/COVID-19/blob/fc82987b9ebda01fe8e5b59d5667e3e00721edb9/LICENSE).

Data attribution: Presidenza del Consiglio dei Ministri — Dipartimento della Protezione Civile. This analysis and its interpretations are not an official Civil Protection publication.
