in spotify_confidence/analysis/frequentist/multiple_comparison.py [0:0]
def add_adjusted_power(df: DataFrame, correction_method: str, metric_column: str, single_metric: bool) -> DataFrame:
if correction_method in CORRECTION_METHODS_THAT_REQUIRE_METRIC_INFO:
if metric_column is None:
return df.assign(**{ADJUSTED_POWER: None})
else:
number_total_metrics = 1 if single_metric else df.groupby(metric_column, sort=False).ngroups
if single_metric:
if df[df[NIM].isnull()].shape[0] > 0:
number_success_metrics = 1
else:
number_success_metrics = 0
else:
number_success_metrics = df[df[NIM].isnull()].groupby(metric_column, sort=False).ngroups
number_guardrail_metrics = number_total_metrics - number_success_metrics
power_correction = (
number_guardrail_metrics if number_success_metrics == 0 else number_guardrail_metrics + 1
)
return df.assign(**{ADJUSTED_POWER: 1 - (1 - df[POWER]) / power_correction})
else:
return df.assign(**{ADJUSTED_POWER: df[POWER]})