Summary of results
⚠️ Scope and limitations
Some accounts of “hot lots” or “bad batches” propose that particular lots carry a distinctive adverse-event signature. This analysis tests that proposition against the data: it builds a symptom profile for every COVID lot with enough reports, then asks — with no pre-chosen number of clusters — whether lots fall into separable groups, and if so, what distinguishes them. The sections below report what the analysis found and where the data are inconclusive.
Per-lot profile = fraction of the lot’s reports mentioning each of 17 symptom categories (or, in the finer pass, 35 clinical MedDRA PTs), for lots with ≥50–100 reports so profiles are stable. Objectivity comes from using multiple independent validity indices rather than hand-picking an answer.
The indices agreed on k=2, and the split was stable on resampling. On inspection, the two groups differ in reporting completeness rather than symptom type: the category rank-order is the same in both, and one group has richer reports (1.85 vs 0.75 categories flagged per report). That axis aligns with calendar era — the richer group is mostly 2021 lots (and includes all the Janssen lots), the sparser group mostly 2022 lots — while doses are similar. Within a single manufacturer the same k=2 split correlates +0.61 with lot start-year.
When the relative symptom mix is re-clustered with manufacturer and era statistically removed, the separation largely disappears (silhouette ~0.15). A high Hopkins statistic together with a near-zero silhouette is characteristic of data that is non-uniform but not organized into discrete clusters — a continuous distribution rather than separable groups.
Manufacturer is associated with the AE profile (PERMANOVA pseudo-F = 39, p = 0.001), accounting for ~13% of the profile variance; this association persists after removing the report-volume axis. The Janssen (adenoviral-vector) profile is the most distinct: relatively more neurological/systemic reporting and relatively less injection-site reactogenicity than the mRNA vaccines.
At the manufacturer level, the serious-event reporting rate per million doses (dose denominators from openVAERS) shows higher Janssen rates for several events, consistent with the platform-specific patterns reported for that vaccine elsewhere:
| Serious event (reports / million doses) | Pfizer | Moderna | Janssen |
|---|---|---|---|
| Myocarditis | 2.39 | 1.72 | 1.72 |
| Pericarditis | 1.77 | 1.71 | 2.46 |
| Guillain-Barre syndrome | 0.57 | 0.67 | 5.08 |
| Anaphylactic reaction | 1.83 | 2.07 | 3.16 |
| Pulmonary embolism | 2.93 | 3.77 | 14.47 |
| Deep vein thrombosis | 2.1 | 2.74 | 13.16 |
| Thrombocytopenia | 0.95 | 0.93 | 3.94 |
| Immune thrombocytopenia | 0.28 | 0.36 | 0.81 |
| Thrombosis with thrombocytopenia syndrome | 0.01 | 0.0 | 0.3 |
| Bell's palsy | 2.55 | 3.3 | 6.16 |
| Seizure | 4.23 | 4.61 | 17.84 |
| Cerebrovascular accident | 2.9 | 3.9 | 10.77 |
| Death | 12.4 | 20.07 | 30.12 |
| Myocardial infarction | 1.26 | 1.63 | 3.4 |
| Cardiac arrest | 1.44 | 1.78 | 3.84 |
| Encephalitis | 0.08 | 0.11 | 0.17 |
| Transverse myelitis | 0.0 | 0.0 | 0.0 |
Testing every lot × serious-event combination against its own manufacturer’s dose-denominated baseline, a naive Poisson model flagged 742 lots. VAERS counts are, however, strongly overdispersed (dispersion φ = 16 overall, 73 for Death), which makes those p-values anti-conservative. Under a quasi-Poisson correction the count drops to 47. The remaining signals are concentrated in the earliest, largest 2021 lots — the lots often described as “hot lots.”
These lots were also disproportionately administered early in the rollout, to older recipients and under intensive surveillance (examined on the rollout page). Age standardization removes much, though not all, of the death excess, and the anaphylaxis signal is not explained by age. The available data are consistent with reporting and population effects but cannot, on their own, exclude a contribution from the lots themselves.
As a sensitivity check for a small cluster that averaging methods could miss, a DBSCAN density scan looked for any tight group of ≥5 near-identical lots in the manufacturer+era-residualized space. The groups it identified corresponded to:
EN6204/EN6205/EN6208) — sequential lots distributed and administered together, which share exposure timing and population;None of the groups was defined by an anomalous serious event.
Across global clustering, era/manufacturer residualization, a finer PT-level pass, and a density scan, this analysis did not identify distinct adverse-event clusters among COVID vaccine lots: the profiles vary along a continuous reporting-completeness / calendar gradient and, separately, by manufacturer platform. Where individual lots show elevated reporting of specific serious events, those lots are also the earliest and most intensively surveilled, and were given to different populations — factors that the analysis shows account for much of the difference but that passive data cannot fully separate from a possible batch-level effect. Readers should weigh these findings as one line of evidence, subject to the limitations of spontaneous-reporting data described above.
Reproducible pipeline: cluster_lot_ae_profiles.py, pca_manufacturer_signature.py, lot_serious_pt_disproportionality.py, cluster_relaxed_exploration.py, cluster_density_scan.py. Data: VAERS 2006–2024 lot events × openVAERS per-lot doses. Passive surveillance; hypothesis-generating only.