---
name: cross-tabulation
description: >
  Designs and reads a cross-tabulation properly: a banner built from the analysis
  plan rather than every available demographic, a stated base in every cell, the
  right direction of percentaging, and the discipline that stops a wide banner
  manufacturing false findings. Use for "cross-tab this", "run it by segment",
  "does this differ by age", "build the banner", "what breaks should we run",
  "why do these percentages not add up", "read this cross-tab for me", "which
  cells are worth reporting", or "split the results by customer type".
category: 05 Quantitative Analysis
ref: "05.03"
tier: 1
inherits: [K2, K3, K4, K5]
---

# Cross-Tabulation

## 1. One-line description
Builds a cross-tabulation whose banner answers the analysis plan rather than listing every variable the dataset happens to contain, puts a stated base under every cell, percentages in the direction that matches the question being asked, and reads the resulting table as a pattern rather than as a collection of cells to be scanned for anything interesting.

## 2. What this skill is used for

**The research problem it solves.** The cross-tab is the workhorse of commercial quantitative research and the place where most false findings are manufactured. Three failures do nearly all the damage. The first is the banner nobody designed: every demographic in the dataset becomes a column because the software offered it, producing thirty columns of which perhaps six could plausibly differ, and twenty-four that exist only to generate cells. The second is the direction error: a table percentaged across the row when the question was about the column, which does not merely mislead, it inverts the finding, so that "most buyers of this product are young" becomes "most young people buy this product". The third is the harvest: an analyst scans a completed banner for flagged cells, writes up the ones that came up, and has performed a search rather than an analysis. A thirty-column banner across forty questions is well over a thousand comparisons, and the false positives are not a risk, they are arithmetic. This skill supplies the design discipline before the table is run and the reading discipline after it, so that a cross-tab produces evidence rather than a fishing ground.

**Where it sits in the research lifecycle.** After descriptive analysis has established correct bases and figures, and after the analysis plan has named the comparisons that matter. Before significance testing, which it feeds, and before any subgroup finding is written.

**Typical use cases.**
- Specifying a tabulation job: which banner points, which bases, which conventions.
- Answering whether a result varies by segment, region, tenure, usage or attitude.
- Producing standard data tables for a report or an appendix.
- Reading a banner somebody else produced and deciding which cells are reportable.
- Auditing a deck built from a cross-tab, to check what was compared against what.
- Building the input a driver analysis or segmentation will later be checked against.

**Who uses it.** Research executives and data processing specialists writing tabulation specifications; analysts and research managers reading banners; client-side insight teams receiving tables from a supplier and needing to know what the columns actually mean; generalists running a quantitative phase without a tab house behind them.

## 3. When to use it

- The question is whether a result differs between groups, and you need to see the whole pattern rather than one comparison at a time.
- A tabulation job needs specifying, and somebody has to decide what goes in the banner.
- A report needs standard data tables that a reader can interrogate.
- You have a banner in front of you and need to know which of its cells can be reported and which cannot.
- A finding has been asserted about a subgroup and you need to see it in the context of the other subgroups before accepting it.
- Two variables need to be looked at together to check whether an apparent overall result is being produced by one part of the sample.
- You are preparing the comparison set that **05.02 Statistical Testing** will work on, and the count of comparisons has to be known before testing starts.

## 4. When NOT to use it

