Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def get_bootstrap_samples(data, n_samples):
- # функция для генерации подвыборок с помощью бутстрэпа
- indices = np.random.randint(0, len(data), (n_samples, len(data)))
- samples = data[indices]
- return samples
- def stat_intervals(stat, alpha):
- # функция для интервальной оценки
- boundaries = np.percentile(stat, [100 * alpha / 2., 100 * (1 - alpha / 2.)])
- return boundaries
- # сохранение в отдельные numpy массивы данных по лояльным и уже бывшим клиентам
- normal_clients = X[ (X['NumberOfTime30-59DaysPastDueNotWorse'] == 0) &
- (X['NumberOfTimes90DaysLate'] == 0) &
- (X['NumberOfTime60-89DaysPastDueNotWorse'] == 0)]['MonthlyIncome'].values
- nishebrodi = X[ (X['NumberOfTime30-59DaysPastDueNotWorse'] != 0) &
- (X['NumberOfTimes90DaysLate'] != 0) &
- (X['NumberOfTime60-89DaysPastDueNotWorse'] != 0)]['MonthlyIncome'].values
- # ставим seed для воспроизводимости результатов
- np.random.seed(17)
- # генерируем выборки с помощью бутстрэра и сразу считаем по каждой из них среднее
- normal_scores = [np.mean(sample)
- for sample in get_bootstrap_samples(normal_clients, 1000)]
- nishebrod_mean_scores = [np.mean(sample)
- for sample in get_bootstrap_samples(nishebrodi, 1000)]
- # выводим интервальную оценку среднего
- print("Средняя у норм типов: mean interval", stat_intervals(normal_scores, 0.05))
- print("Средняя у нищебродов: mean interval", stat_intervals(nishebrod_mean_scores, 0.05))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement