O xG aparece em toda transmissão de futebol moderno. Aparece nos relatórios de clubes europeus, nas telas da TV durante a Champions League e nas análises dos melhores scouts do mundo. Mas o que exatamente esse número significa — e mais importante, como usá-lo de verdade?
Neste guia você vai entender o xG do zero ao avançado: o que é, como é calculado, como interpretar em uma partida real e como extrair e visualizar esses dados usando R. Sem enrolação.
xG significa expected goals, ou em português, gols esperados. É uma métrica estatística que mede a qualidade de uma chance de gol — não se o gol entrou, mas o quanto deveria ter entrado com base em onde e como o chute foi feito.
Cada finalização recebe um valor entre 0 e 1. Um xG de 0,8 significa que, historicamente, 80% das finalizações feitas naquelas condições resultam em gol. Um xG de 0,04 significa que apenas 4% entram.
A soma de todos os xG de uma equipe numa partida mostra quantos gols ela deveria ter marcado com base na qualidade das chances criadas.
Num jogo com apenas 3 ou 4 gols, a aleatoriedade tem um papel enorme. Um time pode dominar completamente e perder por um gol de sorte. O xG captura o que realmente aconteceu em campo — quem criou as melhores chances — independente de o goleiro ter feito uma defesa impossível ou a bola ter batido na trave.
Em uma única partida, o xG pode variar bastante do resultado real. Mas ao longo de uma temporada, o desempenho real de uma equipe tende a convergir para o xG acumulado. É por isso que equipes com alto xG consistente acabam, no longo prazo, ficando no topo da tabela — mesmo que percam partidas pontuais.
Os modelos de xG analisam variáveis do momento do chute para estimar a probabilidade de gol. As principais são:
Modelos mais sofisticados, como os da StatsBomb, incluem a posição do goleiro, a velocidade do ataque e até o ângulo de visão do finalizador.
Com esses dados de milhares de finalizações históricas, o modelo aprende a associar essas condições a uma probabilidade de gol. O resultado é um número por finalização que representa essa probabilidade.
Imagine o seguinte resultado: Flamengo 1 × 2 Palmeiras, com xG de 2,4 × 0,7.
O que isso quer dizer? Que o Flamengo criou chances muito melhores — equivalentes a aproximadamente 2 ou 3 gols esperados — mas só converteu 1. O Palmeiras criou poucas chances de qualidade mas converteu ambas. O placar não conta a história real do jogo.
Para um analista, isso levanta perguntas imediatas: o goleiro do Palmeiras foi excepcional? O Flamengo errou nas decisões finais? Essa foi uma anomalia pontual ou padrão recorrente?
O xG não é infalível. Ele não captura:
Por isso, o xG deve ser usado como indicador de padrão, não como veredicto de uma única partida.
Aqui é onde o Campo Analítico entra. Qualquer pessoa pode ler sobre xG num site de apostas. O que diferencia um analista de elite é saber extrair e interpretar os dados com código.
Vamos usar o pacote StatsBombR, que dá acesso gratuito a dados de xG de partidas reais.
# Instalar os pacotes (rode uma vez)
install.packages("devtools")
devtools::install_github("statsbomb/StatsBombR")
install.packages("tidyverse")
install.packages("ggplot2")
library(StatsBombR)
library(tidyverse)
# Carregar partidas disponíveis gratuitamente
competicoes <- FreeCompetitions()
# Selecionar a Premier League 2015/16 (disponível gratuitamente)
jogos <- FreeMatches(competicoes %>%
filter(competition_name == "Premier League", season_name == "2015/16"))
# Carregar eventos de uma partida específica
eventos <- get.matchFree(jogos[1,])
eventos <- allclean(eventos)
# Filtrar só as finalizações
finalizacoes <- eventos %>%
filter(type.name == "Shot") %>%
select(
time = minute,
jogador = player.name,
time_jogo = team.name,
xg = shot.statsbomb_xg,
resultado = shot.outcome.name,
tecnica = shot.technique.name
)
# Ver resumo de xG por time
finalizacoes %>%
group_by(time_jogo) %>%
summarise(
total_finalizacoes = n(),
xg_total = round(sum(xg, na.rm = TRUE), 2),
gols = sum(resultado == "Goal")
)
library(ggplot2)
# Calcular xG acumulado por minuto
xg_acumulado <- finalizacoes %>%
arrange(time) %>%
group_by(time_jogo) %>%
mutate(xg_acum = cumsum(xg))
# Gráfico estilo Opta
ggplot(xg_acumulado, aes(x = time, y = xg_acum, color = time_jogo)) +
geom_step(size = 1.2) +
geom_point(aes(size = xg), alpha = 0.7) +
scale_color_manual(values = c("#1a1e1a", "#5ecf82")) +
labs(
title = "xG acumulado ao longo da partida",
x = "Minuto",
y = "xG acumulado",
color = "Time"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold"),
legend.position = "bottom"
)
Esse gráfico mostra exatamente o que a Opta exibe nas transmissões — mas feito por você, com seus próprios dados e seu próprio código.
Saber calcular xG é o começo. O que diferencia um analista profissional é saber fazer as perguntas certas com os dados.
Algumas análises práticas com xG:
1. Identificar jogadores que consistentemente superam ou ficam abaixo do xG Um atacante que marca muito mais gols do que seu xG indica pode ser um finalizador excepcional — ou pode estar numa fase de sorte que não vai durar.
2. Avaliar a eficiência defensiva de um time Comparar o xGA (xG concedido) com os gols sofridos ao longo da temporada revela se o goleiro e a defesa estão performando acima ou abaixo do esperado.
3. Scouting de atletas por qualidade de chances criadas Um atacante pode ter poucos gols mas um xG alto — sinal de que está chegando em boas posições mas sendo mal-assistido, ou tendo azar com o goleiro. É um jogador subvalorizado pelo mercado.
4. Pré-jogo: modelar probabilidades táticas Comparar o xG concedido pelo adversário em determinadas zonas do campo com os pontos fortes do seu ataque para identificar onde atacar com mais frequência.
O xG revolucionou a análise de futebol, mas é uma ferramenta — não uma resposta. O analista de elite usa o xG como ponto de partida para fazer perguntas mais profundas sobre o jogo.
Dominar essa métrica com código real, em R, com dados da StatsBomb, é o que separa quem lê sobre análise de futebol de quem realmente pratica.
Quer aprender a calcular xG, redes de passe, modelos de machine learning e muito mais com dados reais do futebol?
O curso Estatística Computacional no Futebol do Campo Analítico cobre tudo isso em 7 módulos — do fundamento matemático ao dossiê de scouting profissional, usando R e StatsBomb.
Publicado por Aldrei · Campo Analítico — Dados & Futebol
Aprenda do zero ao avançado com o método Campo Analítico. Garanta sua vaga!
Quero me inscrever agoraAssine para receber nossas notícias mais recentes por e-mail.