Descriptive Analysis/ Data Quality Audit
Data Quality

How to Audit Your Data Before Analysis

A complete guide to the Data Quality module in AnalyZ Solutions: missing values, duplicate rows, value range checks, digit preference, enumerator patterns, and what to do when problems are found.

12 min read Descriptive Analysis Beginner

Most data problems are invisible until they distort a result. Missing values reduce your effective sample without warning. Numeric codes masquerade as real responses. A column that never changes passes silently through every analysis while contributing nothing. Certain enumerators may have collected data carelessly, or not at all. A data quality audit finds all of these before any analysis begins.

Understanding Data Quality

01What is data quality, and why does it matter?

Data quality refers to how fit a dataset is for the analysis you intend to run. A dataset can be large, well-structured, and carefully collected and still contain problems that distort results: missing values that quietly reduce the sample, numeric codes masquerading as real responses, columns where every row holds the same value, or individual entries so extreme they are almost certainly errors.

None of these problems are dramatic. They do not crash your software or produce obvious error messages. They simply make your results less accurate or less trustworthy in ways that are hard to detect once analysis is underway. A mean on a variable with 40% missing data describes only the 60% who responded. A regression that includes a constant variable will fail. A frequency table that treats 999 as a real response distorts every percentage it contains.

The answer is to examine the data before analysing it, systematically, across all variables, using a standard set of checks. That is what a data quality audit does.

02The types of problem a quality check finds

The Data Quality module in AnalyZ Solutions is organised into four tabs, each targeting a distinct category of data problem. You run each tab independently, in any order, and only configure the checks that are relevant to your dataset.

Missing values

A missing value is any cell where no response was recorded. Missingness happens for many reasons: a question was skipped, an enumerator left a field blank, a respondent declined to answer, or a merge left some rows without a match. The key distinction is between missing completely at random (MCAR), where gaps are spread across the dataset without pattern, and missing not at random (MNAR), where gaps are concentrated in particular groups or enumerators. The latter is far more problematic, because the missing cases are systematically different from the recorded ones, which means any analysis on the observed data may be biased.

Missing value codes are a specific trap in survey data. Tools like KoBo Toolbox and ODK sometimes store "not applicable" or "refused" responses as numeric codes such as 99, 999, or -1, rather than true blanks. If these codes are not defined as missing before analysis, they appear in every calculation as real values, inflating means, distorting distributions, and understating the true missing count.

Constant and low-variance variables

A constant variable is a column where every row has the same value. It carries no information and cannot explain anything. In most analytical methods it causes errors: regression algorithms fail when a predictor has zero variance, and factor analysis cannot extract a factor from a variable with no variability.

A low-variance variable is a step below constant: not entirely uniform, but dominated by a single category (95% or more of valid responses fall in one category). These variables can technically be included in analysis, but the statistical tests that depend on them will be unreliable because there are too few observations in the minority category to estimate effects accurately.

Statistical outliers

An outlier is a value that sits far from the rest of the distribution. AnalyZ Solutions uses the standard definition: any value more than three standard deviations from the mean is flagged. Outliers are not automatically errors. A household income ten times the average may be a genuine extreme case. But an age of 150 or a weight of 9,999 is almost certainly a data entry error. The quality check flags potential outliers; it does not remove them. Investigation always comes before any decision to recode or drop a value.

Duplicate rows

A duplicate row is a record that is completely identical to at least one other record across all columns. In survey data, duplicate rows commonly occur when a submission is uploaded twice from the field, when a KoBo or ODK form is accidentally submitted more than once, or when two datasets are merged without deduplication. Duplicates inflate your effective sample size and give certain observations disproportionate weight in every analysis.

Range violations

A range violation is a value that falls outside a plausible or expected boundary for that variable. For example, a value of 150 for an age variable, a negative value for a count, or a percentage above 100 are all implausible. AnalyZ Solutions checks for these in two ways: through user-defined rules (you specify the minimum and maximum for any variable you choose) and through auto-detection, which applies heuristics based on variable names and labels, flagging negative values in variables that suggest counts, ages, or amounts, and values above 100 in variables that appear to be proportions or percentages.

