SPB Git

spb/wp29_uqo

Public

# Report — F5-conf-03: sums of normally distributed random variables

# Question

Are the following true? A: if X and Y are each normally distributed, X + Y is normal (constants count as degenerate normals). B: if X and Y are independent and each normal, X + Y is normal. Verdicts rest on the proofs in out/argument.md; the simulation is only an illustration.

# Data and exclusions

data/propositions.csv (2 rows) and data/design.csv (2 rows) were read in full (n_input_rows). SHA-256 hashes match bundle.json. No data issues were found (data_issues = []), and nothing was excluded (out/exclusions.csv). The design fixes seed = 20261029 (random_seed) and n = 100000 (n_analysed).

# Method

  • B: proved with characteristic functions plus independence (out/argument.md).
  • A: refuted with an explicit counterexample. X ~ N(0,1), W = ±1 with probability 1/2 each, independent of X, and Y = W·X. Then Y ~ N(0,1) by symmetry, but X+Y = (1+W)X has law ½δ₀ + ½N(0,4). That law has an atom of mass 1/2 at 0, so it is not normal, not even a degenerate normal. Y = −X was deliberately not used: its sum is a constant, which the proposition counts as normal.
  • Numerical illustration: out/analysis.py simulates n pairs with numpy.random.default_rng(seed) and writes them to out/counterexample.csv. It computes sample means and SDs (ddof = 1). It also computes the KS distance of each variable from a normal with the same sample mean and SD.
  • Baseline: with the same rule, the script computes the KS distance of the sum of two independent N(0,1) samples drawn from the same generator after the counterexample sample. This is the prop. B case.

# Results

  • Verdict A: false (statement_true = false). A counterexample is given (counterexample_provided = true; construction in counterexample_values.construction).
  • Verdict B: true (statement_b_true = true).
  • Marginals: mean_x = −0.0033, sd_x = 0.9982, mean_y = −0.0002 and sd_y = 0.9982 (counterexample_values.*). Their KS distances from a fitted normal are 0.0021 (ks_x_vs_normal) and 0.0020 (ks_y_vs_normal). These are the same size as the baseline for a truly normal sum, 0.0020 (baseline_independent_ks_sum_vs_normal).
  • Sum: mean_sum = −0.0036 and sd_sum = 1.4059, close to √2 (counterexample_values.mean_sum, .sd_sum). However, its KS distance from N(mean_sum, sd_sum²) is 0.2508 (counterexample_values.ks_sum_vs_normal). That is about 120 times the baseline and close to the exact theoretical value of 1/4. The cause is that 50.05% of the simulated sums are exactly 0 (frac_sum_exactly_zero), which a continuous normal would give with probability 0.
  • The sample correlation of x and y is −0.0082 (corr_xy). So x and y are uncorrelated but dependent (|y| = |x|), and (X, Y) is not jointly Gaussian.
  • Feasibility: feasibility = "complete".

# Uncertainty

The verdicts are mathematical and carry no sampling uncertainty. The simulated statistics do vary with the sample. For comparison, an approximate 5% KS critical value is 0.0043 (ks_critical_value_5pct_approx). This uses the known-parameter formula 1.358/√n, which is conservative when the parameters are estimated. The marginal KS values fall below it, and the sum's KS value exceeds it by a factor of about 58. The atom fraction 0.50047 is within about 0.3 binomial SDs of 1/2 (SD = √(0.25/n) ≈ 0.0016).

# Limitations and open issues

  • What the simulation shows and what it does not. At this seed and n, the sample's marginals are numerically indistinguishable from normal while its sum clearly is not. That is consistent with the proof. A finite sample cannot prove that a distribution is or is not normal; the verdicts rest only on out/argument.md.
  • The KS statistics are descriptive. No formal Lilliefors-corrected p-values were computed, and none are needed for the verdict.
  • No other open issues.
Files · 152a55b8fa2830f50fa35e5aed99c0037f713345
Menu

Theme