- **You need to claim that a difference is real. This skill does not test.** A cross-tab shows differences; it does not establish that they are larger than sampling variation. The distinction between a difference you can see and a difference you can claim is the boundary of this skill, and the claim belongs to **05.02 Statistical Testing**. Per **K4 §3.1**, arithmetic comparison with both bases shown is permitted; "notably higher", "significantly ahead" and "clearly differs" are not, whatever the flags in the table say.
- **The question is about the strength or shape of a relationship rather than a comparison of groups.** How closely two continuous measures move together, how much of the variation in an outcome sits with one variable once others are held constant, or whether a relationship is linear at all cannot be read from a banner. Go to **05.06 Correlation, Regression and Causal Claim Control**. Banding a continuous variable into four columns to cross-tab it discards information and can hide a non-linear pattern entirely.
- **You want to know why the groups differ.** A cross-tab establishes that they do. Attribution across several correlated banner points is a modelling question (**05.06**), and interpretation of what the difference means is **08.01 Finding to Insight Development**. A banner cannot separate the effect of age from the effect of tenure when older customers have been customers longer.
- **The bases will not carry the breaks being requested.** A sample of 800 split by five regions, three age bands and two genders produces cells of forty and fewer. Below n=30 no percentages are reported at all (**K4 §7**), and a banner that consists mostly of unreportable cells should be redesigned before it is run, not after it is read. If the client needs breaks the sample cannot support, that is a sampling conversation (**01.06 Sampling Strategy**), not a tabulation one.
- **The base definitions have not been established.** Cross-tabulating a filtered question by a banner point defined on a different base produces cells whose denominator nobody can state. Run **05.01 Descriptive Analysis** first and inherit its base register. A cross-tab built on unverified bases is faster to produce and impossible to correct later.
- **The banner is being run in order to find something to report.** Where the study has not answered its question and the analyst is widening the banner in the hope that a cell lights up, no correction and no caveat makes the output honest. That is a design failure, and the correct response is to report that the study did not answer the question, per **K4 §4.2**.
- **The data is weighted and no effective base exists per column.** Weighted column counts are not numbers of interviews and cannot be used to judge whether a cell is reportable. Get effective bases from **04.05 Weighting and Base Management** first.
- **The two variables are not independent measurements of different things.** Cross-tabulating a summary variable against one of its own components, or an index against an item inside it, produces a strong-looking pattern that is arithmetic rather than evidence. Check what each variable is made of before crossing them.

## 5. Required inputs

**Required. Without these the skill cannot run. If absent, ask; if no answer is available and work must proceed, state the assumption at the point where it bites, per K5 §5.**

- **A prepared respondent-level dataset**, with cleaning complete or its status known.
- **The base register from descriptive analysis**, or the routing and filter logic from which it can be rebuilt. Every cell in a cross-tab inherits a base from somewhere, and if that base is not documented the cell means nothing precise.
- **The questionnaire as fielded**, including scale direction and response lists, so that the rows of the table are what they claim to be.
- **The research objectives or analysis plan.** This is what a banner is derived from. Without it, a banner is a list of available variables, which is the failure this skill exists to prevent.
- **Definitions for every proposed banner point**: the exact variable and codes that construct it, whether it is mutually exclusive, and whether respondents can appear in more than one column.

**Optional, and what each one adds.**

- **The analysis plan's pre-specified comparisons (01.07).** Converts the reading of the table from a search into a set of answers to questions asked in advance, and supplies the denominator for the multiplicity arithmetic in Step 9.
- **Weighting scheme, weight variable and effective bases (04.05).** Allows weighted column percentages with honest reportability thresholds, and allows the tables to feed testing.
- **Previous waves' banner specification.** Lets banner point definitions be held constant, which is the only way a subgroup can be tracked over time. Detail on the comparability preconditions belongs to **05.05 Trend and Tracker Analysis**.
- **A stated materiality threshold.** The size of gap the business would act on, which turns "which cells are interesting" from an aesthetic judgement into a rule.
- **Segment or cluster membership variables from 09.01.** Adds attitudinal or behavioural columns that usually differentiate far more than demographics do.
- **Sample and quota documentation.** Says which banner points were controlled in sampling and which were left to fall where they fell, which changes how a column composition should be read.

## 6. Questions to ask before starting

1. **What decision does each proposed banner point serve?** Determines whether the column belongs in the banner at all. A column with no answer to this question is generating comparisons for nothing. *Default if unanswered:* build the banner from the variables named in the objectives, hold everything else back as a second-tier banner run only if a first-tier result needs explaining, and state that the banner was reduced.
2. **Which banner points could plausibly differ, and why?** Determines what the table is being read for, and separates a hypothesis from a scan. *Default:* write a one-line expectation per banner point before the tables are produced, even where it is only "no reason to expect a difference", and record it.
3. **Are the banner points mutually exclusive, and are they exhaustive?** Determines whether the columns can be compared with each other at all, and whether they sum back to the total. *Default:* check in the data rather than assuming from the labels, and mark any overlapping banner point explicitly in the table header.
4. **Which direction should the table be percentaged?** Determines what every number in the table means. *Default:* column percentages, since the usual question is "of this group, what proportion", and state the direction in the table title.
5. **What is the smallest cell that will be reported, and what happens below it?** Determines whether the requested banner is feasible and sets the suppression rule before anybody has seen which cells are inconvenient. *Default:* apply **K4 §7** thresholds, report suppressed cells as too small with their base rather than omitting them, and say up front which breaks the sample cannot support.
6. **How many comparisons will this banner generate across the full table set?** Determines how the output must be labelled and what testing regime is admissible. *Default:* count them, state the count, and treat everything not pre-specified as exploratory.
7. **Is the data weighted, and do weighted and unweighted bases both appear?** Determines the reportability threshold for every cell. *Default:* show weighted percentages with unweighted counts and effective bases in the base row, and never mix conventions inside one table.

## 7. Step-by-step methodology

**Step 1. Derive the banner from the analysis plan, not from the variable list.** Start with the questions the study exists to answer and write, against each, the comparison that would answer it. A banner point earns its column by appearing in that list. This inverts the usual practice, in which every demographic captured in the screener becomes a column because it is available, and it is the single decision that most improves a cross-tab. *Correct result:* a numbered banner specification in which every column traces to an objective, and a separate list of variables deliberately excluded, with the reason.

**Step 2. Write the expectation for each banner point before the table exists.** One line: what you expect to see, and why. "Tenure: expect longer-tenure supporters to report higher satisfaction, because attrition removes the dissatisfied." "Gender: no substantive reason to expect a difference on this measure; included because the client reports by gender." Two things follow. A banner point with no plausible mechanism is a candidate for removal, and a banner point whose expectation is contradicted becomes a genuine finding rather than a cell that caught the eye. *Correct result:* an expectation register that pre-dates the tables, which is what converts a later reading from a search into a test of stated positions.

**Step 3. Define every banner point in code, and test its structure in the data.** For each column record the exact variable and codes, the base it sits on, and two properties. **Mutual exclusivity:** can a respondent appear in two columns? Age bands cannot overlap; "uses product A" and "uses product B" routinely do; attitudinal segments should not but sometimes do after a recode. **Exhaustivity:** do the columns sum back to the total, and if not, where did the missing respondents go? A banner that loses 140 people between the total and the sum of its columns has a definition problem that will surface later as an unreconcilable table. Where a banner point is not mutually exclusive, say so in the header, because two overlapping columns cannot be compared as though they were independent groups, and testing them as such inflates significance (**05.02**, Step 2). *Correct result:* every column with a written definition, a base, an overlap flag and a reconciliation to the total.

**Step 4. Fix the direction of percentaging, and state it on the table.** This is the error that inverts meaning rather than blurring it. **Column percentages** answer "of the people in this group, what proportion gave this answer": each column sums to 100 down the rows. This is what a banner is normally for. **Row percentages** answer "of the people who gave this answer, what proportion are in this group": each row sums to 100 across the columns. This is a question about composition, not about propensity, and it is a legitimate but different question. Consider a niche product bought by 4% of under-35s and 1% of over-55s, in a population where under-35s are a fifth of the market. Column percentages say the young are four times more likely to buy. Row percentages say most buyers are not young, because there are far more older people. Both are true. Reporting one while describing the other is the commonest false statement in commercial research, and it is usually made in the write-up rather than in the table. **Total percentages** (cell as a share of the grand total) answer a third question, about the size of a joint group, and are what an investment case usually needs. *Correct result:* every table titled with its direction, and any prose statement checked against the direction of the table it came from.

**Step 5. Apply the weighting and base rules per column, before reading anything.** The base row is part of the table, not a footnote to it. For every column record the unweighted n, the weighted n where relevant, and the effective base where weights vary. It is the effective base that governs reportability, and a nominal column of 120 with a design effect of 1.7 behaves like 70. *Correct result:* a base row that a reader can use to judge every cell above it without leaving the table.

**Step 6. Run the tables, and handle small cells by disclosure rather than omission.** Below n=100 flag the small base and read directionally only; below n=30 report counts, or report the cell as too small, and never a percentage (**K4 §7**). The rule that matters here is that **a cell too small to report is reported as too small, with its base, rather than left out**. A blank in a table reads as "nothing found". A cell marked `n=19, too small to report` tells a reader that the group exists, that the study reached nineteen of them, and that a different sample would be needed to say anything about them, which is frequently a finding about coverage and occasionally the most important thing on the page. *Correct result:* no silently absent columns or rows, and a suppression register listing every cell held back with the reason.

**Step 7. Read the row before you react to the cell.** A cross-tab is read across, not down onto whichever number is furthest from the total. Take one row, look at the whole set of columns, and ask what shape it has. A **monotonic gradient** across an ordered banner (rising steadily with tenure, or with age) is a pattern, and patterns are far more credible than isolated highs because noise does not usually arrange itself in order. A **single column standing away from a flat set** is a cell, and a cell is a candidate hypothesis. **Two adjacent age bands both elevated** is more credible than one band elevated and the next depressed. Then look at the base row underneath: the cells that stand out most are very often the cells with the smallest bases, because small bases produce large swings. *Correct result:* a written reading of each row of interest that describes the shape of the whole row, names the base of any cell singled out, and distinguishes gradient from spike.

**Step 8. Check whether an apparent difference is a composition effect.** Banner points are correlated with each other, and a difference attributed to one is frequently produced by another. If a region shows higher usage and that region also contains most of the young respondents, the regional difference may be an age difference wearing a regional label. The diagnostic is a nested banner: run the row by region within age band, and see whether the regional gap survives inside each band. The extreme case, where a relationship holds in every subgroup and reverses in the combined table because the subgroups differ in size and in base rate, is a real and recurring phenomenon, not a curiosity, and it means a marginal table can point in the opposite direction to the truth. Where nesting is not possible because the bases collapse, say that the difference is confounded with the other variable and cannot be separated in this design, and route to **05.06** for the multivariate version. *Correct result:* every reported banner difference either checked against the obvious confound or explicitly labelled as unseparated.

**Step 9. Count the comparisons the banner has generated, and record the count.** A banner of c columns generates c(c-1)/2 pairwise comparisons per row: 10 columns give 45, 20 give 190, 30 give 435. Across 40 questions with an average of five rows apiece, a 30-column banner is well over eighty thousand possible comparisons, and even a disciplined reading of one comparison per row per column against the total is 30 x 40 = 1,200. At a 5% threshold with nothing true anywhere, roughly one in twenty of those flags. **The false positives are guaranteed, not risked.** The count is part of the output, because a reader cannot judge a list of subgroup findings without knowing how many cells it was selected from. *Correct result:* a stated comparison count and, alongside it, the number of positives chance alone would produce at the threshold used.

**Step 10. Separate the differences you pre-specified from the ones you found.** Take the expectation register from Step 2. Differences that were predicted and appeared are findings, and go to **05.02** for testing at the nominal threshold. Differences that were predicted and did not appear are also findings, and are usually the more useful ones because they close a question. Differences nobody predicted are hypotheses: report them with both bases, label them as observed in exploratory reading, and say what would confirm them. Per **K4 §4.2**, the selection rule is stated. The failure this step prevents is the specific and near-universal one of scanning a banner for anything significant and reporting what came up, which produces an output that is a formal-looking list of noise. *Correct result:* three separately labelled lists, and no unlabelled traffic between them.

**Step 11. Write the conventions block and hand over.** Direction of percentaging, base definitions per column, weighting status and effective bases, small-base thresholds and the suppression register, overlap flags, the comparison count, and the pre-specified versus exploratory split. This block travels with the tables into testing, into the deck and into the next wave, because per **K2 §7** a convention left behind in the tabulation is a convention that does not exist. *Correct result:* a reader receiving only the tables can state what every number is a percentage of, and in which direction.

## 8. Analytical framework

    Objective → Banner point → Expectation → Base → Direction → Pattern → Claimability

**Objective.** The decision the comparison serves. A banner point with no objective behind it is removed.
**Banner point.** The column, defined in code, with its overlap and exhaustivity properties established.
**Expectation.** What was predicted, written before the table existed.
**Base.** Unweighted n, weighted n and effective base, per column, on the table.
**Direction.** Column, row or total percentaging, stated, and matched to the question being asked.
**Pattern.** The shape of the whole row, read before any cell is singled out.
**Claimability.** Whether the difference is describable, testable or neither.

The last link is the boundary of this skill. Cross-tabulation stops at **a difference you can see**, described in arithmetic with both bases shown. **A difference you can claim** requires a test, and that is **05.02**. Against the **K2** evidence chain this skill produces Analysis and Findings and stops there; why the groups differ is Interpretation and belongs to **08.01**.

## 9. Output format

**1. Banner specification.** Produced before the tables and retained with them.

| Col | Banner point | Variable and codes | Base description | Unweighted n | Effective base | Mutually exclusive? | Objective served | Expectation |
|---|---|---|---|---|---|---|---|---|

**2. Cross-tabulation table.** Title states the question, the base description, the direction of percentaging, and the weighting status.

| Response row | Total | Col 1 | Col 2 | ... |
|---|---|---|---|---|
| Base (unweighted n) | | | | |
| Base (effective) | | | | |
| Response option, % | | | | |

Overlapping columns are marked in the header. Cells below threshold carry `n=X, too small to report` rather than a number or a blank.

**3. Row reading note**, for every row taken forward: the shape of the row in one line, the base of any cell singled out, whether the pattern is a gradient or a spike, and whether a confound was checked.

**4. Comparison count and multiplicity statement.** Columns, rows, comparisons generated, comparisons actually examined, threshold, and expected false positives at that threshold.

**5. Three labelled difference lists.** Pre-specified and confirmed; pre-specified and not found; observed in exploratory reading. Each entry carries both percentages, both bases, and the direction of percentaging.

**6. Suppression register.** Every cell or column held back, with its base and the reason.

**7. Conventions block**, per Step 11.

**Where the evidence is thin**, the format is not filled anyway. A banner point the sample cannot support appears in the specification with its base and a note that it was not tabulated, not as a column of suppressed cells. A row where no comparison was pre-specified and nothing survived the reading appears in the exploratory list or nowhere, never promoted to fill a slide. Per **K4 §1**, a column in a table is not evidence that a finding belongs in it.

## 10. Quality checks

Run before any cross-tab result is presented. **K4 §8** runs anyway; these are specific to this task.

1. Does every table title state the direction of percentaging and the base description?
2. Does every column carry an unweighted n, and an effective base where the data is weighted?
3. Has every banner point been reconciled to the total, and is any shortfall explained?
4. Is every non-mutually-exclusive banner point flagged in the header, and has it been kept out of any comparison that assumes independent groups?
5. Has any prose statement been checked against the direction of the table it came from, specifically for the column-versus-row inversion?
6. Is any cell below n=30 reported as a percentage anywhere in the output?
7. Is every suppressed cell shown as suppressed with its base, rather than blank or absent?
8. For every reported difference, was the whole row read, and is the shape of the row described?
9. Has every singled-out cell had its base checked against the bases of the cells it is being contrasted with?
10. Has the obvious confound been checked or explicitly declared unseparated for each reported banner difference?
11. Is the total comparison count stated, with the expected number of chance positives?
12. Is every reported difference labelled as pre-specified or exploratory, in the same place as the difference?
13. Has any comparative or evaluative language been used that implies a tested difference this skill has not run?
14. Do the column percentages within each column sum to 100, or carry a diagnosed reason (multi-response, rounding, missing category)?

## 11. Common failure modes

| Failure | How to recognise it | How to prevent it |
|---|---|---|
| **The undesigned banner** | Every demographic in the dataset is a column; nobody can say what most of them are for | Step 1: banner derived from objectives, excluded variables listed with reasons |
| **Direction inversion** | A prose claim about who buys the product built from a table showing propensity to buy, or the reverse | Direction stated in every title; Step 4 check on every prose statement against its source table |
| **Cell scanning** | A findings list that reads as the set of cells the software flagged, with no prior expectation behind any of them | Expectation register written before the tables; three labelled difference lists at Step 10 |
| **Silent suppression** | A subgroup that simply is not in the table, so a reader concludes nothing was found | Suppression register; every held-back cell reported as too small with its base |
| **Small base as finding** | The most extreme cell in the row also has the smallest base, and this is not mentioned | Base row read alongside every singled-out cell; directional reading only below n=100 |
| **Overlapping columns compared** | "Users of A are more satisfied than users of B" where a respondent can be both | Overlap tested in the data at Step 3, flagged in the header, excluded from independent-group comparisons |
| **Composition effect read as a group difference** | A regional difference that is really an age difference, or a total-table pattern that reverses inside every subgroup | Step 8 nested check, or an explicit statement that the two banner points are confounded |
| **Base drift across the table** | Rows on different filtered bases presented in one table as though comparable | Base register inherited from **05.01**; filtered rows tabulated separately with their own base row |
| **Multi-response cross-tab misread** | Column sums well above 100 taken as an error, or a multi-response row treated as a share | Convention stated in the title; mean selections per respondent reported |
| **Indexing without bases** | Index numbers against the total presented as findings, with the underlying percentages and bases dropped | Index shown only beside the raw percentages and bases it was computed from |
| **AI: reading a table it was not given** | Cell values described that do not appear in the supplied tabulation | Per **K4 §6.4**, only cells present in the supplied data are described; missing values are `[not available]` |
| **AI: narrating every difference** | Every gap in the banner turned into a sentence, producing a wall of noise with the tone of findings | Step 10 selection against the expectation register; unpredicted differences labelled as hypotheses |
| **AI: inferring banner point meaning from a label** | A column called "loyal" assumed to be an attitudinal measure when it is a spend band | Per **K4 §6.2**, every banner point defined in code before use, never from its label |