Digit preference

Digit preference, also called heaping, is the tendency for respondents or enumerators to favour round numbers when estimating or reporting values. In a dataset without heaping, the last digit of a numeric variable should be roughly uniformly distributed across 0 to 9. When enumerators are guessing or rounding, digit 0 and digit 5 tend to appear far more often than the others. Significant heaping on any digit is a signal that reported values may not be precise, and in more serious cases, that data may have been fabricated.

Enumerator patterns

An enumerator is a field worker who administers survey interviews. In large multi-enumerator surveys, data quality problems are rarely distributed evenly. They tend to concentrate in the work of specific enumerators who may have misunderstood questions, taken shortcuts, or in the worst case fabricated responses. Enumerator pattern analysis examines each enumerator's work as a group and flags statistical anomalies: unusually high rates of missing data, suspiciously short interview durations, or straight-lining.

Straight-lining is the practice of giving the same response to every item in a set of scale questions. For example, answering 3, 3, 3, 3, 3 across a five-item Likert scale. It is a strong signal of inattentive responding or interview fabrication. AnalyZ Solutions checks for straight-lining within named scale groups, so you can define separate groups for different scales (for example, a wellbeing scale and a food security scale) and check each independently. A respondent is flagged as a straight-liner if their standard deviation across all items in any single group equals zero.

Define missing value codes before running the check. If your dataset uses numeric codes like 99 or 999 to represent non-responses, define them as missing values in Data Management first. Otherwise they appear as real responses in the quality report and the missing counts will be understated.
How to Do It in AnalyZ Solutions

Open Descriptive Analysis and select Data Quality. The module has a Configure panel at the top and four independent tabs below it. Each tab has its own Run button, and you run only the checks you need.

Setting up the Configure panel

Expand Configure optional checks before running any tab. This is where you set up the checks that go beyond the basic variable-level summary.

  1. Enumerator ID variable. Select the column that identifies who collected each record. Required for the Enumerator Patterns tab and for the per-enumerator duplicate breakdown in the Duplicate Rows tab.
  2. Interview start and end time. Select the timestamp columns that record when each interview began and ended. Used to calculate interview duration per enumerator. KoBo Toolbox and ODK Central export these automatically.
  3. Scale groups for straight-lining. Add one group per Likert or rating scale in your questionnaire. Give each group a label (for example, "Wellbeing scale" or "Food security index") and select all the variables that belong to it. Each group is checked independently; a respondent is flagged if their responses within any single group have zero variance.
  4. Custom range rules. For each variable where you know the valid range, add a rule specifying the minimum, maximum, or both; you can also enable Auto-detect implausible values to flag common implausibles automatically based on variable names.

Tab 1: Overview

Run this first. It checks every variable for missing values, duplicate entries within each column, outliers, constants, and low-variance variables, and produces a one-row-per-variable summary table. No configuration is required.

Tab 2: Duplicate Rows

Finds rows that are completely identical across all columns. Results include the total number of duplicate rows, how many distinct duplicate groups exist (a group is a set of two or more identical records), and a preview table with all duplicate records highlighted by group. If an enumerator variable is configured, a per-enumerator breakdown is also shown.

Tab 3: Value Issues

Shows two sub-sections. Range violations lists every variable where a rule was applied (either custom or auto-detected), the number of violations, their percentage of valid cases, and up to ten sample values so you can inspect the nature of the problem. Digit preference shows a bar chart for each numeric variable with sufficient whole-number values, with the frequency of each last digit (0 to 9) plotted against the expected frequency if responses were uniform. Bars shown in amber exceed twice the expected frequency.

Tab 4: Enumerator Patterns

Requires an enumerator variable to be set in Configure; the tab is disabled until one is selected. Produces a per-enumerator summary table with average missing rate, straight-lining percentage (if scale groups are configured), and median interview duration (if start and end timestamps are configured). Enumerators with anomalous values are flagged automatically. A second panel below the table expands the detail for each flagged enumerator, including which scale group triggered the straight-lining flag.

