Ошибки прогноза посылок

тема: Метрики регрессии и МНК · уровень: базовый

Условие

Пункт выдачи хранит фактическое число посылок и прогноз этого числа для нескольких дней. Для части дней прогноз ещё не был получен. Такой прогноз обозначается числом -1 и не участвует в расчётах.

Для дней с известным прогнозом нужно вычислить две метрики качества: среднюю квадратичную ошибку MSE и среднюю абсолютную ошибку MAE. Если известны фактические значения y_i, прогнозы p_i, а число дней с известным прогнозом равно k, то

MSE = (1 / k) * Σ(y_i - p_i)^2,

MAE = (1 / k) * Σ|y_i - p_i|.

При равенстве фактического и прогнозного значения ошибка этого дня равна нулю. Гарантируется, что хотя бы для одного дня прогноз известен.

Формат ввода

В первой строке дано целое число n — количество дней.

В следующих n строках даны два целых числа: y_i — фактическое число посылок в день и p_i — прогноз. Значение p_i = -1 означает пропуск прогноза.

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

Выведите в одной строке два числа: сначала MSE, затем MAE.

Каждое число необходимо вывести ровно с тремя знаками после десятичной точки. Округление выполняется до ближайшего значения, а при ровно половине между двумя значениями — в большую сторону по модулю.

Ограничения

1 ≤ n ≤ 1000.

0 ≤ y_i ≤ 1 000 000.

-1 ≤ p_i ≤ 1 000 000.

Хотя бы одно значение p_i не равно -1.

Решить задачу с автопроверкой на Python →

Куда дальше