def add_ci()

in spotify_confidence/analysis/frequentist/multiple_comparison.py [0:0]


def add_ci(df: DataFrame, **kwargs: Dict) -> DataFrame:
    lower, upper = confidence_computers[df[kwargs[METHOD]].values[0]].ci(df, ALPHA, **kwargs)

    if kwargs[CORRECTION_METHOD] in [
        HOLM,
        HOMMEL,
        SIMES_HOCHBERG,
        SPOT_1_HOLM,
        SPOT_1_HOMMEL,
        SPOT_1_SIMES_HOCHBERG,
    ] and all(df[PREFERENCE_TEST] != TWO_SIDED):
        if all(df[kwargs[METHOD]] == "z-test"):
            adjusted_lower, adjusted_upper = confidence_computers["z-test"].ci_for_multiple_comparison_methods(
                df, kwargs[CORRECTION_METHOD], alpha=1 - kwargs[INTERVAL_SIZE]
            )
        else:
            raise NotImplementedError(f"{kwargs[CORRECTION_METHOD]} is only supported for ZTests")
    elif kwargs[CORRECTION_METHOD] in [
        BONFERRONI,
        BONFERRONI_ONLY_COUNT_TWOSIDED,
        BONFERRONI_DO_NOT_COUNT_NON_INFERIORITY,
        SPOT_1,
        SPOT_1_HOLM,
        SPOT_1_HOMMEL,
        SPOT_1_SIMES_HOCHBERG,
        SPOT_1_SIDAK,
        SPOT_1_HOLM_SIDAK,
        SPOT_1_FDR_BH,
        SPOT_1_FDR_BY,
        SPOT_1_FDR_TSBH,
        SPOT_1_FDR_TSBKY,
    ]:
        adjusted_lower, adjusted_upper = confidence_computers[df[kwargs[METHOD]].values[0]].ci(
            df, ADJUSTED_ALPHA, **kwargs
        )
    else:
        warn(f"Confidence intervals not supported for {kwargs[CORRECTION_METHOD]}")
        adjusted_lower = None
        adjusted_upper = None

    return (
        df.assign(**{CI_LOWER: lower})
        .assign(**{CI_UPPER: upper})
        .assign(**{ADJUSTED_LOWER: adjusted_lower})
        .assign(**{ADJUSTED_UPPER: adjusted_upper})
    )