Running a data quality audit in AnalyZ Solutions.

03How to read the output

Overview tab output

At the top, four summary cards give an immediate picture: total variables checked, total missing cells across the dataset, the overall percentage of missing data, and the count of variables with at least one flagged issue. Below the cards, the variable-level table shows one row per variable:

ColumnWhat it shows
Variable / LabelThe column name and its variable label, if defined.
TypeInferred data type: Numeric, Text, or Date/Time.
N Valid / N MissingCount of rows with and without a recorded value.
% MissingColour-coded: amber above 10%, red above 30%.
UniqueNumber of distinct values in the column.
DuplicatesCount of values within this column that are identical to at least one other value, shown as N (%). This is within-column duplication, not full-row duplication. See the Duplicate Rows tab for row-level duplicates.
OutliersFor numeric variables only: number of values beyond three standard deviations from the mean.
IssuesA summary flag: OK, High missing, Moderate missing, Constant, Low variance, or Outliers.

Issue flags and what they mean

Outliers are flagged, not removed. A value more than three standard deviations from the mean is unusual but not automatically wrong. Always inspect the actual values in Data View before deciding to recode or drop anything.

Enumerator Patterns tab output

The anomaly flagging logic uses the following thresholds:

When to run a data quality check
  • Immediately after loading any new file or connecting a new data source.
  • After merging two datasets or appending a second wave of survey data.
  • After any significant data management step that changes the dataset.
  • Before sharing data with colleagues or submitting for peer review.

04What to do when you find problems

A data quality audit identifies problems. It does not fix them. Each type of finding calls for a different response, and several other modules in AnalyZ Solutions are directly useful for acting on what the audit reveals.

Missing values

The right response to missing data depends on why it is missing and how much of it there is. For variables with very high missingness (>50%), ignoring them in the analysis is one of the simplest approaches. You can choose to delete such variables, if you want to prevent other users of data from using them. For moderate missingness in a variable that is central to your analysis, imputation may be warranted. Review the distribution of missingness across enumerators and collection periods before deciding; concentrated missingness is a field problem, not a statistical one.

In AnalyZ Solutions: Use Delete Variables under Data Management to drop high-missingness columns, or Variable & Value Labels to define missing value codes that were entered as numeric values. If you need to impute missing values, this can be done in Data Management using mean, median, or mode substitution depending on the variable type.

Duplicate rows

Once you have confirmed which rows are genuine duplicates (not legitimate repeat interviews), remove them before any analysis. Keeping duplicate rows inflates your sample size and gives those observations double weight in every frequency, mean, and model.

In AnalyZ Solutions: Review the duplicate record preview in the Duplicate Rows tab to confirm which records should be removed, then use Manage Duplicates in Data Management to remove them. Re-run the Duplicate Rows check after deletion to confirm the dataset is clean.

Range violations

Values outside a plausible range are either data entry errors or genuine extreme cases. Inspect each one individually before deciding what to do. Common responses are: correcting the value if the true value is known from source documents, recoding to missing if the error cannot be corrected, or flagging the observation for exclusion from specific analyses.

In AnalyZ Solutions: Export the range violation list from the Value Issues tab. Use Recode Variable in Data Management to correct specific values or set them as missing. Use Summary Statistics or Frequency in Descriptive Analysis to review the corrected distribution after cleaning.

Low-variance variables

Low-variance variables should be reviewed: if the imbalance reflects a genuine feature of the population, you may choose to retain the variable with a note; if it reflects a data collection problem, removal or recoding is appropriate.

In AnalyZ Solutions: Use Delete Variables in Data Management to remove constant variables. For low-variance categorical variables, Frequency in Descriptive Analysis gives you a precise breakdown of how values are distributed before you decide.

Outliers

Never remove an outlier without inspecting it first. Open the raw data in Data View, sort the variable in question, and look at the actual values. An age of 150 is almost certainly a data entry error. A household income of ten times the median may be a legitimate extreme case worth retaining. If you do recode an outlier to missing, document the decision and the threshold you applied so others can reproduce it.

