Ecotoxicology

    Non-Detects in Heavy Metal Risk Assessment: Zero, LOD/2 or LOD?

    How to handle values below the detection limit (ND, BDL, <LOD) when calculating EDI, THQ and hazard index for heavy metals in food — substitution rules, dry/wet weight order, partial panels and transparent reporting.

    LabreadorOctober 27, 20265 min read

    Why non-detects matter

    Almost every trace-element dataset contains cells that are not numbers: ND, BDL, <0.02, <LOD. For cadmium, mercury or arsenic in fish muscle, these can be the majority of results. When you calculate the estimated daily intake (EDI), target hazard quotient (THQ) and hazard index (HI), how you treat those cells directly changes the conclusion of the paper.

    There are three common mistakes:

    • Silently converting ND to 0. This makes the element look perfectly safe and lowers the HI.
    • Dropping the sample entirely. The sample count shrinks without explanation.
    • Substituting without saying so. The report shows ND, but the THQ was computed from a number nobody can see.

    This guide explains the standard substitution options, the correct calculation order, and what a reviewer expects to see in the report.

    The three substitution rules

    RuleValue used for a non-detectInterpretation
    None (strict)not calculatedOnly measured values enter EDI/THQ
    LOD/2half the detection limit"Medium bound" — the most widely used convention
    LODthe detection limit itself"Upper bound" — conservative, worst case

    WHO/GEMS-Food and EFSA describe this as the lower-, medium- and upper-bound approach. Reporting the medium bound (LOD/2) and stating the upper bound as a sensitivity check is a defensible default for most food studies.

    Two things are not non-detects and must never be substituted:

    • A measured zero. If the instrument reported 0, it stays 0.
    • <LOQ. A value between LOD and LOQ was detected; the quantification limit is not a detection limit. Without a numeric value it is unresolved, not ND.

    Cell limit or element LOD?

    Non-detects arrive in two forms:

    <0.02     -> the limit is written in the cell: LOD = 0.02
    ND, BDL   -> no number: you must supply the LOD for that element
    

    When the cell contains its own limit, use it — it reflects that specific run. A text-only ND requires an element-specific LOD from your method validation. If no LOD is available, the value cannot be resolved and should be counted as unresolved rather than guessed.

    Calculation order: substitute first, then convert

    This is where many spreadsheets go wrong. The detection limit is expressed in the same unit and basis as the measurement. Substitution must therefore happen in the entered unit, before unit and dry-to-wet conversion — otherwise the LOD and the measured values scale differently.

    Example: cadmium reported as <0.02 µg/g dry weight, muscle moisture 75 %.

    Step 1  substitute (LOD/2):   0.02 / 2          = 0.01 µg/g DW
    Step 2  unit conversion:      0.01 µg/g         = 0.01 mg/kg DW
    Step 3  dry -> wet weight:    0.01 × (1 - 0.75) = 0.0025 mg/kg WW
    

    The wet-weight value 0.0025 mg/kg is what enters the EDI.

    Worked example: Cd in fish

    Assume a text ND for cadmium with an element LOD of 0.04 mg/kg wet weight, fish intake IR = 0.0546 kg/day and adult body weight BW = 70 kg. USEPA oral RfD for Cd (food) is 0.001 mg/kg bw/day.

    EDI = (C × IR) / BW
    THQ = EDI / RfD
    
    LOD/2:  C = 0.02 mg/kg
            EDI = (0.02 × 0.0546) / 70 = 1.56e-5 mg/kg bw/day
            THQ = 1.56e-5 / 0.001      = 0.0156
    
    LOD:    C = 0.04 mg/kg
            EDI = (0.04 × 0.0546) / 70 = 3.12e-5 mg/kg bw/day
            THQ = 3.12e-5 / 0.001      = 0.0312
    

    Both bounds stay far below THQ = 1, so the conclusion is robust to the substitution choice. When the two bounds fall on opposite sides of 1, the result is driven by the detection limit, not by the data — and the paper should say so.

    Partial panels and the hazard index

    HI is the sum of THQ values across elements:

    HI = Σ THQ(i)
    

    If one element in a sample was not measured at all (empty cell, x, n.a.), that sample has a partial panel. Its HI is incomplete and systematically too low. Partial panels should be clearly flagged and excluded from HI summaries, while the total number of imported samples is still reported. "4 of 6 samples have a complete panel" is honest; "n = 4" is not.

    What to put in the report

    A reader who receives only your PDF or CSV should be able to reconstruct every number. Include:

    1. The substitution rule used (none, LOD/2 or LOD).
    2. The number of substituted cells, per element.
    3. For each substituted cell: the original entry, the LOD applied, and the value used.
    4. The count of unresolved entries (missing LOD, <LOQ, invalid text) — listed, not hidden.
    5. The number of complete vs. partial panels.

    Doing it in Labreador

    The Risk Assessment calculator supports all of the above in both single-sample and batch mode, entirely in your browser:

    • Choose None, LOD/2 or LOD; the default stays strict.
    • <0.02 and < 0,04 (decimal comma) are read as cell limits; an LOD field appears only for elements with text ND/BDL.
    • Substitution happens in the entered unit before unit and moisture conversion.
    • Substituted values are tagged (½LOD / LOD) in tables, Monte Carlo uses the substituted concentration, and CSV/PDF exports list the original entry, LOD and value used.
    • Partial panels are marked and excluded from HI summaries.

    Key takeaways

    • Never turn ND into 0, and never substitute <LOQ.
    • Prefer the cell limit; otherwise use a validated element LOD.
    • Substitute first, convert units and moisture second.
    • Report LOD/2 as the main result and LOD as a sensitivity check.
    • Make every substitution visible in the exported report.