identifiability opmatrix → tableimport fullseye as fs; fs.ledger.mv_residual_pca(R=None, noise_sigma=None, n_perm=100, seed=0) -> 'dict' (実装を直接呼ぶなら import sensitivity; sensitivity.mv_residual_pca(R=None, noise_sigma=None, n_perm=100, seed=0) -> 'dict'、台帳から引くなら opsmultivar.get("mv_residual_pca"))Do the residuals of a fitted model still carry structure? PCA of a residual matrix vs. noise.
R is (observations x variables) — e.g. one row per image, one column per pixel or
feature, holding measured minus simulated. It is not centred: a bias common to
every observation is itself a structure the model lacks.
A component counts as structural when its singular value exceeds the noise edge:
noise_sigma (e.g. the temporal noise from an EMVA 1288 characterisation):
the largest singular value of an n x p matrix of i.i.d. noise is about
sigma (sqrt(n) + sqrt(p)) (Marchenko-Pastur edge), used as the threshold;n_perm times, which keeps every column’s distribution
but destroys structure shared across columns, and component i must beat the 95th
percentile of the shuffled i-th singular values. (It cannot see a structure that
lives inside single columns, e.g. a constant bias column — use noise_sigma
for that.)Returns the singular values, the threshold(s), n_structural, the share of the
residual energy in the structural components, and their loadings (reshape a loading
to the image shape to see where the model is wrong) and scores.
py -3.11 examples/sensitivity_tour.pytable を入力に取れる)—
identifiability)Provenance: sensitivity.py — MULTIVAR operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.