Функция для парного бутстрапа
Как обсуждалось в видео, парный бутстрап предполагает повторную выборку пар данных. Каждый набор пар аппроксимируется прямой — в данном случае с помощью np.polyfit(). Эта процедура повторяется многократно, и в результате получаются бутстрап-реплики значений параметров. Чтобы сделать парный бутстрап удобным инструментом, вы напишете функцию, которая выполняет его для заданного набора данных x,y.
Это упражнение является частью курса
Статистическое мышление на Python (часть 2)
Инструкции к упражнению
- Определите функцию с сигнатурой
draw_bs_pairs_linreg(x, y, size=1)для получения бутстрап-оценок параметров линейной регрессии методом парного бутстрапа.- С помощью
np.arange()создайте массив индексов от0доlen(x). Именно по этим индексам будет выполняться повторная выборка и извлечение значений из массивовxиy. - С помощью
np.empty()инициализируйте массивы реплик наклона и точки пересечения размеромsize. - Напишите цикл
for, который:- Выполняет повторную выборку индексов
indsс помощьюnp.random.choice(). - Создаёт новые массивы \(x\) и \(y\) —
bs_xиbs_y— на основе переиндексированных значенийbs_inds, применяя срезxиyпоbs_inds. - Применяет
np.polyfit()к новым массивам \(x\) и \(y\) и сохраняет вычисленные наклон и точку пересечения.
- Выполняет повторную выборку индексов
- Возвращает бутстрап-реплики наклона и точки пересечения.
- С помощью
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def draw_bs_pairs_linreg(x, y, size=1):
"""Perform pairs bootstrap for linear regression."""
# Set up array of indices to sample from: inds
inds = ____
# Initialize replicates: bs_slope_reps, bs_intercept_reps
bs_slope_reps = ____
bs_intercept_reps = ____
# Generate replicates
for i in range(size):
bs_inds = np.random.choice(____, size=____)
bs_x, bs_y = x[____], y[____]
bs_slope_reps[i], bs_intercept_reps[i] = ____
return bs_slope_reps, bs_intercept_reps