Tutorials › Pharmacometric Workflows and Reproducible Modeling › Missing Values Versus True Zeros

Data Specification and Dataset Preparation · Tutorial 10 of 399

Missing Values Versus True Zeros

Learn to represent observed zeros and missing values as distinct data states, so summaries and pharmacometric models do not mistake one for the other.

Intermediate 10 min read

What You'll Learn

  • Define observed zero, missing value, and not-applicable states in a pharmacometric dataset.
  • Choose a value-and-status representation that preserves whether a zero was actually recorded.
  • Identify how coding missing values as zero changes summaries and modeling inputs.
  • Apply consistency checks to concentration, dose, and covariate fields.
  • Recognize when a reported zero needs investigation rather than automatic recoding.

Why Zero and Missing Must Be Different

A numeric zero and a missing value can occupy the same cell in a poorly specified dataset, but they make different claims. A zero says that a value was observed or otherwise confirmed to be zero under the field’s definition. A missing value says that no usable value is available. If a data pipeline treats both as zero, downstream summaries and models cannot recover which claim the source data supported.

This distinction matters in pharmacometrics because numeric fields may represent different things: a reported concentration, an administered dose amount, or a covariate such as a count. Zero can be meaningful for some fields. A confirmed dose amount of zero is different from an unknown dose amount; a recorded count of zero concomitant medications is different from an unrecorded count. For concentrations, a reported numeric zero must be interpreted according to the measurement and reporting rules. It does not, by itself, establish that the underlying biological concentration was exactly zero.

Definition: An observed zero is the numeric value 0 recorded for a field whose definition permits zero and for which the source supports that recorded value. A missing value is a value that is unavailable, unrecorded, or unusable. Missing is not a numeric value and does not mean zero. A not-applicable state means the field does not apply to that record; it should not be silently treated as either an observed zero or an unknown value.

The data specification should identify the meaning of each state before analysis. In particular, distinguish a confirmed zero from a value that was not collected, a value that was expected but not reported, and a value that does not apply. These states may all lack a numeric measurement, but they are not interchangeable. Retaining their differences makes data review and later processing more reliable.

A Value Field and a Status Field

A robust representation stores the numeric value separately from its observation state. For example, a concentration record can have a value field and a status field. If the concentration was recorded as zero, the value is 0 and the status is observed. If no usable concentration is available, the value is empty and the status states why, where that reason is known. An empty value paired with an observed status is a contradiction that should be investigated.

Key takeaway: Store the value and the reason it is or is not available as separate information. Keep zero in the numeric field only when zero is the recorded value; represent missingness with a genuine missing value and an appropriate status or observation flag.

A dataset may use an observation flag such as MDV, under a convention in which MDV = 0 denotes an observed dependent variable and MDV = 1 denotes a missing dependent variable. The earlier material on dependent-variable and missing-observation flags covers that flag. Here, the essential check is that the flag agrees with the value: an observed zero is still an observed dependent variable, while a missing dependent variable is not turned into a zero merely to fill a numeric column. Confirm the exact flag convention used by the target software and keep it explicit.

A practical set of validation rules is:

  • If status is observed, the value must be present and pass the field’s validity checks. A value of 0 is allowed only if the field definition permits it.
  • If status is missing, the numeric value must be missing, not a placeholder such as 0, −99, or 999.
  • If status is not applicable, the reason should be defined for that record type; do not use this status to hide an unknown value.
  • If an export format requires a numeric sentinel, preserve a separate flag that identifies the sentinel and ensure the sentinel cannot be mistaken for a valid value.

Native missing values are usually safer than sentinels. A sentinel is a number, so it can accidentally enter a mean, a likelihood, or a covariate transformation if a flag is ignored. If a sentinel is unavoidable for an interface, it is a transport convention, not the scientific value; convert it to a proper missing state before analysis and validate that conversion.

Worked Example: A Concentration Recorded as Zero

