nur-dev's picture
Publish reproducibility artifacts
8094c0c verified
Raw History Blame Contribute Delete
1.21 kB
"""Finite reference distributions for verification, never model selection."""
import torch
def inverse_empirical_cdf(values,probabilities):
"""Quantiles of a finite uniform law; no interpolation between support points."""
assert values.ndim==1 and probabilities.ndim==1 and len(values)>0
assert values.device.type=='cuda' and probabilities.device==values.device
assert torch.all((probabilities>=0)&(probabilities<=1))
ordered=values.sort().values
indices=torch.ceil(probabilities*len(values)).long().clamp(1,len(values))-1
return ordered[indices]
def sign_flip_pvalues(daily_differences):
"""Enumerate the exact sign-symmetric null for independent paired days."""
assert daily_differences.ndim==1 and daily_differences.device.type=='cuda'
n=len(daily_differences)
code=torch.arange(2**n,device=daily_differences.device)
bit=torch.arange(n,device=daily_differences.device)
signs=(((code[:,None]>>bit)&1)*2-1).to(daily_differences.dtype)
simulated=(signs*daily_differences).mean(1);observed=daily_differences.mean()
one=(simulated>=observed-1e-12).double().mean()
two=(simulated.abs()>=observed.abs()-1e-12).double().mean()
return one,two