Skill Tracer
Skills › Scientific Agent Skills › uncertainty-and-units › reporting-rules.md

reporting-rules.md

139 lines · skills/uncertainty-and-units/references/reporting-rules.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Reporting rules
2
3A number without its uncertainty and without a statement of what that uncertainty means
4cannot be checked, compared, or reused. This file covers what has to accompany a
5reported result.
6

Reporting rules

A number without its uncertainty and without a statement of what that uncertainty means cannot be checked, compared, or reused. This file covers what has to accompany a reported result.

Raw lines 1 to 6
7## Round the uncertainty first
8
9JCGM 100:2008 7.2.6. The uncertainty is rounded to one or two significant digits, and
10the value is then rounded to that same decimal place — never the other way round, and
11never independently.
13```text
1412.34567 +/- 0.02345 -> 12.346 +/- 0.023
1512.34567 +/- 0.1 -> 12.35 +/- 0.10 (two digits, since 1 leads)
161234 +/- 250 -> 1230 +/- 250
17```
19Two digits are the safe default. One digit is acceptable when the leading digit is 3 or
20more; rounding 0.14 to 0.1 changes it by 29%, which is why a leading 1 or 2 should keep
21two digits. `scripts/format_result.py` applies the rule and warns on that case.
23Trailing zeros in the uncertainty are significant and must be kept: `0.10`, not `0.1`.

Round the uncertainty first

JCGM 100:2008 7.2.6. The uncertainty is rounded to one or two significant digits, and the value is then rounded to that same decimal place — never the other way round, and never independently.

12.34567 +/- 0.02345    ->    12.346 +/- 0.023
12.34567 +/- 0.1        ->    12.35  +/- 0.10        (two digits, since 1 leads)
1234     +/- 250        ->    1230   +/- 250

Two digits are the safe default. One digit is acceptable when the leading digit is 3 or more; rounding 0.14 to 0.1 changes it by 29%, which is why a leading 1 or 2 should keep two digits. scripts/format_result.py applies the rule and warns on that case.

Trailing zeros in the uncertainty are significant and must be kept: 0.10, not 0.1.

Raw lines 7 to 24
Runs code scripts/format_result.py :21
25## Notations
27| Notation | Example | Where it is used |
28| --- | --- | --- |
29| Plus-minus | 12.346 ± 0.023 mm | prose, tables |
30| Concise / parenthetic | 12.346(23) mm | physics, CODATA, high-precision tables |
31| Scientific | (9.1093837139 ± 0.0000000028)e-31 kg | very large or small values |
32| Concise scientific | 9.1093837139(28)e-31 kg | constants |
34In concise notation the digits in parentheses apply to the last digits of the quoted
35value, so `12.346(23)` is 12.346 ± 0.023 and `1234(25)` is 1234 ± 25. When the
36uncertainty's last significant digit falls left of the decimal point the notation is
37ambiguous and the scientific form must be used instead.

Notations

NotationExampleWhere it is used
Plus-minus12.346 ± 0.023 mmprose, tables
Concise / parenthetic12.346(23) mmphysics, CODATA, high-precision tables
Scientific(9.1093837139 ± 0.0000000028)e-31 kgvery large or small values
Concise scientific9.1093837139(28)e-31 kgconstants

In concise notation the digits in parentheses apply to the last digits of the quoted value, so 12.346(23) is 12.346 ± 0.023 and 1234(25) is 1234 ± 25. When the uncertainty's last significant digit falls left of the decimal point the notation is ambiguous and the scientific form must be used instead.

Raw lines 25 to 38
39## What has to be stated alongside
41A bare `±` is ambiguous. Readers cannot tell a standard uncertainty from an expanded
42one, a standard deviation from a standard error, or a 95% interval from a 68% one. State:
441. **Which quantity the number is** — combined standard uncertainty u_c, expanded
45 uncertainty U, standard deviation of a sample, standard error of a mean, or a
46 confidence interval.
472. **The coverage factor k**, when U is reported.
483. **The coverage probability** and how it was arrived at — from a normal assumption or
49 from effective degrees of freedom.
504. **The effective degrees of freedom**, when they are small enough to matter (below
51 about 30).
525. **The method** — GUM framework, Monte Carlo, or both with the validation outcome.
54The two standard forms:
56> m = 100.02147 g with a combined standard uncertainty of u_c = 0.35 mg.
58> m = (100.02147 ± 0.00079) g, where the number following the symbol ± is the numerical
59> value of an expanded uncertainty U = k·u_c with U determined from a combined standard
60> uncertainty u_c = 0.35 mg and a coverage factor k = 2.26 based on the t-distribution
61> for ν_eff = 9 degrees of freedom, and defines an interval estimated to have a level of
62> confidence of 95%.
64The second is verbose because it has to be. `scripts/format_result.py --coverage-factor`
65formats the supplied values; its stated probability is caller-supplied and not verified.