Consider a hypothetical concentration dataset with three records. The source reports 0.000, 2.4, and no usable result, respectively. Assume the source documentation confirms that the first value was reported numerically as zero, and that the third result is absent. The task here is to encode the reported data, not to infer the unobserved biological concentration.

RecordReported valueStatus
A0.000Observed
B2.4Observed
CEmptyMissing: no usable result

For a simple summary of the recorded numeric results, include the two observed values and exclude the missing record. The observed mean is

$$ \bar{x}_{\text{observed}} = \frac{0.000 + 2.4}{2} = 1.2 $$

The result is 1.2 in the concentration units used by the field. If the missing record were incorrectly replaced with zero, the calculation would instead be

$$ \bar{x}_{\text{zero-filled}} = \frac{0.000 + 2.4 + 0}{3} = 0.800 $$

The two means differ because the second calculation asserts that the missing record had a recorded value of zero. That assertion is not supported by the data. Also, the reported zero should not automatically be interpreted as proof of an exact biological concentration of zero. If the source uses a special reporting rule for small or unquantifiable results, that requires its own status and handling; it must not be silently converted to either an ordinary observed zero or generic missingness.

Consequences for Summaries and Models

The change in a simple mean illustrates why zero-filling is consequential. Suppose there are \(n\) records, \(m\) observed values, and their sum is \(S\). If \(n-m\) missing values are replaced with zero, the resulting mean is \(S/n\), rather than the observed-value mean \(S/m\), provided \(m > 0\). Their difference is

$$ \frac{S}{m} - \frac{S}{n} = \frac{S(n-m)}{mn} $$

When all observed values are nonnegative and \(S > 0\), this difference is positive if any values are missing. The zero-filled mean is then smaller. The direction and size of the effect depend on the data and the missingness pattern, but the general point does not: zero-filling changes the dataset and its summaries. It does not merely make the table easier to process.

A model has the same data-integrity issue. An observed value of zero is an input value under the model’s observation and error assumptions. A missing value supplies no observed numeric result for that record. A workflow that replaces missing dependent-variable values with zero can therefore create artificial observations; a workflow that turns observed zeros into missing values can discard real recorded information. Neither transformation is justified by numeric convenience alone.

This tutorial does not prescribe a general method for analyzing missing data or imputing values. Those choices depend on the scientific question, the reason data are absent, and the model. The first requirement is more basic: preserve what was observed and what was not, so that any later decision is made using the actual data state rather than a coding accident.

Worked Example: Confirmed Zero Dose Versus Unknown Dose

In a hypothetical review of three scheduled dosing records, the source supports an administered amount of 100 mg for the first record, confirms that no amount was administered for the second, and provides no usable amount for the third. Assume that 0 mg is allowed by the field definition and that the second record is explicitly confirmed as zero. The third amount is unknown, not zero.

RecordAmount (mg)Status
A100Observed
B0Observed: zero confirmed
CEmptyMissing: amount unavailable

The sum of the two known amounts is \(100 + 0 = 100\) mg. That is a sum of known recorded amounts, not a complete total for all three records: record C remains unresolved. Replacing its missing amount with zero would claim that the amount was confirmed as zero, which the source does not say. Replacing the confirmed zero on record B with missing would discard information the source does provide.

The status therefore matters even when the numeric value appears straightforward. A value of 0 mg can represent a confirmed zero amount under the field’s definition; an empty amount with a missing status means the amount cannot be established from that record. Detailed coding of dose events and reasons for particular dosing outcomes belongs to the relevant dose-record specifications, not to an assumption that every absent amount is zero.

Worked Example: A Zero Covariate Value

Suppose a hypothetical baseline covariate records the number of concomitant medications for four subjects. The recorded values are 0, 1, and 2 for three subjects; the fourth value is unavailable. Assume the count was assessed for the first three subjects and that zero means none were reported. For the three observed values, the mean count is

$$ \bar{x}_{\text{observed}} = \frac{0 + 1 + 2}{3} = 1 $$

If the unavailable fourth value were incorrectly filled with zero, the mean would be

