Задача H. Regression residuals bootstrap

Входной файл:Стандартный вход   Ограничение времени:10 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Требуется написать на языке Python функцию, вычисляющую среднее и дисперсию коэффициентов регрессии с использованием бутсрэппинга остатков регрессии (Resampling residuals)

def bootstrap(X : np.ndarray, y : np.ndarray, reg : Model, n : int):
    '''Calculates mean and variance of regression coeffitients using residuals bootstrapping.
    X - explanatory variable values
    y - response variable values
    reg - Model class object
    n - number of bootstrap cycles

    Outputs two np.ndarray values -- mean and variance respectively'''
    pass

Класс Model имеет следующий интерфейс

class Model:
    '''Represents some regression model'''

    params : np.ndarray # Current regression coeffitients
    error : np.ndarray # Current regression residuals
    y : np.ndarray # Fitted values

    def initialize(self, X : np.ndarray, y : np.ndarray):
        '''Initializes regression model. Populates params, error and y attributes.'''
        pass

    def refit(self, new_y : np.ndarray):
        '''Refits model, invalidates params attribute.'''
        pass

Формат выходных данных

Функция должна возвращать два np.ndarray массива — среднее и дисперсию коэффициентов регрессии с точностью не менее трёх знаков после запятой.

Примеры тестов

Стандартный вход Стандартный выход
1
X = np.array([[1, 1], [1, 2], [1, 3], [1, 4], [1, 5]])
y = np.array([1, 2, 3, 4, 5])
bootstrap(X, y, LinearRegression(), 10)
        
[0 1], [0 0]

0.049s 0.009s 13