A distinct branch of research-integrity detection works entirely from numbers already published in an article — no raw data file, no image, no lab notebook required. Three tools built by the same loose network of researchers now associated with “data thugs”-style forensic scrutiny — GRIM, SPRITE, and statcheck — check whether the summary statistics a paper reports are internally consistent with each other and with the sample size and study design the paper itself describes. When they are not, that is a signal worth investigating, not proof of misconduct on its own.
This guide covers what each method actually tests, how it works mathematically, what a flagged inconsistency does and doesn’t mean, and how the three fit together with the site’s existing coverage of image manipulation and paper mills — this is the numerical/statistical side of detection, not the visual side.
Why numbers-only detection is possible at all
Published papers routinely report only summary statistics — means, standard deviations, test statistics, p-values — not the underlying raw data. For decades that made numerical error or fabrication essentially unverifiable from the outside: a reviewer or reader had no way to check whether a reported mean of 4.83 on a 7-point Likert scale, for a sample of 30 people, was even mathematically possible. Statistical fraud-detection methods exploit a simple fact: when the underlying data are constrained (integers, a bounded scale, a specific N), the space of statistics that data could have produced is much smaller than the space of numbers a person could type into a manuscript. A large share of both honest reporting errors and outright fabrication falls outside that possible space, and can be caught by checking arithmetic constraints alone.
All three tools below check consistency, not intent. A flagged result can indicate a typo, a copy-paste error, a rounding mistake, a wrong software output pasted into the wrong table row, or fabrication — the method itself cannot distinguish between these. Distinguishing them is why flagged results are treated as a prompt for author clarification or institutional inquiry, not as a finding of research misconduct in themselves.
GRIM: Granularity-Related Inconsistency of Means
GRIM was introduced by Nicholas J. L. Brown and James A. J. Heathers in “The GRIM Test: A Simple Technique Detects Numerous Anomalies in the Reporting of Results in Psychology,” published in Social Psychological and Personality Science in 2017 (volume 8, issue 4, pages 363–369).
The core logic: if a variable can only take integer values — a Likert-scale item, a count, a yes/no coded as 0/1 — then the arithmetic mean of N such values must always be expressible as a fraction with an integer numerator and denominator N. Only a limited, computable set of decimal values is therefore possible for a given sample size. If a paper reports a mean that isn’t one of those possible values, something is wrong with the number as printed: a data error, a miscalculation, an incorrectly reported N, or an invented figure.
Worked example: for N = 20 respondents on a variable that can only take the values 1 through 7 (a standard 7-point Likert item), the only possible means are multiples of 1/20 (0.05) that land within the 1–7 range. A reported mean of 4.83 is not a multiple of 0.05 from any valid combination summing to an integer total divisible into 20 parts in that range — it fails GRIM and cannot be the true mean of 20 integer responses on that scale, given the stated N.
What GRIM found when applied at scale: in the original paper, Brown and Heathers tested a sample of 260 recent psychology articles; of the subset that could actually be tested with the technique (71 articles, since GRIM requires integer-scale data and a reported N and mean to enough decimal places), roughly half (36) contained at least one inconsistent mean, and more than 20% (16) contained multiple inconsistencies.
Limitations: GRIM only works on integer/bounded data reported to sufficient decimal precision, and it flags a mean as impossible — it doesn’t identify which of several plausible causes (typo, wrong N reported, fabrication) produced the inconsistency. It’s also sensitive to how many decimal places the original authors reported; a mean rounded to one decimal place is much less discriminating than one reported to two.
SPRITE: Sample Parameter Reconstruction via Iterative Techniques
SPRITE extends the same underlying logic from “is this mean possible at all” to “what could the actual data plausibly have looked like.” It was developed by James Heathers, Jordan Anaya, Tim van der Zee, and Nicholas J. L. Brown, described in “Recovering Data from Summary Statistics: Sample Parameter Reconstruction via Iterative TEchniques (SPRITE)” (PeerJ Preprints, 2018).
How it works: given only the summary statistics a paper reports for a scale variable — the mean, standard deviation, sample size N, and the scale’s known lower and upper bounds — SPRITE searches for and generates sets of integer values that would reproduce those exact statistics. It’s a heuristic (iterative, randomized) reconstruction rather than an exact solver, and for most inputs there are many, sometimes very many, distinct datasets that would all produce the identical reported mean and SD.
What SPRITE is useful for: when a reported mean and SD are numerically possible (so GRIM alone finds nothing wrong), SPRITE can still reveal a problem indirectly — if every dataset consistent with the reported statistics requires an implausible distribution (for example, responses clustered almost entirely at the scale’s extreme endpoints, with almost no one answering in the middle, for a variable where that pattern has no substantive explanation), that implausibility is itself a reason to ask for the underlying data. SPRITE doesn’t prove what the real data were; it shows the realistic range of what they could have been, which is often enough to identify that a reported result doesn’t fit any plausible real dataset.
Independent implementations of SPRITE exist in R, Python, and MATLAB, and via web tools, reflecting its adoption as a standard part of the post-publication scrutiny toolkit alongside GRIM.
statcheck: automated consistency-checking of statistical results
statcheck was created by Michèle B. Nuijten and Sacha Epskamp and works on an entirely different layer of the problem: not whether a reported mean is arithmetically possible, but whether a reported test statistic and its associated p-value agree with each other. It is implemented as a freely available R package and web tool.
How it works: statcheck scans a manuscript (typically a PDF or plain text) for statistical results reported in APA style — t-tests, F-tests, correlations, chi-square tests, and Z-tests, each reported with a test statistic, degrees of freedom (where applicable), and a p-value. For each one it finds, statcheck independently recomputes the p-value that the reported test statistic and degrees of freedom imply, and compares that recomputed value to the p-value the authors actually printed. A mismatch is flagged as an inconsistency; a mismatch large enough that it would change whether the result crosses a conventional significance threshold (commonly p < .05) is flagged as a "gross" inconsistency, since those are the ones most likely to have affected a paper's substantive conclusions.
What statcheck found when applied at scale: Nuijten and colleagues’ 2016 study “The Prevalence of Statistical Reporting Errors in Psychology (1985–2013)” (Behavior Research Methods), which screened roughly 30,000 articles across eight major psychology journals, found that about half of all papers containing null-hypothesis significance test (NHST) results had at least one statistical reporting inconsistency, and roughly one in eight papers had at least one gross inconsistency capable of changing a reported conclusion.
Adoption in peer review: statcheck has since moved from a purely retrospective auditing tool into some journals’ actual submission workflow. A 2024 study by Nuijten and Wicherts (“Implementing Statcheck During Peer Review Is Related to a Steep Decline in Statistical-Reporting Inconsistencies,” Advances in Methods and Practices in Psychological Science) found that running statcheck automatically during peer review at Psychological Science was associated with a substantial, sustained drop in the rate of statistical-reporting inconsistencies in published articles.
Limitations: statcheck only checks results reported in full APA style with all required components present, so it misses results reported in other formats (many results reported only as “p < .05" with no test statistic, or in non-APA notation, are simply invisible to it), and — like GRIM and SPRITE — a flag indicates a reporting inconsistency, not a determination of intent.
How the three methods relate — and where each one fits
| Method | What it checks | Input required | What a flag means |
|---|---|---|---|
| GRIM | Whether a reported mean is arithmetically possible for integer/bounded data given N | Mean, N, scale bounds | The reported mean cannot be correct as printed |
| SPRITE | Whether any plausible dataset could produce the reported mean and SD together | Mean, SD, N, scale bounds | Every consistent dataset requires an implausible distribution, or none exists |
| statcheck | Whether a reported test statistic and p-value agree with each other | Test statistic, df, reported p-value (APA format) | The reported p-value doesn’t follow from the reported statistic |
They are complementary rather than redundant: GRIM and SPRITE work on descriptive statistics (means, SDs) for scale/survey-type data, while statcheck works on inferential statistics (test results and p-values) regardless of what the underlying variable is. A paper can pass one and fail another. Applying all three where the reported statistics allow it — not every paper reports the inputs each method needs — gives broader coverage of a manuscript’s numerical claims than any single method alone.
What a flagged inconsistency should and shouldn’t trigger
None of these three tools produces a finding of falsification or research misconduct by itself, and none of the originating research teams has presented them that way. A flag is a documented, mathematically grounded reason to ask a specific, answerable question: does the underlying dataset exist, and does it actually produce the reported statistic? The typical escalation path mirrors how other numerical or image-based integrity concerns are handled institutionally: a documented inconsistency is raised with the corresponding author (often via a journal, an institutional research integrity office, or in a post-publication comment), a request is made for the underlying data or an explanation of the discrepancy, and the outcome — correction, clarification, or referral for a formal inquiry — depends on what that follow-up produces. See CASRAI’s guide to how a research misconduct investigation actually works for what happens when a numerical concern like this escalates into a formal institutional process.
Because these methods work purely from numbers already printed in a published paper or preprint, they’ve become a standard part of independent, public post-publication scrutiny — most visibly through the PubPeer commenting platform and researcher-led forensic groups — running alongside, not instead of, the image-forensic tools (Proofig, ImageTwin) and publisher-side screening infrastructure covered in CASRAI’s existing image manipulation coverage. Where image forensics targets figures — blots, micrographs, gels — GRIM, SPRITE, and statcheck target the tables and in-text statistics of the same manuscripts, and increasingly the same suspect papers get flagged from both directions independently, which raises confidence in either finding alone.
Frequently asked questions
Can GRIM or SPRITE prove a dataset was fabricated?
No. Both identify statistics that are impossible or implausible given the reported sample and scale — they cannot distinguish a data-entry error, a mis-typed N, a rounding mistake, or fabrication as the cause. A flag is grounds for asking the authors for the raw data or a correction, not a misconduct finding on its own.
Do journals run these checks automatically?
Some do, unevenly. statcheck has been piloted and, at some journals including Psychological Science, adopted as a routine part of peer review with a documented reduction in reporting-inconsistency rates. GRIM and SPRITE are used more often by independent post-publication reviewers and researcher-led integrity groups than as a built-in editorial screening step, though that is changing as journals build out broader statistical-review infrastructure.
Do these methods work outside psychology?
The underlying logic applies to any field reporting means of integer/bounded data (GRIM/SPRITE) or APA-style inferential statistics (statcheck), which is why adoption has extended into other social-science and biomedical fields that use similar Likert-scale and NHST reporting conventions — but the founding validation studies for all three tools were conducted on psychology’s published literature, where APA reporting style and Likert-scale measures are close to universal.
What’s the difference between this and detecting image manipulation?
They target different parts of the same manuscript. Image manipulation detection (forensic tools like Proofig and ImageTwin, and manual reviewer scrutiny) examines figures — blots, gels, micrographs — for duplication, splicing, or inappropriate adjustment. GRIM, SPRITE, and statcheck examine the numerical tables and in-text statistics instead. Both are numbers-and-images-only techniques usable without access to a lab’s raw data files, and both feed into the same broader research-integrity screening and post-publication-review ecosystem.
Where can I try these tools myself?
GRIM, SPRITE, and statcheck all have publicly available implementations (R packages and, for statcheck and SPRITE, browser-based tools) built and maintained by their originating researchers, documented in the academic papers that introduced each method. This guide does not replicate step-by-step software instructions; consult the original papers and their associated project pages for current tool versions.