$$ \bar{x}_{\text{zero-filled}} = \frac{0 + 1 + 2 + 0}{4} = 0.750 $$

The first subject’s zero is meaningful because the covariate assessment supports a count of none. The fourth subject’s missing value does not establish a count of none. For a model using this covariate, the data specification should preserve this difference and define how an unavailable covariate is handled; it should not quietly create a fourth zero.

Diagnostics, Alternatives, and Limits

Before analysis, check both the codes and the values. Useful diagnostics include counting missing values separately from observed zeros, tabulating statuses by record type and subject, and checking that observed values fall within field-specific ranges. Review patterns such as an implausibly large number of zeros after a data import, or zeros appearing exactly where a source system used blank cells. Such patterns may indicate a conversion rule rather than genuine recorded zeros.

When reviewing a zero, ask what the source says was measured, recorded, or confirmed. A zero may be valid for one covariate and invalid for another. A concentration field can contain a reported zero only if the source and measurement conventions support that representation. A value below the quantification limit is a distinct measurement-reporting situation; do not decide here to substitute zero or ordinary missingness for it. It requires its own explicit coding and analysis decision.

The main alternatives for representing unavailable values have different risks:

RepresentationAdvantageRisk or condition
Native missing value plus statusSeparates absence from numeric values and retains a reason where knownDownstream tools must preserve and correctly handle missingness
Sentinel plus explicit flagCan satisfy a restrictive file interfaceSentinel may enter calculations if the flag is lost or ignored
Zero in place of missingFills a numeric cellConfounds absence with an observed zero and changes summaries or model inputs

No encoding alone explains why data are missing, proves that a reported zero is scientifically plausible, or determines the best statistical treatment. A status field is a record of data state, not a substitute for checking source documentation. Similarly, excluding a missing value from a particular calculation is not a universal missing-data strategy; it is simply different from asserting that the unavailable value equals zero.

A reliable workflow therefore validates the source-to-analysis transformation. Confirm that blank source entries remain missing, legitimate zeros survive import and export, status fields agree with values, and any sentinels are converted before analysis. Keep enough provenance to trace an unexpected zero or missing value back to its source. These checks help prevent a small data-formatting decision from becoming an undocumented modeling assumption.

Common Mistake

Common mistake: “The software requires a number, so I will replace every blank with 0; zero is a neutral placeholder.” Zero is not neutral. It is a numeric claim that can alter summaries, covariates, and model inputs. Preserve a genuine missing state, or use a documented sentinel with a separate flag and convert it safely before analysis.

The reverse mistake is also possible: treating every zero as missing because zero seems implausible. That can erase a valid recorded count or confirmed amount. Investigate the field definition and source record first; do not recode based on the appearance of the number alone.

Check Your Understanding

Answer each question using the distinction between a recorded numeric value and an unavailable value. Solutions follow each question.

  1. A covariate has observed values 0, 4, and a missing value. What is the observed-value mean, and what incorrect mean results from replacing the missing value with zero?
  2. A dose amount is blank, and the source does not confirm whether any amount was administered. Should it be encoded as 0 mg or as missing? Explain.
  3. A dataset has a numeric value of 0 and a status of missing. What is wrong with this combination, and what should be checked?
  4. Why is a sentinel such as −99 less safe than a native missing value?
  5. A concentration result is reported using a special below-quantification code. Should it automatically be converted to an observed zero? Explain.

Solutions. (1) The observed-value mean is \((0 + 4)/2 = 2\). Zero-filling gives \((0 + 4 + 0)/3 = 1.333\), which makes an unsupported claim about the missing record. (2) Encode it as missing because the source does not establish a zero amount. (3) The status says no value is available while the numeric field claims an observed zero. Check the source, the import rules, and the status convention; then correct the inconsistent field or status based on evidence. (4) A sentinel is numeric and may enter a calculation if its flag is ignored or lost; a native missing value does not masquerade as a valid numeric measurement. (5) No. Preserve a distinct status for that reporting situation and follow its defined handling rather than converting it automatically to zero.

Clinical Biostats