SPB Git

spb/wp29_uqo

Public

# F5-conf-03 — Sums of normally distributed random variables

# Question

Are the following true? (A) If X and Y are each normal, X + Y is normal (constants count as degenerate normals). (B) If X and Y are independent and each normal, X + Y is normal. For a false proposition, give a concrete counterexample and a simulated sample from it (seed and n from data/design.csv).

# Data and exclusions

Inputs: data/propositions.csv (2 rows) and data/design.csv (2 rows: seed = 20261029, n = 100000) — n_input_rows, random_seed, n_analysed. No missing values, duplicates or anomalies were found (data_issues is empty). Nothing was excluded (out/exclusions.csv: 2 → 2). SHA-256 hashes are in out/state/data_audit.md.

# Method

The verdicts come from mathematical arguments, written out in out/argument.md. The simulation only illustrates them.

  • A (counterexample): X ~ N(0,1), S an independent random sign (±1 with probability ½ each), Y = S·X. Y is N(0,1) because the standard normal is symmetric. X + Y = (1+S)X has law ½δ₀ + ½N(0,4). That law has an atom of mass ½ at 0, so it is neither a non-degenerate normal nor a constant. I chose this construction over Y = −X because Y = −X gives a constant sum, which the proposition counts as normal.
  • B (proof): the characteristic functions of independent variables multiply, exp(iμ₁t−σ₁²t²/2)·exp(iμ₂t−σ₂²t²/2) is the characteristic function of N(μ₁+μ₂, σ₁²+σ₂²), and the uniqueness theorem then gives normality of X + Y.
  • Simulation: numpy.random.default_rng(20261029) draws n = 100000 values of X and then of S. The sample is written to out/counterexample.csv. The script computes sample means and sds (ddof = 1) and the KS distance between x+y and the normal with the sample mean and sd of x+y. As a baseline, the same RNG stream continues to draw independent normals X′, Y′, and the same KS rule is applied to X′+Y′.

# Results

  • Proposition A is false (statement_true = false), and a concrete counterexample is provided (counterexample_provided = true; counterexample_values.construction).
  • Proposition B is true (statement_b_true = true).
  • Marginals in the sample: mean_x = −0.0033, sd_x = 0.9982, mean_y = −0.0002, sd_y = 0.9982 (counterexample_values.*). KS distances to N(0,1) are 0.0028 for x and 0.0016 for y (counterexample_diagnostics.ks_x_vs_std_normal, ks_y_vs_std_normal). Both are below the approximate 5% critical value of 0.0043 (counterexample_diagnostics.ks_95pct_critical_value_approx), so they are consistent with N(0,1).
  • Sum: mean_sum = −0.0036, sd_sum = 1.4059 (counterexample_values.mean_sum, sd_sum). 50.05% of the sums are exactly 0 (counterexample_diagnostics.frac_sum_exactly_zero; theory: 50%). KS distance to the fitted normal: counterexample_values.ks_sum_vs_normal = 0.2508. The population value is 0.25 (counterexample_diagnostics.population_ks_sum_vs_N02).
  • Baseline (independent case, B): KS = 0.0020 (baseline_b_ks_sum_vs_normal), sd = 1.4124 (baseline_b_sd_sum). This is consistent with normality, as B predicts.
  • Sample correlation of x and y: −0.008 (counterexample_diagnostics.corr_xy; theoretical covariance 0). X and Y are uncorrelated normals but not jointly normal.

# Uncertainty

The verdicts are mathematical and carry no sampling uncertainty. For the illustration, KS sampling noise at n = 100000 is about 1.36/√n ≈ 0.0043 (counterexample_diagnostics.ks_95pct_critical_value_approx). The observed sum KS of 0.2508 is about 58 times larger. The marginal KS distances and the baseline KS are all below that noise level. I computed no formal p-values. Also, a KS test against a normal whose parameters are estimated from the same sample is not exactly calibrated (Lilliefors), which makes the stated critical value approximate.

# Limitations and open issues

  • What the simulation shows: a sample from the stated construction looks normal in each marginal and looks very non-normal in the sum, with an atom at 0 of mass ≈ ½. It also confirms that the code implements the construction.
  • What it does not show: a finite sample cannot prove that the marginals are exactly normal, or that any proposition is true or false. That rests on the arguments in out/argument.md. In the same way, the baseline KS for B is a consistency check, not a proof of B.
  • The population KS of 0.25 was evaluated numerically on a fine grid. Analytically it equals the jump size ½ at 0 minus ¼ on each side.
  • No open data issues.
Files · 452964ee0fbbaa40fbbed2c87a54ca798ffd6a85
Menu

Theme