def add_adjusted_power()

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]})