What's New in Stratum 1.4

The survey-research release. SPSS and Stata files open with every label and missing code in place, codes read as words everywhere, and the tests people check against SPSS now line up row for row: Frequencies, Welch's ANOVA, Games–Howell, Hedges' g, equivalence testing and Shapiro–Wilk. Plus control-chart phases, capability for non-normal processes, and TIFF export.

Stratum 1.4 shipped on September 13, 2026, and 1.4.1 followed on September 28 with a round of fixes. Everything below is in the current version, on Mac and Windows alike. Here's the tour.

Survey data, the way it arrives

Open an SPSS or Stata file and it arrives complete

Stratum now reads .sav, .zsav and .dta, with no import wizard, because the file already says what every column is. Variable labels become column labels, so a survey whose variables are named abdefectg reads in plain English everywhere. Value labels come across, so a 1/2 sex code shows Male and Female while staying numeric underneath. And the codes a survey uses for "don't know" or "no answer", Stata's tagged missings .a through .z included, arrive already declared missing, out of your means and charts from the start. We tested it against the 2024 General Social Survey: 989 variables, 3,986 respondents, every label and missing code where it belongs. The walkthrough is in Open an SPSS .sav File.

Stratum's data grid with an SPSS .sav open: column headers showing variable labels, cells showing value labels, and a user-missing code excluded
An SPSS file as it opens: variable labels in the headers, value labels in the cells, and the “no answer” code already set aside.

Value labels and missing values for any column

The same two ideas work on data from anywhere. Give a numeric column value labels and its codes read as words in the datasheet, chart legends, ANOVA group headings and report tables, while staying numeric underneath. Declare missing values (up to three discrete codes, a range, or both) and those values are set aside from every statistic and chart without being deleted: the cell still shows what it holds, dimmed, and a CSV export gets the number back. Apply to spreads one scheme across any set of columns or the entire file, Copy From pulls in a scheme you built elsewhere, and the sheet tells you what a rule will cost before you commit: Excludes 41 of 500 values (8.2%).

Frequencies

Analyze ▸ Frequencies tabulates as many discrete columns as you like at once: every level with its count, Percent, Valid Percent and Cumulative Percent, one block per variable. Percent divides by every row and Valid Percent only by the rows with an answer, so a question 40% of respondents were never asked reports both denominators side by side. Pick Sub-Groups and every variable is tabulated within each level. Tick Goodness of Fit to test each variable's counts against equal or custom proportions, with the exact binomial test alongside.

Fixed-width text files

Instrument exports, mainframe extracts and government data files often have no delimiter at all, and splitting them on runs of spaces fails silently: a blank field slides every value right, and Mass General Hospital becomes three columns. Stratum now recognizes these files and reads the column boundaries from the file itself. The import wizard's Field Layout control switches between Delimited and Fixed Width, and fixed width puts a ruler over your own data: click to add a break, drag to move it, double-click to remove it.

Comparing groups

Welch's ANOVA, Games–Howell and Dunn's test

Welch's ANOVA tests whether means are equal without assuming a shared variance, and Games–Howell compares every pair the same way, each comparison with its own degrees of freedom. Dunn's test completes the rank-based path after Kruskal–Wallis, printed the way SPSS prints it. All of them stack as sections beneath the classical test, alongside Group Means, Levene's Test and Tukey HSD, under one Sections control. For when it matters, see Welch's ANOVA: When Variances Aren't Equal.

Stratum report showing the classical ANOVA significant but Welch's ANOVA not significant on the same data
Same data, two verdicts: the classical F test is significant, Welch's is not, and both sit in one report.

A fuller Two-Sample report, and equivalence testing

Hedges' g joins Cohen's d. A Confidence Level control sets 90, 95 or 99% for the mean difference and both effect sizes at once, Swap I / II reverses the comparison, and a Test Value asks whether the groups differ by more than a stated amount. The equal-variance check is now Levene's test, and Variances offers Welch, Pooled or Auto, which lets Levene decide and names its choice in a Test column, row by row. Levene's and both t-tests print by default, so a result checked against SPSS lines up row for row. More in Effect Size: Cohen's d, Hedges' g, η².

The new Equivalence Test turns the question round. Give it the band of differences you'd still call practically identical, as its two edges (so a bioequivalence band of 0.8 to 1.25 needs no arithmetic), and Schuirmann's two one-sided tests conclude equivalence only when the whole interval falls inside it.

