The stuff this cycle made, archived 2026-10-21 and rendered from
git show rev65-attempt63-iterations11ofx:stuff/….
cycle99-sw-vs-s2-n100-n400-seed20261111.mdcycle99-sw-vs-s2-replication-seed20261121.mdcycle99-sw-vs-s2-third-seed20261131.md
Seed: 20261111 (new seed; per-n RNG seed is 20261111*1000+n, so 20261111100 and 20261111400). Script: stuff/cycle99-sw-vs-s2-n100-n400-seed20261111.py 20261111 <n> (pure Python, same estimator as cycle 98: Royston SW coefficients, S2 = m3^2 / m2^3). Runtime 10 s at n=100, 39 s at n=400.
Exact-size 5% critical values, each calibrated on its own 20000-draw N(0,1) run:
| n | Shapiro-Wilk: reject when W < | plain S2: reject when S2 > |
|---|---|---|
| 100 | 0.97479 | 0.22017 |
| 400 | 0.99285 | 0.05622 |
Separate 20000-draw N(0,1) size checks (fresh paired draws after calibration):
| n | SW rejection (binomial SE) | S2 rejection (binomial SE) | SW - S2 | paired SE | z |
|---|---|---|---|---|---|
| 100 | 0.0512 (0.0016) | 0.0524 (0.0016) | -0.0013 | 0.0015 | -0.9 |
| 400 | 0.0534 (0.0016) | 0.0488 (0.0015) | +0.0046 | 0.0015 | +3.1 |
Both tests sit at 5% at n=100. At n=400 S2 sits at 5% and SW is 0.0034 high, about 2 binomial SE; that is within the calibration noise of a 20000-draw cutoff (the cutoff itself carries about 0.0015 SE) and does not change any ordering below, since SW is the test that loses at n=400 even with this slight size advantage.
Power at n=100, 20000 paired draws per shape, gamma(shape, 1):
| shape | sqrt(beta1) = 2/sqrt(shape) | SW power (SE) | S2 power (SE) | SW - S2 | paired SE | z |
|---|---|---|---|---|---|---|
| 2 | 1.414 | 0.9998 (0.0001) | 0.9974 (0.0004) | +0.0023 | 0.0003 | +6.8 |
| 5 | 0.894 | 0.9032 (0.0021) | 0.8899 (0.0022) | +0.0134 | 0.0017 | +7.7 |
| 10 | 0.632 | 0.6172 (0.0034) | 0.6472 (0.0034) | -0.0301 | 0.0025 | -12.1 |
| 20 | 0.447 | 0.3522 (0.0034) | 0.3967 (0.0035) | -0.0445 | 0.0025 | -17.7 |
| 50 | 0.283 | 0.1676 (0.0026) | 0.1946 (0.0028) | -0.0271 | 0.0021 | -13.0 |
Power at n=400, 20000 paired draws per shape, gamma(shape, 1):
| shape | sqrt(beta1) = 2/sqrt(shape) | SW power (SE) | S2 power (SE) | SW - S2 | paired SE | z |
|---|---|---|---|---|---|---|
| 2 | 1.414 | 1.0000 (0.0000) | 1.0000 (0.0000) | +0.0000 | 0.0000 | 0.0 |
| 5 | 0.894 | 1.0000 (0.0000) | 1.0000 (0.0000) | +0.0000 | 0.0000 | 0.0 |
| 10 | 0.632 | 0.9984 (0.0003) | 0.9987 (0.0003) | -0.0003 | 0.0003 | -0.9 |
| 20 | 0.447 | 0.9156 (0.0020) | 0.9405 (0.0017) | -0.0249 | 0.0016 | -16.0 |
| 50 | 0.283 | 0.5333 (0.0035) | 0.6156 (0.0034) | -0.0823 | 0.0026 | -31.4 |
Flip at n=100: SW minus S2 changes sign beyond two paired SE between gamma(5) (sqrt(beta1) = 0.894, +0.0134, +7.7 SE) and gamma(10) (sqrt(beta1) = 0.632, -0.0301, -12.1 SE). Same bracket as n=200, with a wider SW edge at gamma(5) (+1.3 points vs +0.2 at n=200).
Flip at n=400: SW never leads beyond two paired SE at any shape tested. Both tests saturate at gamma(2) and gamma(5), gamma(10) is a tie (-0.9 SE), and the first S2 lead beyond two paired SE is gamma(20) (sqrt(beta1) = 0.447, -0.0249, -16.0 SE). The bracket is gamma(10) to gamma(20), sqrt(beta1) 0.45 to 0.63, but it is a tie-to-S2 transition, not an SW-lead-to-S2-lead sign flip: the SW side of the crossover has been pushed into the saturated region.
Crossover bracket sqrt(beta1) against n (cycle 95/96 for n=50, cycle 98 for n=200, this file for n=100 and n=400):
| n | bracket (shapes) | sqrt(beta1) range | SW side | S2 side |
|---|---|---|---|---|
| 50 | gamma(50) to gamma(100) | 0.20 to 0.28 | +0.014 at gamma(50), 8 SE | no S2 lead beyond 2 SE at any shape 100 to 5000 (signs flip across seeds) |
| 100 | gamma(5) to gamma(10) | 0.63 to 0.89 | +0.013 at gamma(5), 7.7 SE | -0.030 at gamma(10), 12.1 SE |
| 200 | gamma(5) to gamma(10) | 0.63 to 0.89 | +0.002 at gamma(5), 5 SE | -0.016 at gamma(10), 9.5 SE |
| 400 | gamma(10) to gamma(20) | 0.45 to 0.63 | none (tie at gamma(10), saturation above) | -0.025 at gamma(20), 16 SE |
Reading: the crossover does not move monotonically in sqrt(beta1). At n=50 SW leads everywhere down to sqrt(beta1) = 0.28 and the lead merely fades to noise below 0.2. By n=100 the ordering has inverted at moderate skew: S2 leads from sqrt(beta1) = 0.63 down and SW only wins at 0.89 and above. The 0.63 to 0.89 bracket is stable from n=100 to n=200. At n=400 the bracket appears to drop to 0.45 to 0.63, but that is because both tests are at or near power 1 from gamma(10) up, so there is no skew left at which SW can show a lead; where power is not saturated (gamma(20), gamma(50)) S2 leads by a growing margin (-2.5 and -8.2 points). The pattern is: SW's edge is a small-n phenomenon in the 0.3 to 0.9 skew range, and S2's edge in the mild-skew range widens with n (gamma(50): -2.7 points at n=100, -6.5 at n=200, -8.2 at n=400).
Replicates member-2's sweep with an independent seed, using the same script unchanged: python3 stuff/cycle99-sw-vs-s2-n100-n400-seed20261111.py 20261121 <n> (Royston SW coefficients, plain S2 = m3^2/m2^3, N = 20000 paired draws per row).
Seed: 20261121 (rng seed = seed*1000+n: 20261121100, 20261121400).
Exact-size 5% critical values (from a 20000-draw N(0,1) calibration run):
| n | SW reject if W < | S2 reject if S2 > |
|---|---|---|
| 100 | 0.97443 | 0.22371 |
| 400 | 0.99280 | 0.05518 |
| n | SW | S2 | SW-S2 (paired SE) |
|---|---|---|---|
| 100 | 0.0478 (0.0015) | 0.0477 (0.0015) | +0.0001 (0.0014) |
| 400 | 0.0513 (0.0016) | 0.0535 (0.0016) | -0.0022 (0.0016) |
All four within 2.2 binomial SE of 0.05; S2 at n=400 is the farthest (+2.2 SE), mirroring member-2's SW at n=400 (+2 SE) on the other test, so neither test has a systematic size bias here.
| shape | sqrt(b1) | SW | S2 | SW-S2 | paired SE | z |
|---|---|---|---|---|---|---|
| g2 | 1.414 | 0.9997 | 0.9970 | +0.0027 | 0.0004 | +7.2 |
| g5 | 0.894 | 0.8989 | 0.8851 | +0.0138 | 0.0018 | +7.8 |
| g10 | 0.632 | 0.6061 | 0.6397 | -0.0336 | 0.0025 | -13.3 |
| g20 | 0.447 | 0.3382 | 0.3866 | -0.0483 | 0.0025 | -19.5 |
| g50 | 0.283 | 0.1633 | 0.1890 | -0.0256 | 0.0021 | -12.2 |
Bracket at n=100: gamma(5) to gamma(10), sqrt(b1) 0.89 to 0.63 (SW +7.8 SE, S2 -13.3 SE). Same bracket and nearly the same z values as seed 20261111 (+7.7 / -12.1).
| shape | sqrt(b1) | SW | S2 | SW-S2 | paired SE | z |
|---|---|---|---|---|---|---|
| g2 | 1.414 | 1.0000 | 1.0000 | +0.0000 | 0.0000 | 0 |
| g5 | 0.894 | 1.0000 | 1.0000 | +0.0000 | 0.0000 | 0 |
| g10 | 0.632 | 0.9977 | 0.9983 | -0.0006 | 0.0003 | -1.9 |
| g20 | 0.447 | 0.9083 | 0.9408 | -0.0326 | 0.0016 | -20.2 |
| g50 | 0.283 | 0.5221 | 0.6199 | -0.0978 | 0.0026 | -37.2 |
Bracket at n=400: no SW lead anywhere beyond two SE. The tie-to-S2 transition is gamma(10) to gamma(20), sqrt(b1) 0.63 to 0.45 (gamma(10) at -1.9 SE stays just inside the 2 SE band, as member-2's tie did). Not a sign flip: there is no SW side, because SW can only lead where both tests are already saturated.
| n | SW leads at | S2 leads from | bracket sqrt(b1) | source |
|---|---|---|---|---|
| 50 | all shapes to g50 | none (fades to noise ~0.2) | below 0.28 | cycle 98 |
| 100 | g2, g5 | g10 | 0.63 - 0.89 | this file + seed 20261111 |
| 200 | g2, g5 | g10 | 0.63 - 0.89 | cycle 98 (three seeds) |
| 400 | none (saturated) | g20 | tie->S2 at 0.45 - 0.63 | this file + seed 20261111 |
Two independent seeds agree on every bracket. The crossover jumps from below sqrt(b1) 0.28 at n=50 to 0.63-0.89 at n=100, holds there through n=200, and by n=400 the SW region is swallowed by power saturation: wherever SW could win, both tests reject every sample. Practically, past n of about 100 plain S2 is never worse than SW against gamma alternatives by more than 0.3 points of power, and it is ahead by 3 to 10 points in the moderate-skew region where power is not yet saturated.
member-1. Third independent seed on member-2's unchanged script (stuff/cycle99-sw-vs-s2-n100-n400-seed20261111.py), run as python3 -I <script> 20261131 100 and ... 20261131 400. Same estimators as cycle 98: Royston SW coefficients, S2 = m3^2 / m2^3. 20000 draws per shape, paired across the two tests on the same samples. Runtime 10s at n=100, 39s at n=400.
| n | seed | rng-seed | SW critical W (reject below) | S2 critical (reject above) |
|---|---|---|---|---|
| 100 | 20261131 | 20261131100 | 0.97473 | 0.21945 |
| 400 | 20261131 | 20261131400 | 0.99271 | 0.05818 |
Critical values are the 5th / 95th empirical percentiles of a dedicated 20000-draw N(0,1) run at each n. The size check below is a separate, second 20000-draw N(0,1) run against those values.
| n | SW reject | binomial SE | S2 reject | binomial SE | paired diff | paired SE | z |
|---|---|---|---|---|---|---|---|
| 100 | 0.0504 | 0.0015 | 0.0508 | 0.0016 | -0.0004 | 0.0015 | -0.3 |
| 400 | 0.0485 | 0.0015 | 0.0481 | 0.0015 | +0.0003 | 0.0015 | +0.2 |
Both tests sit at 5% at both n: every rate is within 1.3 binomial SE of 0.05.
| shape | sqrt(b1) | SW power (SE) | S2 power (SE) | SW - S2 | paired SE | z |
|---|---|---|---|---|---|---|
| g2 | 1.414 | 0.9999 (0.0001) | 0.9976 (0.0003) | +0.0023 | 0.0003 | +6.8 |
| g5 | 0.894 | 0.9029 (0.0021) | 0.8904 (0.0022) | +0.0124 | 0.0018 | +7.0 |
| g10 | 0.632 | 0.6125 (0.0034) | 0.6459 (0.0034) | -0.0334 | 0.0025 | -13.4 |
| g20 | 0.447 | 0.3412 (0.0034) | 0.3921 (0.0035) | -0.0510 | 0.0025 | -20.2 |
| g50 | 0.283 | 0.1664 (0.0026) | 0.1933 (0.0028) | -0.0269 | 0.0021 | -12.7 |
Bracket at n=100: gamma(5) to gamma(10), sqrt(b1) 0.89 to 0.63. SW leads by +7.0 paired SE at gamma(5), S2 leads by -13.4 SE at gamma(10). Seeds 20261111 and 20261121 gave +7.7 / -12.1 and +7.8 / -13.3 at the same two shapes.
| shape | sqrt(b1) | SW power (SE) | S2 power (SE) | SW - S2 | paired SE | z |
|---|---|---|---|---|---|---|
| g2 | 1.414 | 1.0000 (0.0000) | 1.0000 (0.0000) | +0.0000 | 0.0000 | 0.0 |
| g5 | 0.894 | 1.0000 (0.0000) | 1.0000 (0.0000) | +0.0000 | 0.0000 | 0.0 |
| g10 | 0.632 | 0.9976 (0.0003) | 0.9974 (0.0004) | +0.0001 | 0.0003 | +0.4 |
| g20 | 0.447 | 0.9015 (0.0021) | 0.9305 (0.0018) | -0.0290 | 0.0016 | -18.2 |
| g50 | 0.283 | 0.5165 (0.0035) | 0.5987 (0.0035) | -0.0822 | 0.0026 | -31.6 |
Bracket at n=400: no shape where SW leads beyond two paired SE. gamma(2) and gamma(5) are saturated at 1.0000 for both tests, gamma(10) is a tie (+0.4 SE), and S2 leads from gamma(20) onward (-18.2 SE, widening to -31.6 at gamma(50)). The transition is tie-to-S2 between gamma(10) and gamma(20), sqrt(b1) 0.63 to 0.45. Seed 20261121 put the gamma(10) tie at -1.9 SE and the gamma(20) S2 lead at about -20 SE, so this seed agrees on the bracket.
| n | SW leads at | S2 leads from | bracket sqrt(b1) | source |
|---|---|---|---|---|
| 50 | all shapes to g50 | none (fades to noise ~0.2) | below 0.28 | cycle 98 |
| 100 | g2, g5 | g10 | 0.63 - 0.89 | this file + seeds 20261111, 20261121 |
| 200 | g2, g5 | g10 | 0.63 - 0.89 | cycle 98 (three seeds) |
| 400 | none (saturated) | g20 | tie->S2 at 0.45 - 0.63 | this file + seeds 20261111, 20261121 |
Three independent seeds now agree on every bracket at n=100 and n=400. The n=100 crossover sits at sqrt(b1) 0.63 to 0.89, identical to n=200, with z values reproducible to within about one SE across seeds. At n=400 the SW-favoured region has been consumed by saturation, so the only remaining difference is S2's advantage at mild skew (sqrt(b1) at or below 0.45), where it leads by 3 to 8 percentage points of power. The crossover does not drift with n between 100 and 200; it disappears at 400 because both tests reach power 1 before the shape where SW would otherwise lead.