July 17, 2022
Оцениваем доверительные интервалы с помощью бутстрепа
Рассмотрим, как использовать технику бутстрепа для вычисления доверительных интервалов некой величины. Допустим, что вы располагаете не очень большой выборкой данных. Предполагая, что имеются похожие объекты с аналогичными величинами, вы можете сэмлировать большой набор путем выбора с возвращением точек из уже имеющейся совокупности. Затем нужные метрики можно посчитать из этого нового набора. Сгенерируем игрушечные данные о зарплатах сотрудников некой организации:
import pandas as pd import numpy as np np.random.seed(0) N = 100 sals = np.random.normal(loc=50, scale=10, size=N) names = [f'fio{it}' for it in range(1, N+1)] df = pd.DataFrame({'fio':names, 'sal':sals}) df
Сделаем выборку с возвращением из зарплат, используя метод sample с указанием размера в параметре n и replace=True (для активации режима с возвращением):
sal_boot = df['sal'].sample(n=100000, replace=True) sal_boot
Ниже указано, как задать границы 95% доверительного интервала и посчитать среднее, нижнюю и верхнюю квантили значений:
interv = 0.95 lb = (1-interv)/2 rb = interv + (1-interv)/2 print(f"mean - {sal_boot.quantile(0.5)}, low - {sal_boot.quantile(lb)},\ right - {sal_boot.quantile(rb)}")