GJblFvJcMb / repro /src /_test_core.py
Dinesh Jinjala
Full-scale reproduction: all 6 claims VERIFIED (claims 1,2,3,5,6 upgraded from toy baseline; claim 4 exact audit preserved). Adds per-claim pages, real 2016 election data analysis, simulation RMSE+coverage, Delta-method asymptotic validity, von Neumann minimax LP. Historical toy baseline preserved at pages/historical-toy-baseline.
08e9f95
Raw
History Blame Contribute Delete
3.17 kB
"""Smoke tests for factored_policy core model (fast, local)."""
import numpy as np
import sys, os
sys.path.insert(0, os.path.dirname(__file__))
import factored_policy as F
def test_Q_matches_montecarlo():
levels = [3, 4, 2]
beta, gamma = F.random_model(levels, seed=42, gamma_scale=0.7)
pi_a = F.free_to_policy(np.array([0.2, 0.3, 0.1, 0.2, 0.3, 0.4]), levels)
pi_b = F.free_to_policy(np.array([0.25, 0.25, 0.2, 0.1, 0.4, 0.3]), levels)
Q_closed = F.Q_value(beta, gamma, levels, pi_a, pi_b, mu=0.5)
# Monte Carlo: sample profiles, average the linear-predictor win prob
rng = np.random.default_rng(1); N = 400_000
ta = np.stack([rng.choice(levels[d], size=N, p=pi_a[d]) for d in range(len(levels))], axis=1)
tb = np.stack([rng.choice(levels[d], size=N, p=pi_b[d]) for d in range(len(levels))], axis=1)
g_a = np.zeros(N); g_b = np.zeros(N)
for d in range(len(levels)):
for l in range(levels[d]-1):
g_a[ta[:, d] == l] += beta[d][l]
g_b[tb[:, d] == l] += beta[d][l]
for (d1, d2), G in gamma.items():
for i in range(G.shape[0]):
for j in range(G.shape[1]):
g_a[(ta[:, d1] == i) & (ta[:, d2] == j)] += G[i, j]
g_b[(tb[:, d1] == i) & (tb[:, d2] == j)] += G[i, j]
Q_mc = 0.5 + np.mean(g_a - g_b)
assert abs(Q_closed - Q_mc) < 0.01, (Q_closed, Q_mc)
print(f"[ok] Q closed={Q_closed:.4f} MC={Q_mc:.4f}")
def test_closed_form_is_optimum():
levels = [3, 4, 3, 2]
beta, gamma = F.random_model(levels, seed=7, gamma_scale=0.4)
n = F.free_length(levels)
p_free = np.concatenate([np.full(L-1, 1.0/L) for L in levels])
lam = 3.0
x_star = F.closed_form_policy(beta, gamma, levels, lam, p_free)
pi_star = F.free_to_policy(x_star, levels)
p_ref = F.uniform_policy(levels)
def obj(x):
pi = F.free_to_policy(x, levels)
full = np.concatenate([pi[d] for d in range(len(levels))])
full_p = np.concatenate([p_ref[d] for d in range(len(levels))])
return F.Q_value(beta, gamma, levels, pi, p_ref) - lam*np.sum((full-full_p)**2)
val_star = obj(x_star)
# random feasible search
rng = np.random.default_rng(3); best = -1e9
for _ in range(20000):
x = np.zeros(n); i=0
for L in levels:
v = rng.dirichlet(np.ones(L)); x[i:i+L-1] = v[:-1]; i += L-1
best = max(best, obj(x))
assert val_star >= best - 1e-6, (val_star, best)
print(f"[ok] closed-form obj={val_star:.5f} >= random best={best:.5f}")
def test_payoff_matrix_is_zero_sum():
levels = [2, 2, 3]
beta, gamma = F.random_model(levels, seed=11)
profiles, W = F.payoff_matrix_full(beta, gamma, levels, mu=0.5)
assert np.allclose(W + W.T, 1.0, atol=1e-9)
v_max, _ = F.maximin_value_lp(W)
v_min, _ = F.minimax_value_lp(W)
assert abs(v_max - v_min) < 1e-7, (v_max, v_min)
assert abs(v_max - 0.5) < 1e-6, v_max
print(f"[ok] antisymmetric W, von Neumann value={v_max:.6f}=0.5")
if __name__ == "__main__":
test_Q_matches_montecarlo()
test_closed_form_is_optimum()
test_payoff_matrix_is_zero_sum()
print("ALL CORE TESTS PASSED")