## 12. AI guardrails

Universal prohibitions are inherited from **K4** and are not repeated here. **K4 §3.1** governs the language used about every difference in this skill's output and is binding in full.

1. **Never build a banner from the variables available.** A column enters a banner because an objective requires it. If the objectives are unavailable, produce a minimal banner from the variables the questionnaire treats as key, say that the banner could not be derived from an analysis plan, and do not expand it.
2. **Never report a cross-tab figure without its column base and the direction of percentaging** in the same place. Not in a footnote, not in the appendix.
3. **Never omit a cell that is too small to report.** Show it as suppressed with its base. Silence about a subgroup is a claim that nothing was found there.
4. **Never present a percentage in language that matches the other direction of percentaging.** Before writing any sentence about a cross-tab, restate which denominator the number sits on.
5. **Never single out a cell without reporting the shape of its row and the bases of the surrounding cells.** A cell is a hypothesis; a row is evidence.
6. **Never report a list of subgroup differences without the count of comparisons it was selected from**, and the expected number of chance positives at the threshold used. Reporting only the cells that stood out is cherry-picking under **K4 §4.2**, even where every individual figure is correct.
7. **Never compare two banner columns that can contain the same respondent** as though they were independent groups.
8. **Never attribute a difference to one banner point where a correlated banner point could produce it**, unless the nested check has been run or the confound has been named as unseparated.
9. **Never carry a significance flag from a supplied tabulation into a claim** without knowing what test produced it, on what base, with what correction. An unexplained flag is not a test result (**K4 §6.3**).
10. **Never expand a banner after seeing the tables in order to locate a difference.** If additional breaks are genuinely needed, the expansion and its reason are recorded, and everything from the second run is exploratory.

## 13. Best-practice principles

1. **A banner is an argument, not an inventory.** The columns are the propositions the study is prepared to defend. Every column added dilutes the analysis and multiplies the comparisons, and the cost is paid in false findings rather than in time.
2. **Attitudinal and behavioural columns usually differentiate; demographic columns usually do not.** Age and gender are in most banners out of habit. Usage frequency, tenure, category involvement, channel and attitudinal segment are where differences actually live, and a banner weighted toward them will find more real structure with fewer columns.
3. **Write the expectation first, and the table becomes a test rather than a search.** This single habit converts cross-tabulation from an exploratory activity that produces confident-sounding noise into something closer to a confirmatory one.
4. **The base row is the most important row in the table.** Experienced analysts read it before the percentages, because it determines which of the numbers above it can be read at all.
5. **Read across, not down.** The shape of a row carries far more information than the height of a cell. A gradient across ordered columns is credible; a lone spike beside a flat row is usually a small base.
6. **The cell that surprises you is the cell most likely to be wrong.** Check its base, check its definition, check the direction of percentaging, and check whether the row it sits in has a shape, before anything else.
7. **Two banner points are never independent of each other.** Every difference you find in one is partly a difference in the others, and a cross-tab has no way to separate them. Saying so is honest; not saying so is the standard route from a table to a wrong recommendation.
8. **A blank is a claim.** Omitting a subgroup because its base is small tells the reader nothing was there. Marking it as too small tells them the truth, and often reveals a coverage problem worth more than the cell would have been.
9. **Row and total percentages are not mistakes to be avoided; they are answers to different questions.** Choose deliberately, state which, and never mix directions inside one table.
10. **Indexing compresses and misleads in equal measure.** An index of 140 against the total is unreadable without the underlying percentage and base, because 14% against 10% and 70% against 50% both index at 140 and mean quite different things.
11. **A wide banner is a symptom of an absent analysis plan.** When nobody has decided what the study is comparing, the banner grows to cover the uncertainty. The fix is upstream, in **01.07**.
12. **The table is the evidence; the deck is the argument.** Keep the full tabulation available and referenced, because a finding whose table cannot be found is a finding nobody can check (**K2 §5**).