What has to be stated alongside

A bare ± is ambiguous. Readers cannot tell a standard uncertainty from an expanded one, a standard deviation from a standard error, or a 95% interval from a 68% one. State:

  1. Which quantity the number is — combined standard uncertainty u_c, expanded uncertainty U, standard deviation of a sample, standard error of a mean, or a confidence interval.
  2. The coverage factor k, when U is reported.
  3. The coverage probability and how it was arrived at — from a normal assumption or from effective degrees of freedom.
  4. The effective degrees of freedom, when they are small enough to matter (below about 30).
  5. The method — GUM framework, Monte Carlo, or both with the validation outcome.

The two standard forms:

m = 100.02147 g with a combined standard uncertainty of u_c = 0.35 mg.
m = (100.02147 ± 0.00079) g, where the number following the symbol ± is the numerical value of an expanded uncertainty U = k·u_c with U determined from a combined standard uncertainty u_c = 0.35 mg and a coverage factor k = 2.26 based on the t-distribution for ν_eff = 9 degrees of freedom, and defines an interval estimated to have a level of confidence of 95%.

The second is verbose because it has to be. scripts/format_result.py --coverage-factor formats the supplied values; its stated probability is caller-supplied and not verified.

Raw lines 39 to 66
Runs code scripts/format_result.py :64
67## SD, SEM, and CI in figures
69An error bar is uninterpretable unless the caption says what it is, and the three
70common choices differ by more than a factor of two for typical n:
72| Bar | Answers | Shrinks with n |
73| --- | --- | --- |
74| Standard deviation | how much do individual observations scatter | no |
75| Standard error of the mean | how precisely is the mean located | yes, as 1/√n |
76| 95% confidence interval | plausible range for the population mean | yes |
78Choosing SEM because it looks tighter is a misrepresentation when the question is about
79spread. Every caption needs the bar's identity, n, and whether n counts biological or
80technical replicates. Two SEM bars that do not overlap do not establish a significant
81difference, and two 95% CIs that overlap slightly do not establish the absence of one.

SD, SEM, and CI in figures

An error bar is uninterpretable unless the caption says what it is, and the three common choices differ by more than a factor of two for typical n:

BarAnswersShrinks with n
Standard deviationhow much do individual observations scatterno
Standard error of the meanhow precisely is the mean locatedyes, as 1/√n
95% confidence intervalplausible range for the population meanyes

Choosing SEM because it looks tighter is a misrepresentation when the question is about spread. Every caption needs the bar's identity, n, and whether n counts biological or technical replicates. Two SEM bars that do not overlap do not establish a significant difference, and two 95% CIs that overlap slightly do not establish the absence of one.

Raw lines 67 to 82
83## Relative and absolute
85State which. A relative standard uncertainty is dimensionless and is written
86`u_r(y) = 0.0035` or `0.35%`; multiplying it by the absolute value of the estimate gives the absolute one. Mixing
87them in a single budget without conversion is a common arithmetic error — a "1%"
88component and a "0.2 mg" component cannot be combined until they are in the same form.
90For a product or quotient of independent quantities, relative uncertainties combine in
91quadrature; for a sum or difference, absolute ones do. Using the wrong one is the single
92most common propagation mistake, and it is why deriving the budget from sensitivity
93coefficients rather than from remembered rules is worth the extra step.

Relative and absolute

State which. A relative standard uncertainty is dimensionless and is written u_r(y) = 0.0035 or 0.35%; multiplying it by the absolute value of the estimate gives the absolute one. Mixing them in a single budget without conversion is a common arithmetic error — a "1%" component and a "0.2 mg" component cannot be combined until they are in the same form.

For a product or quotient of independent quantities, relative uncertainties combine in quadrature; for a sum or difference, absolute ones do. Using the wrong one is the single most common propagation mistake, and it is why deriving the budget from sensitivity coefficients rather than from remembered rules is worth the extra step.

