simplexuq-code / src /methods /oracle.py
anonymous0523ly's picture
Initial anonymous code release
fc329a3 verified
Raw
History Blame Contribute Delete
923 Bytes
"""Oracle local conformal: normalize by known true σ(u)."""
import numpy as np
from .base import ConformalResult
def oracle_conformal(
R_cal: np.ndarray,
R_test: np.ndarray,
alpha: float,
sigma_cal: np.ndarray,
sigma_test: np.ndarray,
) -> ConformalResult:
"""Conformal prediction with oracle (known) local scale.
Args:
R_cal: calibration residuals (n_cal,)
R_test: test residuals (n_test,)
alpha: miscoverage level
sigma_cal: true scale at calibration points (n_cal,)
sigma_test: true scale at test points (n_test,)
Returns:
ConformalResult with locally-scaled radius.
"""
S_cal = R_cal / sigma_cal
n = len(S_cal)
q = np.quantile(S_cal, np.ceil((1 - alpha) * (n + 1)) / n, method="higher")
radius = sigma_test * q
covered = R_test <= radius
return ConformalResult(covered=covered, radius=radius, threshold=q)