Methods and limitations
Model version geiger-contamination-1.0.0 · corpus last updated 2026-08-22
What the score measures
The contamination score estimates how much a paper's evidential base depends on work that has since been retracted or formally questioned. It is a property of a paper's citation neighbourhood, not a judgement of its authors, and it is not a claim that the paper is wrong.
Dose flows backwards along citations from flagged papers to the papers that cite them, decaying with each generation:
score(p) = normalise( Σr severity(r) · wtime(p,r) · wreliance(p) · wintent(p) · decayhops−1 )The four weights
Timing
The most defensible signal available. A paper published before a retraction notice could not have known; one published after it either missed the notice or ignored it. Post-notice citations carry weight 1, pre-notice 0.3, and cases where the ordering cannot be established 0.5. Same-year comparisons count as unknown rather than being guessed.
Reliance
Citing a retracted work among eight references is a different act from citing it among three hundred. Above a baseline of 30 references the weight falls off as baseline ÷ reference count, so it always sits between 0 and 1.
Severity
A full retraction emits dose 1; an expression of concern 0.5; a correction 0.2. The concern may not be upheld, so it should not count the same as a retraction.
Intent
A paper writing about a retraction is not contaminated by it. Where a paper looks like meta-research on research integrity, its citations are weighted at 0.15 rather than 1. This is a metadata heuristic, described honestly below.
Dose decays by a factor of 0.35 per citation step and propagation stops after 3 generations. The accumulated dose is mapped onto 0–100 by a saturating curve, so a paper citing twenty retracted works does not score twenty times one that cites a single work — past a point, “heavily affected” is the whole message.
A paper that is itself retracted is pinned to 100 and labelled a source rather than a recipient.
Data sources
- OpenAlex (CC0) — bibliographic metadata and the citation graph in both directions. The
cites:filter is what makes forward traversal possible. - Crossref / Retraction Watch (CC0 since 2023) — retraction and expression-of-concern notices, with dates and reasons. OpenAlex carries a retraction flag but no dates, and the entire timing half of the model depends on them.
Where sources disagree, Geiger keeps the most severe status asserted by any of them and dates it from the earliest notice of any kind. A source with no record is treated as silent, never as an all-clear.
What this cannot see
These limits are real and they matter more than the number does.
- Coverage is partial. The corpus is built by crawling outward from seed papers under a budget, so the absence of a flag is never proof that a paper is sound. Currently 300 papers, of which 1 are flagged and 0 have a notice date.
- Undated notices weaken the model. A flagged paper with no notice date forces every citation to it into the “unknown timing” bucket. 1 of 1 flagged papers are currently in that position.
- Intent detection is a heuristic. It reads titles, venues and subject classifications — not the citing sentence. It will miss a paper that discusses a retraction only in its body text, it is English-only, and it cannot tell which of several references a phrase refers to. A match reduces a score but never zeroes it.
- Sampling is bounded. Highly-cited papers have more citers than any crawl budget can hold. Geiger samples half by citation count and half by recency, so post-retraction citations are not systematically excluded — but a truncated neighbourhood is still a sample, and the interface says so when it truncates.
- Not all citations are equal. Without full text the model cannot tell a load-bearing citation from a passing reference in a literature review.
Interpreting a result responsibly
- A retraction is not an accusation of misconduct. A large share are issued for honest error, publisher mistakes, or at the authors' own request. Always read the notice.
- Geiger scores papers and citation paths. It does not score people, and an author-level tally should not be inferred from it.
- A high score is a prompt to look, not a finding. The correct next step is to open the paper and check whether the retracted claim is actually load-bearing.
- If you believe a classification here is wrong, it probably is worth reporting — the underlying notices come from third-party databases and do occasionally mis-link.
Reproducibility
Every score is stamped with the model version that produced it, and every parameter above is read from configuration rather than hardcoded, so a run can be reproduced exactly. The current parameter set is served at /api/stats alongside the corpus counts.
Scores are computed as a batch job over the whole graph after each ingest, not per request. Papers fetched on demand are scored against the fragment that was crawled and are marked +fragment in their version string; those are provisional until the next full run.