Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.77 KB | None | 0 0
  1. import numpy as np
  2. def get_bootstrap_samples(data, n_samples):
  3.     # функция для генерации подвыборок с помощью бутстрэпа
  4.     indices = np.random.randint(0, len(data), (n_samples, len(data)))
  5.     samples = data[indices]
  6.     return samples
  7. def stat_intervals(stat, alpha):
  8.     # функция для интервальной оценки
  9.     boundaries = np.percentile(stat, [100 * alpha / 2., 100 * (1 - alpha / 2.)])
  10.     return boundaries
  11.  
  12. # сохранение в отдельные numpy массивы данных по лояльным и уже бывшим клиентам
  13. normal_clients = X[ (X['NumberOfTime30-59DaysPastDueNotWorse'] == 0) &
  14.  (X['NumberOfTimes90DaysLate'] == 0) &
  15.  (X['NumberOfTime60-89DaysPastDueNotWorse'] == 0)]['MonthlyIncome'].values
  16.  
  17. nishebrodi = X[ (X['NumberOfTime30-59DaysPastDueNotWorse'] != 0) &
  18.  (X['NumberOfTimes90DaysLate'] != 0) &
  19.  (X['NumberOfTime60-89DaysPastDueNotWorse'] != 0)]['MonthlyIncome'].values
  20.  
  21.  
  22.  
  23. # ставим seed для воспроизводимости результатов
  24. np.random.seed(17)
  25.  
  26. # генерируем выборки с помощью бутстрэра и сразу считаем по каждой из них среднее
  27. normal_scores = [np.mean(sample)
  28.                        for sample in get_bootstrap_samples(normal_clients, 1000)]
  29. nishebrod_mean_scores = [np.mean(sample)
  30.                        for sample in get_bootstrap_samples(nishebrodi, 1000)]
  31.  
  32. #  выводим интервальную оценку среднего
  33. print("Средняя у норм типов:  mean interval",  stat_intervals(normal_scores, 0.05))
  34. print("Средняя у нищебродов:  mean interval",  stat_intervals(nishebrod_mean_scores, 0.05))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement