Educacional Artigos Livros Serviços
R Stats Scouting Orientação Futebol Brasileiro Coaching World Cup Competições Europeias

Compartilhar

R Stats

O que é xG no futebol: guia completo com exemplos em R

A
Aldrei Peralta
21 de março de 2026
6 min de leitura
O que é xG no futebol: guia completo com exemplos em R

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.


O que é xG no futebol?

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.

Por que isso importa mais do que contar gols?

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.


Como o xG é calculado?

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.


Como interpretar o xG numa partida

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?

Quando o xG engana

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.


Como calcular e visualizar xG com R

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.

Instalando os pacotes necessários

# Instalar os pacotes (rode uma vez)
install.packages("devtools")
devtools::install_github("statsbomb/StatsBombR")
install.packages("tidyverse")
install.packages("ggplot2")

Carregando dados de uma partida real

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)

Filtrando apenas as finalizações com xG

# 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")
  )

Visualizando o xG acumulado ao longo da partida

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.


xG na prática: o que um analista faz com isso

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.


xG é o começo, não o fim

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

🚀 Domine a Análise de Dados com a Formação Completa

Aprenda do zero ao avançado com o método Campo Analítico. Garanta sua vaga!

Quero me inscrever agora

Descubra mais sobre Campo Analítico

Assine para receber nossas notícias mais recentes por e-mail.

Descubra mais sobre Campo Analítico

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo