Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
whole column as one replicated cell: ADS 1, a recommended one-point Xbar chart, the "within-cell
replication" series-length line, and an X chart plotted against the response values. Its chart
tables now start with `Observation` (#129).
- **Xbar and S chart data carry `n`.** `get_chart('Xbar')` / `get_chart('S')`, and the Excel chart
sheets, gain an `n` column after the subgroup label. Unstratified Xbar/S metadata names the label
column as `group_col` (#143).

### Fixed
- **Xbar/S `chart_table` keeps the subgroup label and `n` on every `by=`.** With a `by=` other than
time alone, such as a pooled subset (`by=['FACTOR 1', time]`), all factors, factors without time,
or one factor, the table dropped both columns, so a row couldn't be traced to its subgroup and
stepped limits went unexplained. `n` is now the aggregation's own count, which covers every cell
a pooled subgroup spans. This also corrects one row on residual charts whose limits rest on R2
(R1, R3, R4, R5) in a design with singletons: the stream's first cell, where R2 is undefined at
the first value, showed its cell size, not the one-fewer values its S and limits use. Limits,
centres and statistics are unchanged (#143).

## [0.4.0] - 2026-10-14

Expand Down
33 changes: 22 additions & 11 deletions docs/getting-started/quickstart.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,7 @@
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>group</th>\n",
" <th>n</th>\n",
" <th>xbar</th>\n",
" <th>center</th>\n",
" <th>lpl</th>\n",
Expand All @@ -489,6 +490,7 @@
" <tr>\n",
" <th>0</th>\n",
" <td>A_1</td>\n",
" <td>3</td>\n",
" <td>100.670</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -498,6 +500,7 @@
" <tr>\n",
" <th>1</th>\n",
" <td>A_2</td>\n",
" <td>3</td>\n",
" <td>97.733</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -507,6 +510,7 @@
" <tr>\n",
" <th>2</th>\n",
" <td>A_3</td>\n",
" <td>3</td>\n",
" <td>98.943</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -516,6 +520,7 @@
" <tr>\n",
" <th>3</th>\n",
" <td>A_4</td>\n",
" <td>3</td>\n",
" <td>97.947</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -525,6 +530,7 @@
" <tr>\n",
" <th>4</th>\n",
" <td>A_5</td>\n",
" <td>3</td>\n",
" <td>99.270</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -534,6 +540,7 @@
" <tr>\n",
" <th>5</th>\n",
" <td>A_6</td>\n",
" <td>3</td>\n",
" <td>98.820</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -543,6 +550,7 @@
" <tr>\n",
" <th>6</th>\n",
" <td>A_7</td>\n",
" <td>3</td>\n",
" <td>99.273</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -552,6 +560,7 @@
" <tr>\n",
" <th>7</th>\n",
" <td>A_8</td>\n",
" <td>3</td>\n",
" <td>99.737</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -561,6 +570,7 @@
" <tr>\n",
" <th>8</th>\n",
" <td>A_9</td>\n",
" <td>3</td>\n",
" <td>100.373</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -570,6 +580,7 @@
" <tr>\n",
" <th>9</th>\n",
" <td>A_10</td>\n",
" <td>3</td>\n",
" <td>98.843</td>\n",
" <td>100.292</td>\n",
" <td>96.887</td>\n",
Expand All @@ -581,17 +592,17 @@
"</div>"
],
"text/plain": [
" group xbar center lpl upl beyond_limits\n",
"0 A_1 100.670 100.292 96.887 103.696 0\n",
"1 A_2 97.733 100.292 96.887 103.696 0\n",
"2 A_3 98.943 100.292 96.887 103.696 0\n",
"3 A_4 97.947 100.292 96.887 103.696 0\n",
"4 A_5 99.270 100.292 96.887 103.696 0\n",
"5 A_6 98.820 100.292 96.887 103.696 0\n",
"6 A_7 99.273 100.292 96.887 103.696 0\n",
"7 A_8 99.737 100.292 96.887 103.696 0\n",
"8 A_9 100.373 100.292 96.887 103.696 0\n",
"9 A_10 98.843 100.292 96.887 103.696 0"
" group n xbar center lpl upl beyond_limits\n",
"0 A_1 3 100.670 100.292 96.887 103.696 0\n",
"1 A_2 3 97.733 100.292 96.887 103.696 0\n",
"2 A_3 3 98.943 100.292 96.887 103.696 0\n",
"3 A_4 3 97.947 100.292 96.887 103.696 0\n",
"4 A_5 3 99.270 100.292 96.887 103.696 0\n",
"5 A_6 3 98.820 100.292 96.887 103.696 0\n",
"6 A_7 3 99.273 100.292 96.887 103.696 0\n",
"7 A_8 3 99.737 100.292 96.887 103.696 0\n",
"8 A_9 3 100.373 100.292 96.887 103.696 0\n",
"9 A_10 3 98.843 100.292 96.887 103.696 0"
]
},
"execution_count": 6,
Expand Down
5 changes: 5 additions & 0 deletions docs/reference/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,11 @@ result.charts['Xbar']['metadata'] # dict
result.charts['Xbar']['strata'] # per-stratum payloads, when stratified
```

Xbar and S chart data carry `n`, each subgroup's own count of the values its limits
rest on, right after the subgroup label. `chart_table` shows it, with the label as
`subgroup`, whatever the `by=`: a pooled subgroup (`by=['lane', 'hour']`) counts all
the cells it pools.

### Statistics — the four-key contract

```python
Expand Down
Loading
Loading