Задача A. Метод скользящего взвешенного среднего

Входной файл:input.txt   Ограничение времени:2 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую сглаженный ряд {t}n − m / 2t = m / 2 с использованием весов {wi}mi = 1 для расчёта среднего, где m — ширина интервала сглаживания.

Формат входного файла

Первая строка входных данных содержит два целых числа n и m. Далее следуют m целых чисел — веса wi. Последняя строка содержит n вещественных чисел — уровни ряда yt.

Формат выходного файла

Единственная строка выходного файла должна содержать уровни сглаженного ряда t с точностью не менее трёх знаков после запятой.

Ограничения

1 < n < 105

3 ⩽ m ⩽ 15

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

Входной файл (input.txt) Выходной файл (output.txt)
1
9 3
1 2 1
5 1 5 5 9 5 5 1 5
3 4 6 7 6 4 3

Задача B. Метод скользящего среднего

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую сглаженный ряд {t}n − m / 2t = m / 2, где m — ширина интервала сглаживания.

Формат входного файла

Первая строка входных данных содержит два целых числа n и m. Следующая строка содержит n вещественных чисел — уровни ряда yt.

Формат выходного файла

Единственная строка выходного файла должна содержать уровни сглаженного ряда t с точностью не менее трёх знаков после запятой.

Ограничения

1 < n < 105

3 ⩽ m ⩽ 15

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

Входной файл (input.txt) Выходной файл (output.txt)
1
9 3
5 2 5 5 8 5 5 2 5
4 4 6 6 6 4 4

Задача C. Выделение тренда

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

Условие

Пусть задан временной ряд {yt}nt = 1. Требуется написать на языке Python функцию, вычисляющую коэффициенты функции тренда h(t) = mi = 1ai gi(t).

def find_fit(x, y, f) # returns array of regression coefficients

Код решения должен содержать только определение и реализацию функции. Он не должен ничего выводить.

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

x, y — одномерные массивы типа np.ndarray. f — функция одного аргумента, возвращающая список значений функций gi, т.е. f(t){gi(t)}mi = 1.

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

Функция должна возвращать единственный np.ndarray массив — коэффициенты ai.

Ограничения

1 < n < 103

1 < m ⩽ 5

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

Стандартный вход Стандартный выход
1
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 5, 7, 11])
find_fit(x, y, lambda x: np.array((1, x)))
        
-1 2.2

Задача D. Автокорреляция

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Пусть задан временной ряд Yn1 = {yt}nt = 1. Требуется написать программу, вычисляющую значения коэффициентов автокорреляции Пирсона rl = corr(Yn − l1, Ynl), l = 1,m.

Формат входного файла

Первая строка входных данных содержит целые числа n и m — длину ряда и максимальное значение задержки. Вторая строка входного файла содержит n вещественных чисел — временной ряд.

Формат выходного файла

Выходной файл должен содержать m вещественных чисел — значения коэффициента автокорреляции с точностью не менее трёх знаков после запятой.

Ограничения

2 ⩽ m < n ⩽ 103

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

Входной файл (input.txt) Выходной файл (output.txt)
1
10 2
1 1 2 2 1 1 2 2 1 1
0.1 -1

Задача E. Двойное экспоненциальное сглаживание

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую сглаженный ряд с использованием двойного экспоненциального сглаживания.

Формат входного файла

Первая строка входных данных содержит числа n, α и β — длину ряда, параметры сглаживания данных и тренда соответственно. Далее следуют n вещественных чисел — уровни ряда yt.

Формат выходного файла

Единственная строка выходного файла должна содержать уровни сглаженного ряда t с точностью не менее трёх знаков после запятой.

Ограничения

1 < n ⩽ 105

0 <α,β1

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

Входной файл (input.txt) Выходной файл (output.txt)
1
9 0.5 0.5
1 3 5 7 9 11 13 15 17
1 3 5 7 9 11 13 15 17

Задача F. ARIMA

Входной файл:input.txt   Ограничение времени:1 сек
Выходной файл:output.txt   Ограничение памяти:512 Мб

Условие

Пусть задан временной ряд {yt}nt = 1. Требуется написать программу, вычисляющую прогноз этого ряда — значение yn + 1 с помощью модели авторегрессии ARIMA(m, k, 0).

Формат входного файла

Первая строка входных данных содержит числа n, m, k — длину ряда, глубину авторегрессии и порядок разностей временного ряда соответственно. Далее следуют n вещественных чисел — уровни ряда yt.

Формат выходного файла

Выходной файл должен содержать единственное число — прогноз n + 1 с точностью не менее четырех знаков после запятой.

Ограничения

1 < n ⩽ 105

1 ⩽ m, k ⩽ 5

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

Входной файл (input.txt) Выходной файл (output.txt)
1
9 2 1
2 3 4 6 9 14 22 35 56
90

Задача G. 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.358s 0.022s 25