Breakdown Analysis

Breakdown-point analysis for reporting-stability decisions.

class updatesupport.breakdown.BreakdownCurvePoint(radius, observed_value, lower, upper, ambiguity, public_adequate, q_name, q_description, decision)[source]

Bases: object

One radius evaluation in a breakdown-point analysis.

Parameters:
radius: float
observed_value: float
lower: float
upper: float
ambiguity: float
public_adequate: bool
q_name: str
q_description: str
decision: DecisionResult
property observed_decision: str
property lower_decision: str
property upper_decision: str
property decision_invariant: bool
property decision_stable: bool
property threshold_crossed: bool
as_dict()[source]
Return type:

dict[str, Any]

class updatesupport.breakdown.BreakdownPointReport(title, public_columns, hidden_columns, target, target_description, observed_label, decision, q_family_name, q_family_description, radius_min, radius_max, tolerance, max_iterations, status, breakdown_radius, stable_radius, broken_radius, observed_value, observed_decision, curve)[source]

Bases: ReportArtifactMixin

Report for the smallest stress radius that breaks a decision claim.

Parameters:
title: str
public_columns: tuple[str, ...]
hidden_columns: tuple[str, ...]
target: str | None
target_description: str
observed_label: str
decision: DecisionRule
q_family_name: str
q_family_description: str
radius_min: float
radius_max: float
tolerance: float
max_iterations: int
status: str
breakdown_radius: float | None
stable_radius: float | None
broken_radius: float | None
observed_value: float
observed_decision: str
curve: tuple[BreakdownCurvePoint, ...]
property found: bool
as_dict()[source]
Return type:

dict[str, Any]

to_tables()[source]

Return named tables for structured export.

Return type:

dict[str, tuple[dict[str, Any], …]]

to_markdown()[source]

Render an analyst-facing Markdown interpretation.

Return type:

str

updatesupport.breakdown.breakdown_point(data, *, public, hidden, target, decision, weight=None, target_standard_error=None, q_family='bounded_shift', radius_min=0.0, radius_max=1.0, tolerance=0.0001, max_iterations=30, grid_size=11, min_cell_weight=1.0, top=5, title='Breakdown Point Analysis', target_description='target value', observed_label='Observed value', backend='cvxpy', solver=None, solver_options=None)[source]

Find the first radius where a reporting decision stops being stable.

The search assumes that q_family(radius) is nested in radius. A decision is stable when every admissible endpoint implies the same decision as the observed aggregate value.

Parameters:
Return type:

BreakdownPointReport