Как работает прогноз матча онлайн в MLB: анализ питчеров, бэттеров и вероятности победы

Вот полная статья, которую можно использовать как описание к твоему приложению или как пояснительную статью на сайте. Она объясняет, как работает прогноз, какие метрики используются и на каких принципах основан алгоритм.


📊

На этой странице реализован автоматизированный прогноз результатов матчей Главной лиги бейсбола (MLB) на основе статистики питчеров и бэттеров. Прогноз учитывает руку питчера, сплиты против левшей и правшей, современные метрики вроде xFIP и wOBA, а также вероятность победы каждой команды.


🔍 Как работает система

Приложение анализирует данные из нескольких JSON-файлов, содержащих статистику игроков MLB. Оно:

  1. Определяет стартовых питчеров для двух команд
  2. Формирует оптимальный состав бэттеров для каждой команды
  3. Прогнозирует ожидаемое количество ранов (runs)
  4. Рассчитывает вероятность победы каждой команды
  5. Позволяет вручную редактировать состав и опубликовать прогноз на WordPress

📈 Ключевые метрики и их значение

1. wOBA (Weighted On-Base Average)

  • Что это: Взвешенный показатель выхода на базу. Учитывает все способы достижения базы (хиты, хоум-раны, уоки и т.д.) с разным весом.
  • Значение: Лучшая метрика для оценки качества атаки бэттера.
  • Как используется:
    Система отбирает топ-9 бэттеров каждой команды по wOBA против питчеров противоположной руки (например, против левши — только данные vs LHP).

✅ Пример: Если питчер — левша (LHP), система берёт Splits Leaderboard Data vs LHP.json, чтобы учесть, как каждый бэттер играет против левых.


2. xFIP (Expected Fielding Independent Pitching)

  • Что это: Ожидаемое значение FIP, но с учётом среднего показателя хоум-ранов (регулирует везение/невезение).
  • Значение: Более стабильная и предсказуемая метрика, чем ERA или FIP.
  • Как используется:
    xFIP используется как основной показатель качества питчера. Если у питчера мало иннингов (IP < 30), его xFIP «регрессирует» к лиговому среднему (4.20), чтобы избежать переоценки.

⚠️ Формула:
pitcherRuns = xFIP * 0.8 + 4.20 * 0.2 (если IP < 30)


3. K/9 и K%

  • K/9: Количество страйкаутов за 9 иннингов.
  • K%: Процент страйкаутов в аутах.
  • Значение: Показывает доминирование питчера.
  • Как используется: Выводится в интерфейсе, но не участвует напрямую в расчёте ранов.

4. IP (Innings Pitched)

  • Что это: Количество отыгранных иннингов.
  • Значение: Показывает объём выборки. Если IP < 30, данные считаются ненадёжными.
  • Как используется: Для фильтрации стартовых питчеров (SP) и регрессии xFIP.

🧮 Как рассчитывается прогноз ранов

Формула прогноза ранов основана на линейной модели, которая учитывает:

  • Силу атаки команды (через средний wOBA)
  • Силу защиты питчера (через xFIP)
  • Лиговые средние

🔢 Формула:

runs = 4.5 + (avgwOBA - 0.315) * 20 - (pitcherRuns - 4.20) * 0.6

Где:

  • 4.5 — среднее количество ранов в матче
  • 0.315 — средний wOBA по лиге
  • 4.20 — средний xFIP по лиге
  • 20 и 0.6 — эмпирические коэффициенты

✅ Пример:
Если средний wOBA бэттеров = 0.350, а xFIP питчера = 3.60, то:
runs = 4.5 + (0.350 - 0.315) * 20 - (3.60 - 4.20) * 0.6 = 4.5 + 0.7 + 0.36 = 5.56


🏆 Как рассчитывается вероятность победы

Используется метод Пиано (Pythagorean Expectation), адаптированный для бейсбола:

winPct = (runs^1.83) / (runs^1.83 + allowed^1.83) * 100

Где:

  • 1.83 — экспонента, оптимальная для MLB
  • runs — прогноз ранов своей команды
  • allowed — прогноз ранов соперника

✅ Пример:
Команда А: 5.2 рана, Команда Б: 4.1 рана
Вероятность победы А:
(5.2^1.83) / (5.2^1.83 + 4.1^1.83) ≈ 61.3%


🤖 Как формируется состав бэттеров

Система автоматически формирует топ-9 бэттеров для каждой команды по следующему алгоритму:

  1. Берутся все игроки команды с PA > 10 (достаточная выборка)
  2. Используются данные из:
  • Splits Leaderboard Data vs LHP.json — если питчер — левша
  • Splits Leaderboard Data vs RHP.json — если питчер — правша
  1. Игроки сортируются по wOBA (от высшего к низшему)
  2. Берутся топ-9 игроков

✅ Пользователь может вручную изменить состав через кнопку «Редактировать состав», заменив любого игрока на доступного из пула.


🧩 Учёт руки питчера

Рука питчера (L или R) критически важна, потому что:

  • Левые бэттеры лучше играют против правшей
  • Правые бэттеры лучше играют против левшей
  • Некоторые питчеры имеют сильный сплит против одной руки

Система использует файл pitcherRL.json, чтобы определить руку каждого питчера. Без этого файла прогноз был бы менее точным.


📤 Публикация прогноза

После расчёта прогноз можно опубликовать на сайте WordPress с помощью кнопки «Опубликовать в WordPress».

Прогноз включает:

  • Название матча
  • Стартовые питчеры и их xFIP
  • Прогноз ранов
  • Вероятность победы
  • Таблицы составов
  • Дату и подпись

Публикация происходит через REST API WordPress, с использованием Application Password для авторизации.


🔒 Почему это безопасно и надёжно

  • ✅ Все данные — в формате JSON, легко обновляются
  • ✅ Нет зависимости от CSV
  • ✅ Есть защита от NaN, undefined, пустых данных
  • ✅ Используются таймауты загрузки, чтобы не зависало
  • ✅ Можно работать оффлайн, если файлы лежат локально

✅ Заключение

Этот инструмент — гибрид аналитики, статистики и автоматизации. Он позволяет:

  • 🔍 Быстро сравнивать команды
  • 📊 Получать объективный прогноз на основе данных
  • 💡 Принимать решения с учётом сплитов и формы игроков
  • 📢 Автоматически публиковать прогнозы на сайте

🏁 Цель: Повысить точность прогнозов за счёт данных, а не интуиции.


📎 Пример вывода

Прогноз: NYM vs LAD
Стартовые питчеры:
  — Kodai Senga (R) — xFIP: 3.82
  — Tyler Glasnow (R) — xFIP: 4.10
Ожидаемые раны:
  NYM: 5.2
  LAD: 4.7
Вероятность победы:
  NYM: 57.3%
  LAD: 42.7%

Если хочешь, я могу:

  • 🔹 Сделать эту статью в формате HTML для сайта
  • 🔹 Перевести на английский
  • 🔹 Добавить графики или визуализации

Напиши — и я сделаю.

Прокрутить вверх