Stratum Two-Sample report showing Cohen's d = 0.42 and Hedges' g = 0.42 with the t and p line
Cohen's d and Hedges' g side by side in the Two-Sample report.

Shapiro–Wilk

Shapiro–Wilk joins Anderson–Darling, Kolmogorov–Smirnov and the chi-square goodness-of-fit wherever they appear: Summary Statistics, the Histogram legend, and the Two-Sample report's normality column. Its W runs from 0 to 1, so it reads on a fixed scale, and its p-value is exact rather than a bracketed range. It's matched against R's shapiro.test across twenty-one cases covering ties, dominating outliers and every seam in the algorithm.

Two-Way ANOVA: Type II, and a factor order you set

Type II sums of squares join Type III and Type I: each main effect adjusted for the other but not for the interaction, which is what car::Anova(type = 2) reports. The Factors picker now keeps the order you pick in, and under Type I that order is the point: on the diamonds data, cut's sequential sum of squares is 11.04 billion entered first and 9.70 billion entered last. Type I, II and III Sums of Squares walks through why.

Type II partial sums of squares in Stratum: color 25.51 billion, cut 9.70 billion, matching the Type I entered-last values
Type II on the diamonds data: each factor adjusted for the other, matching the Type I entered-last values.

Quality and process

Control charts that know where the process changed

Limits estimated from every point let a drift widen the very limits meant to catch it. Set the new Phase column and Stratum splits the run into stages wherever its value changes. Limits then offers Baseline phase, which estimates from one stage and extends those limits across everything after it (the Phase I / Phase II convention), or Each phase, which gives every stage its own center line. On the piston-ring data, the whole-run upper limit was 74.017 and flagged subgroups 38 and 39. From the baseline alone it is 74.014, the value the reference quotes, and subgroup 37 is flagged too, the first point that actually left the process. The full story is in In Control and Capable.

Full X-bar chart with batches 37 to 39 above the upper control limit in red
The piston-ring run: the process drifts up, and batches 37 to 39 break out above the upper control limit.

Capability for processes that aren't normal

Cp, Cpk, Pp and Ppk assume a normal process, and on a skewed characteristic that assumption flatters it. The new Distribution control fits a Lognormal, Weibull or Exponential by maximum likelihood, or ranks all four with Best Fit, reading the indices from the fitted percentiles as ISO 22514-2 defines them. Best Fit ranks on AICc, so a two-parameter Weibull doesn't win by default over the exponential it contains: in simulation it recovers the true distribution 83% of the time, against 63% for a plain goodness-of-fit ranking. A Distribution Fit table shows every family's parameters and fit.

Correlation and regression

A Missing rows control on correlation chooses Pairwise or Listwise. Listwise uses one sample size for the whole matrix, over the same rows PCA, MANOVA, clustering and regression use, so the figures reconcile with each other and with SPSS. A pairwise matrix that comes out internally inconsistent is flagged with its smallest eigenvalue. New matrices open showing r, p and n stacked, as SPSS prints them.

In regression, Effect Tests now reports the generalized VIF of Fox & Monette for each whole term, in car::vif's two columns, GVIF and GVIF^(1/(2·Df)): one figure per term, the same whichever level is the reference.

Wide files, and charts for journals

Select several columns in the Navigator with ⇧-click or ⌘-click (Shift-click or Ctrl-click on Windows) and move or delete them in one step, undone with a single undo. Correlation and scatter matrices on a wide file no longer try to draw themselves: past 225 plots or 50,000 cells, the chart says how many it would draw and waits for Show the Matrix. A large correlation you do ask for draws only the cells in view, so it appears at once.

And charts now export as TIFF, the format journals ask for by name, everywhere a chart format is offered. The files are LZW-compressed and lossless, and each records its own resolution.

Also in 1.4 and 1.4.1: a round of fixes and refinements across the app. As always, your work stays in a single .stratum document, and nothing leaves your machine.

How to get it

Everything here is in the current version of Stratum. Existing users: choose Stratum ▸ Check for Updates…. New to Stratum? The download is always the latest release, and the free 25-lesson tutorial is the fastest way in. For what came next, see What's New in Stratum 1.5.

Download Stratum

release spss survey-data anova control-charts process-capability