Second-order SCAFFOLD bias compensation / aggregate.py
Failed on benchmark
1import json, numpy as np
2from experiment import simulate, theoretical_bias
3
4def one(n, mode, seed):
5 return simulate(n,8,.028,mode,seed,rounds=6000,burn=1500)
6for n in (8,64):
7 print('N',n,'theory',theoretical_bias(.028,n,8))
8 for mode in ('vanilla','output_correction','gradient_correction'):
9 z=[one(n,mode,9000+i) for i in range(5)]
10 # output correction's relevant bias is mean_reported_x; other modes use mean_x.
11 vals=np.array([r['mean_reported_x'] for r in z])
12 print(mode,'mean',vals.mean(),'abs(mean)',abs(vals.mean()),'seed_abs_mean',np.abs(vals).mean(),'sd',vals.std())