Raw lines 83 to 94
95## Results near zero or below a detection limit
97- An uncertainty larger than the estimate does not invalidate the measurement. Retain
98 the estimate and uncertainty; assess compatibility with zero using a justified interval
99 and the intended measurement model, not the size of an unspecified error bar.
100- Do not substitute zero, LOD, or LOD/2 for a non-detect without saying so; each choice
101 biases downstream statistics differently.
102- A negative estimate of a non-negative quantity is a legitimate measurement outcome and
103 should be reported as measured, not truncated. Truncating biases any subsequent
104 average.
105- LOD and LOQ need a stated procedure and performance criteria. Multiples such as
106 3σ and 10σ of a blank are conventions in some methods, not universal definitions.
107- Zero supplied uncertainty is not evidence of exactness; it may mean uncertainty was
108 omitted or a first-order derivative vanished.

Results near zero or below a detection limit

  • An uncertainty larger than the estimate does not invalidate the measurement. Retain the estimate and uncertainty; assess compatibility with zero using a justified interval and the intended measurement model, not the size of an unspecified error bar.
  • Do not substitute zero, LOD, or LOD/2 for a non-detect without saying so; each choice biases downstream statistics differently.
  • A negative estimate of a non-negative quantity is a legitimate measurement outcome and should be reported as measured, not truncated. Truncating biases any subsequent average.
  • LOD and LOQ need a stated procedure and performance criteria. Multiples such as 3σ and 10σ of a blank are conventions in some methods, not universal definitions.
  • Zero supplied uncertainty is not evidence of exactness; it may mean uncertainty was omitted or a first-order derivative vanished.
Raw lines 95 to 109
110## Significant figures in intermediate work
112Round only at the point of reporting. Carrying rounded intermediates through a
113calculation accumulates error that the uncertainty budget does not account for, and it
114can shift the final digit. Keep full precision internally; apply
115`scripts/format_result.py` at the end.
117The same applies to constants: use `scipy.constants`, not a value typed from memory to
118four digits.

Significant figures in intermediate work

Round only at the point of reporting. Carrying rounded intermediates through a calculation accumulates error that the uncertainty budget does not account for, and it can shift the final digit. Keep full precision internally; apply scripts/format_result.py at the end.

The same applies to constants: use scipy.constants, not a value typed from memory to four digits.

Raw lines 110 to 119
Runs code scripts/format_result.py :115
120## Conformity statements
122Deciding whether a result passes a specification is a separate step from measuring it,
123because the decision depends on the specified acceptance rule and risk. An interval
124straddling a limit does not by itself settle conformity. ISO/IEC 17025 requires a documented decision rule; ILAC-G8
125describes guard-banded acceptance, where the acceptance limit is pulled inside the
126specification limit by a multiple of u_c chosen for the false-accept risk you will
127tolerate. Report the rule alongside the verdict.

Conformity statements

Deciding whether a result passes a specification is a separate step from measuring it, because the decision depends on the specified acceptance rule and risk. An interval straddling a limit does not by itself settle conformity. ISO/IEC 17025 requires a documented decision rule; ILAC-G8 describes guard-banded acceptance, where the acceptance limit is pulled inside the specification limit by a multiple of u_c chosen for the false-accept risk you will tolerate. Report the rule alongside the verdict.

Raw lines 120 to 128
129## Sources
131- JCGM 100:2008 (GUM), clause 7 — reporting uncertainty.
132- JCGM 101:2008 (GUM Supplement 1), clause 8 — numerical tolerance and validation.
133- NIST Technical Note 1297, *Guidelines for Evaluating and Expressing the Uncertainty of
134 NIST Measurement Results* — the source of the two standard sentence forms above.
135- ISO/IEC 17025:2017 clause 7.8.6 and ILAC-G8:09/2019 — decision rules and guard bands.
137Current [ILAC guidance index](https://ilac.org/publications-and-resources/ilac-guidance-series/)
138still lists ILAC G8:09/2019 (checked 2026-10-01); use its rule appropriate to the agreed
139conformity task. This skill does not certify laboratory accreditation or compliance.

Sources

  • JCGM 100:2008 (GUM), clause 7 — reporting uncertainty.
  • JCGM 101:2008 (GUM Supplement 1), clause 8 — numerical tolerance and validation.
  • NIST Technical Note 1297, Guidelines for Evaluating and Expressing the Uncertainty of NIST Measurement Results — the source of the two standard sentence forms above.
  • ISO/IEC 17025:2017 clause 7.8.6 and ILAC-G8:09/2019 — decision rules and guard bands.

Current ILAC guidance index still lists ILAC G8:09/2019 (checked 2026-10-01); use its rule appropriate to the agreed conformity task. This skill does not certify laboratory accreditation or compliance.

Raw lines 129 to 139