Fictional example: 60 seconds or 40 seconds
In one scope, 6000 seconds of engagement are recorded for 100 active users and 150 sessions. Average per active user is 60 seconds; average per session is 40 seconds. Labels and denominators must accompany the number.
| Fictional measure | Value | Denominator or unit |
|---|---|---|
| Total recorded time | 6000 | Seconds. |
| Active users | 100 | Across the whole period. |
| Sessions | 150 | Same measurement scope. |
| Average per active user | 60 | 6000 / 100, in seconds. |
| Average per session | 40 | 6000 / 150, in seconds. |
Avoid misleading comparisons
- Separate engagement time, elapsed time and session counts. A focused tab does not establish that a person is reading or understanding.
- Do not simply average daily averages: users may return on several days. Recalculate using totals and the correct denominator for the whole period.
- Document collection, filters, devices and task context. Check missing data before interpreting zero or very short time.
Improve the task rather than prolonging the wait
Less time finding practical information can mean a better answer; more time completing a process can signal difficulty. Combine time, completion, errors and user research. Do not add artificial steps or interactions to raise an average.
Primary references
Missing data: distinguish absence, zero and estimation
Prevent silent replacement of absent values from changing the meaning of metrics.
- Cause and handling rule
- Population, count and units
- Method, version and sensitivity
Acceptance case to reproduce
Fictional example: these inputs describe no customer or observed result.
View case inputs
{
"values": [
10,
null,
0
],
"observed_count": 2,
"mean_observed": 5,
"mean_if_missing_replaced_with_zero": 3.3333333333,
"extended_sample": {
"values": [
10,
null,
0,
20,
null,
30
],
"known_count": 4,
"expected_count": 6,
"known_sum": 60,
"mean_observed": 15,
"mean_after_zero_fill": 10
},
"missing_only_sample": {
"values": [
null,
null
],
"known_count": 0,
"mean_observed": null
}
}Expected decision
The observed-value mean is 5. Replacing missing data with zero changes the population and result.
Same data, two means: show the rule
Fictional data: [10, missing, 0, 20, missing, 30]. Four known values out of six expected observations; known sum: 60. The existing zero is an observed value.
| Treatment | Mean calculation | Interpretation |
|---|---|---|
| Known values only | 60 ÷ 4 = 15 | The mean describes four known values. It does not establish that the two missing values would have the same distribution. |
| Missing values replaced with zero | 60 ÷ 6 = 10 | Two zeros were added by a rule, not observed. This mean answers a different question; justify the rule before comparing results. |
| Separate sample: [missing, missing] | Not calculable | No known values: show an unavailable state. A mean of zero would imply an observation that does not exist. |
Verification procedure
- Separate missing, zero and estimated values.
- Calculate means before and after excluding missing values.
- Keep counts and per-variable handling rules. Also test a group containing only missing values and check that it is not presented as a measured zero without an explicit rule.
Should missing values become zero?
Only when the business definition establishes that absence actually means zero. Otherwise the result changes meaning.
Primary reference: pandas — Working with missing data. Related method: read the practical guide.
