Banners

Weighted crosstabs with nested banners and significance letters.

Edit on GitHub
Brand × ageweighted · 95%
BrandTotal18–3435–54
Northwind42%51% A33% B
Harbor28%22% B36% A
Field & Co18%16%21%

Getting started

Open a dataset and choose the weight, or leave the banner unweighted.
Nest the banner: a question down the side, breaks across the top.

Usage

A banner is the book a client already reads: rows of brands or statements, columns of a break, a total column, and letters where columns differ. The grid stores the weight, the base, and the row identities next to every cell.

const banner = dataset.banner({
  weight: 'weight',
  rows: ['brand'],
  columns: ['age'],
  significance: { level: 0.05 },
});

Examples

Column proportions

Compare each column with every other column at 95%. A letter means that cell is higher than the named column.

Nested breaks

Put region under age. The total column stays the weighted total of the rows, not a sum of the displayed breaks.

Notes

Letters are withheld when a column base is below the cutoff, even if the percentage looks decisive. Unweighted counts stay available beside the weighted percent so a client can see the base. The grid is keyboard reachable, and each letter has a text alternative in the cell, not colour alone.

Reference

Prop

Type