In AnalyZ Solutions: Use Data View to inspect flagged values in context. You can also generate a frequency table using Frequency in Descriptive Analysis or generate a histogram using the Data Visualization module. if you want to combine the outliers into another category, use Recode Variable in Data Management. You can also convert them into missing values using the recode function. Use Summary Statistics or Frequency in Descriptive Analysis to review the distribution after any corrections.

Enumerator anomalies

An enumerator flagged for high missing rates, short durations, or straight-lining warrants investigation, not immediate action. Review the raw records for that enumerator in Data View, filtered to their submissions. If the pattern is consistent across multiple variables and interviews, escalate to field supervision. If data fabrication is suspected, the affected records may need to be excluded from analysis entirely and noted in the methods section of your report.

In AnalyZ Solutions: Use Data View with a filter on the enumerator ID variable to inspect their specific records. Use Delete Observations in Data Management to remove suspicious records if exclusion is warranted. If you proceed with analysis excluding a flagged enumerator's data, use the Subsample Filter available in every analysis module to restrict results to the clean subset.

Digit preference

Heaping on round numbers (0 and 5) is common in self-reported continuous variables and does not always indicate a serious problem. Severe heaping, where one or two digits account for a majority of responses, is a stronger signal. In age and income data, heaping is expected and usually handled by working with ranges or rounded values rather than precise point estimates. In health or anthropometric data, heaping can indicate that measurements were estimated rather than taken, which has implications for precision.

In AnalyZ Solutions: Use Summary Statistics in Descriptive Analysis to understand the full distribution of the affected variable. For a visual distribution chart, use the Data Visualization module. If heaping is severe and precision matters for your analysis, note the limitation in your methods section.

05Common mistakes to watch for

Frequently Asked Questions
Do I need to select which variables to check?
No. The Overview tab checks every variable automatically. The other tabs check only what is relevant to the configuration you have set; for example, the Enumerator Patterns tab only runs if you have selected an enumerator variable in Configure.
What counts as a missing value?
AnalyZ Solutions treats blank cells and cells with no recorded value as missing. Numeric codes like 99 or 999 are not automatically treated as missing; define them in Data Management first so the missing count is accurate.
The outlier count is very high. Should I remove all of them?
No. Open Data View, sort the variable, and inspect the actual values. Remove only confirmed data entry errors. Genuine extreme cases should be retained and noted in your analysis write-up.
What is the difference between the Duplicates column in the Overview and the Duplicate Rows tab?
The Duplicates column in the Overview tab counts within-column repeated values; for a categorical variable, most values will appear many times and this is expected. The Duplicate Rows tab checks whether entire rows are identical across all columns simultaneously, which is the check relevant to accidental double-submissions or upload errors.
Can I check straight-lining if I have multiple scales?
Yes. In the Configure panel, add one scale group per scale and select the variables that belong to each group. Each group is checked independently. A respondent is flagged as a straight-liner if their responses have zero variance within any single group, not across all scales combined.
The median duration looks wrong. What should I check?
Check that the start and end variables you selected actually contain time of day information, not just a date. If the columns contain date-only values, the duration calculation will not be meaningful. Also confirm that both variables are in a consistent format so the difference can be computed correctly.
Can I run the check again after cleaning to confirm the fixes worked?
Yes, and this is the recommended approach. Make corrections in Data Management, return to Data Quality, and run each tab again. The updated output shows whether the flagged issues have been resolved.
What does auto-detect implausible values check for?
It uses the variable name and label as clues. Variables whose names or labels suggest a count, age, amount, income, score, or similar concept are flagged if they contain negative values. Variables whose names or labels suggest a percentage or proportion are flagged if they contain values above 100. Custom rules you define take priority and override auto-detection for the same variable.

Ready to audit your data?

Run a data quality audit in AnalyZ Solutions. Free to sign up, free to analyze.

Get started
Related Guides