## 14. Worked example

**INPUT**

A fictional conservation NGO, Fenwater Trust, surveys 1,100 of its supporters to inform a decision about whether to move its main appeal from postal mail to digital. The objectives are: whether supporters would continue giving if the appeal moved channel, whether willingness varies by how supporters currently give, and whether there is a group the move would lose. The dataset has 34 variables that could be banner points. The data processing brief that arrives asks for "the standard banner": age, gender, region, income band, donation size band, tenure band, giving frequency, gift aid status, volunteer status and email openers. Thirty columns once bands are expanded.

**PROCESS**

*Step 1, banner derivation.* Against the three objectives, four banner points earn a column: current giving channel (postal, digital, both), tenure band, donation size band, and age band, the last because the client's hypothesis is explicitly about older supporters. Region, income, gift aid status and volunteer status have no objective behind them and are moved to a second-tier list, to be run only if a first-tier result needs explaining. The banner drops from 30 columns to 13.

*Step 2, expectations.* Written before tabulation. Channel: expect current postal-only givers to be least willing, because the change asks something of them. Age: expect a gradient, with willingness falling with age. Tenure: no strong expectation. Donation size: no strong expectation, included because the revenue consequence depends on it.

*Step 3, definitions.* Giving channel is not mutually exclusive as originally coded: 218 supporters have given by both routes and appear in two columns. Recoded to three exclusive columns (postal only, digital only, both) which reconcile to the total. The tenure bands lose 46 supporters whose join date is missing; this is disclosed as a separate "unknown" column rather than dropped, because the missing group turns out to be older on average and dropping it would have shifted the age pattern.

*Step 4, direction.* Column percentages throughout, because the question is "of postal givers, what proportion would continue". A later request for "what share of our at-risk donors are older" is a row-percentage question and is produced as a separate table, clearly titled, rather than read off the same one.

*Steps 5 and 6, bases.* Unweighted; the sample is the supporter file, not a population sample, so no weighting. Postal-only n=402, digital-only n=486, both n=212. Age 75+ n=64, flagged small. Age 18 to 24 n=17, reported as `n=17, too small to report` with its base shown, not omitted.

*Step 7, reading the rows.* On "would continue giving if the appeal moved to email", the age row reads 91, 88, 84, 79, 71 across five ordered bands, with the oldest at n=64. **This is a gradient, not a spike**, and it survives the small base at the top end because the pattern is monotonic across all five columns. On the same row, donation size shows 84, 79, 88, 83 across four bands: no shape, one cell up, and the standout cell has the second-smallest base. That is read as noise and does not become a finding.

*Step 8, the confound, and the judgement call.* Postal-only givers show 74% willing against 92% for digital-only. Postal-only givers are also markedly older. Is the channel effect an age effect? Nesting channel within age band leaves cells of 40 to 130. Inside the two middle age bands, where bases hold, the postal-digital gap narrows from 18 points to about 9 but does not disappear. **Judgement call:** the nested cells are too small to test and too small to report as percentages in the deliverable, but they are adequate to answer a directional question about whether the gap survives. Resolution: report the headline channel difference, report that roughly half of it appears attributable to the age composition of postal givers, show the nested table in the appendix with all bases visible and flagged as directional, and state that channel and age cannot be fully separated in this design. Referred to **05.06** for the version that can hold both variables at once.

*Step 9, multiplicity.* Thirteen columns produce 78 pairwise comparisons per row. The tabulation covers 22 rows, so 1,716 possible comparisons; the disciplined reading of each column against the total is 13 x 22 = 286. At a 5% threshold roughly 14 of those would flag with nothing true anywhere. Stated in the output.

