Вот полная статья, которую можно использовать как описание к твоему приложению или как пояснительную статью на сайте. Она объясняет, как работает прогноз, какие метрики используются и на каких принципах основан алгоритм.
📊
На этой странице реализован автоматизированный прогноз результатов матчей Главной лиги бейсбола (MLB) на основе статистики питчеров и бэттеров. Прогноз учитывает руку питчера, сплиты против левшей и правшей, современные метрики вроде xFIP и wOBA, а также вероятность победы каждой команды.
🔍 Как работает система
Приложение анализирует данные из нескольких JSON-файлов, содержащих статистику игроков MLB. Оно:
- Определяет стартовых питчеров для двух команд
- Формирует оптимальный состав бэттеров для каждой команды
- Прогнозирует ожидаемое количество ранов (runs)
- Рассчитывает вероятность победы каждой команды
- Позволяет вручную редактировать состав и опубликовать прогноз на 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
— экспонента, оптимальная для MLBruns
— прогноз ранов своей командыallowed
— прогноз ранов соперника
✅ Пример:
Команда А: 5.2 рана, Команда Б: 4.1 рана
Вероятность победы А:(5.2^1.83) / (5.2^1.83 + 4.1^1.83) ≈ 61.3%
🤖 Как формируется состав бэттеров
Система автоматически формирует топ-9 бэттеров для каждой команды по следующему алгоритму:
- Берутся все игроки команды с PA > 10 (достаточная выборка)
- Используются данные из:
Splits Leaderboard Data vs LHP.json
— если питчер — левшаSplits Leaderboard Data vs RHP.json
— если питчер — правша
- Игроки сортируются по wOBA (от высшего к низшему)
- Берутся топ-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 для сайта
- 🔹 Перевести на английский
- 🔹 Добавить графики или визуализации
Напиши — и я сделаю.