F5-conf-03 — Sums of normal random variables
Question
Two propositions are given in data/propositions.csv:
- A: if X and Y are each normal, then X + Y is normal. A constant counts as a degenerate normal.
- B: if X and Y are independent and each normal, then X + Y is normal.
For each one, decide whether it is true or false. For a false proposition, give a concrete counterexample and illustrate it numerically.
Data and exclusions
propositions.csv: 2 rows (A and B).design.csv: 2 rows, giving seed = 20261029 and n = 100000.
No rows were excluded and no data problems were found (data_issues = []).
Method
The verdicts rest on mathematical proof, which is set out in full in out/argument.md:
- A is false. Counterexample: X ~ N(0,1), W an independent random sign, Y = W·X. Y is N(0,1) because the N(0,1) law is symmetric. But X + Y = (1+W)X has an atom of mass 1/2 at 0 and is not constant, so it is neither a non-degenerate nor a degenerate normal.
- B is true. Under independence the characteristic functions multiply, and Lévy's uniqueness theorem then gives X + Y ~ N(μ₁+μ₂, σ₁²+σ₂²).
The numerical illustration uses numpy.random.default_rng(20261029):
- It draws n = 100000 values of x ~ N(0,1), then independent signs w, and sets y = w·x. The (x, y) pairs are written to
out/counterexample.csv. - It reports sample means and standard deviations (ddof = 1) of x, y and x + y.
- It computes the KS distance between x + y and the normal with the sample mean and sd of x + y, as required.
- As extra diagnostics, it computes the KS distances of x and y from N(0,1) and the share of exact zeros in x + y.
Running out/analysis.py regenerates everything deterministically.
Results
| quantity | value |
|---|---|
verdict A (statement_true) |
false |
verdict B (statement_b_true) |
true |
| mean_x, sd_x | −0.0033, 0.9982 |
| mean_y, sd_y | −0.0002, 0.9982 |
| mean_sum, sd_sum | −0.0036, 1.4059 (theory: 0, √2 ≈ 1.414) |
| KS(x vs N(0,1)), KS(y vs N(0,1)) | 0.0028, 0.0016 |
| share of x + y exactly 0 | 0.5005 (theory 0.5) |
| KS(x + y vs fitted normal) | 0.2508 |
| approx. 5% KS critical value, 1.358/√n | 0.0043 |
- Marginals: the KS distances of x and y from N(0,1) are below the critical value, which is consistent with normality.
- Sum: the sum departs from normality by a wide margin. Half of the sum's mass sits exactly at 0, and its KS distance is about 58 times the critical value.
Uncertainty
- The verdicts are mathematical facts and carry no sampling uncertainty.
- Sampling variation affects only the summary numbers; for example, the share of zeros has standard error √(0.25/n) ≈ 0.0016.
- The KS critical value above is the textbook figure for a fully specified null. Because the comparison normal for the sum was fitted to the same data (Lilliefors setting), the true critical value is smaller, which only strengthens the rejection.
Limitations and open issues
- What the illustration does not show: a finite sample cannot prove that the marginals are exactly normal, and it does not prove the verdicts. The proofs are in
out/argument.md. - What it does show: the simulated construction behaves as the proof predicts. The marginals look normal at n = 100000, and the sum is clearly non-normal, with an atom at 0 of about half the mass.
- Choice of counterexample: this is one of many possible counterexamples. Another is Y = X when |X| ≤ c and Y = −X otherwise. The random-sign version was chosen because its departure from normality is the most visible.
- Extra keys: a few diagnostic keys were added inside
counterexample_values(marginal KS distances, share of zeros, critical value) alongside the required ones.