*Step 10, the three lists.* Pre-specified and confirmed: the channel difference, the age gradient. Pre-specified and not found: tenure, which is flat across all bands and closes a question the fundraising team had been asking for two years. Exploratory observation: supporters giving above the top band show higher willingness, one cell, no gradient, base 96, labelled as a hypothesis with a note that it would need a direct question next wave.

**OUTPUT**

A 13-column banner specification with four excluded variable groups and their reasons; tabulations titled with base and direction; a base row carrying unweighted n and small-base flags; three labelled difference lists; a suppression register containing the 18 to 24 band and two nested cells; and a conventions block. The headline is written as: "74% of postal-only givers say they would continue if the appeal moved to email, against 92% of digital-only givers (n=402 and n=486, column percentages, untested). Postal-only givers are older, and roughly half the gap appears to be age composition rather than channel; the two cannot be separated in this design."

**Researcher review recommended.** Whether an 18-point gap on the group that supplies most of the current revenue is acceptable risk is a materiality judgement about the appeal, not an analytical one (**K5 §2.1**), and it depends on what the digital appeal is expected to recover, which this study does not measure.

## 15. Advanced usage

**Nested and stacked banners.** Nesting one banner point inside another (channel within age band) is the standard diagnostic for a suspected composition effect, and it is limited by base size rather than by principle. Decide in advance how far the nesting can go before cells become unreportable, and treat nested tables as diagnostic rather than as reporting output. Where the bases will not carry it, the honest answer is a model (**05.06**), not a smaller cell.

**Attitudinal banner points from segmentation.** Where a segmentation exists, adding segment membership as a banner point typically differentiates far more than any demographic. Where one does not, a simple derived attitudinal split (for example, an agreement item collapsed to two groups) is often worth more than four demographic columns. Construction rules belong to **04.04**.

**Tracking a banner across waves.** A banner point whose definition changes between waves produces a subgroup trend that is an artefact of the recode. Freeze definitions, keep the specification with the tracker documentation, and where a definition must change, run both for a wave. The comparability preconditions are set out in **05.05**.

**Two-variable tables that are the analysis rather than a break.** Where both variables are substantive (channel used by task attempted, for example), the table is a finding in its own right and repays reading in both directions plus totals, with the reason for each direction stated. Residual-based reading, comparing each cell against what it would be if the two variables were unrelated, identifies where the structure actually sits and is far more informative than scanning for large percentages.

**Multi-response rows in a banner.** Percentages sum above 100 by design. Report mean selections per respondent per column as well as the percentages, because two columns with identical top answers and different selection counts behave differently, and the percentages alone will not show it.

**When the standard approach does not fit.** Very small samples with many requested breaks should produce a reduced banner and an explicit statement of which breaks the sample cannot support, agreed before fieldwork wherever possible. Where a client insists on breaks the sample will not carry, the deliverable shows the bases and the suppression register rather than the percentages, per **K4 §9**.

## 16. Skill chain

**Recommended previous skills**
- **05.01 Descriptive Analysis.** Hands over the base register, the verified figures and the scale conventions that every cell in a cross-tab inherits.
- **01.07 Analysis Plan Development.** Hands over the comparisons that the banner is built from, and the pre-specification that makes the reading confirmatory rather than exploratory.
- **04.05 Weighting and Base Management.** Hands over weights and effective bases per column, without which reportability thresholds cannot be applied to a weighted table.
- **09.01 Audience Segmentation.** Hands over segment membership as a banner point where one exists, usually the most differentiating column in the banner.

**Recommended next skills**
- **05.02 Statistical Testing.** Takes the comparison set, the bases and the comparison count, and establishes which of the visible differences can be claimed. The boundary between a difference you can see and a difference you can claim is the handover.
- **05.06 Correlation, Regression and Causal Claim Control.** Takes the questions a banner cannot answer: separating correlated banner points, holding variables constant, and anything approaching attribution.
- **08.01 Finding to Insight Development.** Takes the confirmed differences and does the interpretation work this skill deliberately leaves undone.

**Runs well alongside**
- **05.05 Trend and Tracker Analysis**, wherever a banner is being carried across waves and its definitions must be held constant.
- **13.03 AI Output Verification**, which audits a finished deck for direction inversions, missing bases and unlabelled exploratory subgroup claims.
- **K2**, for the source-reference format every cross-tab figure carries, and **K3 §4.4** for the precision limits on cell percentages.

---
A Yazi Supplied Skill and resource.
