in src/mozanalysis/frequentist_stats/sample_size.py [0:0]
def set_raw_data_stats(self, input_data: pd.DataFrame) -> pd.DataFrame:
outlier_percentile = self._params["outlier_percentile"] / 100
overall_stats = (
input_data[[m.name for m in self._metrics]]
.agg(
[
"mean",
"std",
lambda d: d[d <= d.quantile(outlier_percentile)].mean(),
lambda d: d[d <= d.quantile(outlier_percentile)].std(),
]
)
.transpose()
)
overall_stats.columns = ["mean", "std", "mean_trimmed", "std_trimmed"]
overall_stats["trim_change_mean"] = (
overall_stats["mean_trimmed"] - overall_stats["mean"]
).abs() / overall_stats["mean"]
overall_stats["trim_change_std"] = (
overall_stats["std_trimmed"] - overall_stats["std"]
).abs() / overall_stats["std"]
self._raw_data_stats = overall_stats