Introdução

Contexto dos dados

Este relatório apresenta uma análise estatística detalhada de partidas de futebol obtidas a partir de um conjunto de dados coletado via web scraping no site Flashscore — uma das maiores plataformas de acompanhamento esportivo em tempo real.

A base contém informações completas de cada jogo, separadas entre time da casa e time visitante, abrangendo métricas tradicionais e avançadas que permitem uma avaliação rica do desempenho das equipes.

Principais categorias de variáveis

  • Dados gerais
    • URL do jogo, data e horário, nomes dos times.
  • Indicadores ofensivos
    • Gols, finalizações totais, finalizações no alvo, finalizações bloqueadas, bolas na trave, gols de cabeça.
    • Métricas avançadas: xG, xGOT, gols evitados.
  • Construção e posse
    • Posse de bola, passes totais, passes longos, passes no terço final, passes em profundidade certos.
    • Toques dentro da área adversária.
  • Indicadores defensivos
    • Desarmes, interceptações, rebatidas, duelos ganhos, defesas do goleiro.
  • Bolas paradas e disciplina
    • Escanteios, faltas, laterais, impedimentos.
    • Cartões amarelos, cartões vermelhos.
    • Erros que resultaram em finalização ou gol.

Objetivo do painel

O objetivo deste dashboard é:

  • Facilitar a exploração visual das estatísticas coletadas.
  • Permitir a identificação de padrões de desempenho entre equipes e jogos.
  • Fornecer base para análises preditivas, como modelos de gols esperados e eficiência ofensiva/defensiva.
  • Auxiliar na compreensão de como diferentes indicadores interagem e influenciam o resultado das partidas.

Este conjunto amplo de métricas torna possível analisar o futebol de forma moderna e profunda, alinhada às melhores práticas de análise esportiva atual.

Tratamento dos dados

Tratamento

Importar lib’s

library(tidyverse)     # Conjunto de pacotes para manipulação de dados, modelagem e visualização.
library(readxl)        # Leitura de arquivos Excel (.xlsx, .xls).
library(janitor)       # Limpeza e padronização de nomes de colunas, tabelas e dados.
library(lubridate)     # Manipulação e conversão de datas e horários.
library(DT)            # Tabelas interativas renderizadas em HTML (DataTables).
library(flexdashboard) # Criação de dashboards responsivos com RMarkdown.
library(dplyr)         # Manipulação de dados (parte do tidyverse, mas carregado explicitamente).
library(stringr)       # Manipulação de strings de forma consistente.
library(tidyr)         # Funções para "arrumar" dados (separar, pivotar, completar etc.).
library(tidymodels)    # Framework para modelagem estatística e machine learning.
library(vip)           # Visualização da importância de variáveis em modelos.
library(ggplot2)       # Sistema de visualização gráfica (parte do tidyverse).
library(patchwork)     # Combinar múltiplos gráficos ggplot2 em um layout.
library(plotly)        # Gráficos interativos, conversão ggplot → plotly.
library(htmlwidgets)   # Exportação/renderização de widgets HTML interativos.
library(htmltools)     # Manipulação de HTML dentro do RMarkdown (tags, estilos...).
library(gt)            # Criação de tabelas estáticas profissionais.
library(knitr)         # Motor de renderização do RMarkdown (kable, chunks etc.).
library(kableExtra)    # Estilização avançada de tabelas criadas com knitr::kable.

Carregar os dados

dados_brutos <- read_excel("/home/felipe/Documentos/Projetos/CPAD-RMarkdown2VA/jogos_estatisticas_20251123_134603.xlsx", sheet = 1)

Visualização da estrutura

glimpse(dados_brutos)
Rows: 5,776
Columns: 78
$ url_jogo                                             <chr> "https://www.flas…
$ time_da_casa                                         <chr> "Fluminense", "Sp…
$ time_visitante                                       <chr> "Flamengo", "Flam…
$ data_hora                                            <chr> "19.11.2025 21:30…
$ gols_time_da_casa                                    <chr> "2", "1", "3", "2…
$ gols_time_visitante                                  <chr> "1", "5", "2", "2…
$ `gols esperados (xg)_time_da_casa`                   <chr> "1.75", "0.41", "…
$ `gols esperados (xg)_time_visitante`                 <chr> "1.56", "3.73", "…
$ `posse de bola_time_da_casa`                         <chr> "31%", "25%", "66…
$ `posse de bola_time_visitante`                       <chr> "69%", "75%", "34…
$ `total de finalizações_time_da_casa`                 <chr> "9", "7", "14", "…
$ `total de finalizações_time_visitante`               <chr> "13", "36", "18",…
$ `finalizações no alvo_time_da_casa`                  <chr> "3", "2", "4", "4…
$ `finalizações no alvo_time_visitante`                <chr> "4", "13", "4", "…
$ `chances claras_time_da_casa`                        <chr> "2", "1", "4", "1…
$ `chances claras_time_visitante`                      <chr> "1", "6", "4", "4…
$ escanteios_time_da_casa                              <chr> "3", "4", "10", "…
$ escanteios_time_visitante                            <chr> "5", "15", "3", "…
$ passes_time_da_casa                                  <chr> "71%", "69%", "91…
$ passes_time_visitante                                <chr> "89%", "90%", "84…
$ `cartões amarelos_time_da_casa`                      <chr> "4", "5", "2", "2…
$ `cartões amarelos_time_visitante`                    <chr> "3", "3", "2", "3…
$ `xg das finalizações no alvo (xgot)_time_da_casa`    <chr> "1.89", "0.57", "…
$ `xg das finalizações no alvo (xgot)_time_visitante`  <chr> "1.29", "4.27", "…
$ `finalizações para fora_time_da_casa`                <chr> "4", "2", "7", "8…
$ `finalizações para fora_time_visitante`              <chr> "5", "14", "10", …
$ `finalizações bloqueadas_time_da_casa`               <chr> "2", "3", "3", "3…
$ `finalizações bloqueadas_time_visitante`             <chr> "4", "9", "4", "5…
$ `finalizações de dentro da área_time_da_casa`        <chr> "5", "5", "12", "…
$ `finalizações de dentro da área_time_visitante`      <chr> "9", "21", "13", …
$ `finalizações de fora da área_time_da_casa`          <chr> "4", "2", "2", "8…
$ `finalizações de fora da área_time_visitante`        <chr> "4", "15", "5", "…
$ `bolas na trave_time_da_casa`                        <chr> "0", "0", "1", "1…
$ `bolas na trave_time_visitante`                      <chr> "0", "1", "1", "0…
$ `toques dentro da área adversária_time_da_casa`      <chr> "10", "7", "34", …
$ `toques dentro da área adversária_time_visitante`    <chr> "28", "49", "27",…
$ `passes em profundidade certos_time_da_casa`         <chr> "1", "0", "2", "0…
$ `passes em profundidade certos_time_visitante`       <chr> "0", "1", "0", "0…
$ impedimentos_time_da_casa                            <chr> "2", "0", "1", "1…
$ impedimentos_time_visitante                          <chr> "4", "1", "1", "1…
$ `faltas cobradas_time_da_casa`                       <chr> "12", "5", "12", …
$ `faltas cobradas_time_visitante`                     <chr> "14", "5", "14", …
$ `passes longos_time_da_casa`                         <chr> "37%", "23%", "65…
$ `passes longos_time_visitante`                       <chr> "52%", "54%", "66…
$ `passes no terço final_time_da_casa`                 <chr> "59%", "44%", "84…
$ `passes no terço final_time_visitante`               <chr> "79%", "89%", "77…
$ cruzamentos_time_da_casa                             <chr> "20%", "14%", "16…
$ cruzamentos_time_visitante                           <chr> "30%", "29%", "43…
$ `assistências esperadas (xa)_time_da_casa`           <chr> "0.41", "0.18", "…
$ `assistências esperadas (xa)_time_visitante`         <chr> "0.96", "3.97", "…
$ `laterais cobrados_time_da_casa`                     <chr> "19", "7", "15", …
$ `laterais cobrados_time_visitante`                   <chr> "21", "23", "15",…
$ faltas_time_da_casa                                  <chr> "14", "5", "14", …
$ faltas_time_visitante                                <chr> "12", "5", "12", …
$ desarmes_time_da_casa                                <chr> "75%", "50%", "60…
$ desarmes_time_visitante                              <chr> "73%", "50%", "47…
$ `duelos ganhos_time_da_casa`                         <chr> "49", "32", "39",…
$ `duelos ganhos_time_visitante`                       <chr> "49", "30", "50",…
$ rebatidas_time_da_casa                               <chr> "41", "49", "14",…
$ rebatidas_time_visitante                             <chr> "13", "6", "31", …
$ interceptações_time_da_casa                          <chr> "5", "8", "4", "8…
$ interceptações_time_visitante                        <chr> "11", "6", "12", …
$ `erros que resultaram em finalização_time_da_casa`   <chr> "1", "1", "1", "1…
$ `erros que resultaram em finalização_time_visitante` <chr> "1", "1", "1", "1…
$ `erros que resultaram em gol_time_da_casa`           <chr> "0", "1", "1", "0…
$ `erros que resultaram em gol_time_visitante`         <chr> "1", "1", "1", "1…
$ `defesas do goleiro_time_da_casa`                    <chr> "3", "7", "2", "0…
$ `defesas do goleiro_time_visitante`                  <chr> "1", "1", "2", "2…
$ `xgot enfrentado_time_da_casa`                       <chr> "1.29", "4.27", "…
$ `xgot enfrentado_time_visitante`                     <chr> "1.89", "0.57", "…
$ `gols evitados_time_da_casa`                         <chr> "0.29", "-0.73", …
$ `gols evitados_time_visitante`                       <chr> "-0.11", "-0.43",…
$ time                                                 <chr> "Flamengo", "Flam…
$ `cartões vermelhos_time_da_casa`                     <chr> NA, "2", NA, "0",…
$ `cartões vermelhos_time_visitante`                   <chr> NA, "0", NA, "1",…
$ `gols de cabeça_time_da_casa`                        <chr> NA, NA, NA, NA, N…
$ `gols de cabeça_time_visitante`                      <chr> NA, NA, NA, NA, N…
$ sem_estatisticas                                     <lgl> NA, NA, NA, NA, N…

Limpeza dos nomes das colunas

dados_brutos <- dados_brutos %>%
  janitor::clean_names()

Tratamento de linhas sem estatísticas

dados <- dados_brutos %>%
  # Remove linhas onde não há estatísticas
  filter(is.na(sem_estatisticas) | sem_estatisticas == FALSE) %>%
  select(-sem_estatisticas) %>%
  
  # Converte % para decimal
  mutate(across(c(posse_de_bola_time_da_casa, posse_de_bola_time_visitante,
                  starts_with("passes_"), starts_with("cruzamentos_"),
                  starts_with("faltas_"), starts_with("duelos_")),
                ~ as.numeric(str_remove(., "%")) / 100),
         
         # Converte datas
         data_hora = dmy_hm(data_hora))

Tratamento de duplicatas de jogos

Contexto: Os jogos trazidos nesses dados estão, muito provavelmente, duplicados. Imagine que um jogo entre Flamengo e Santos ocorreu no dia 01/12/2025 Ao coletar os dados do Flamengo, o jogo foi registrado. Ao coletar os dados do Santos, o mesmo jogo foi registrado novamente, causando uma duplicidade.
dados <- dados %>%
  mutate(
    time1 = pmin(time_da_casa, time_visitante),
    time2 = pmax(time_da_casa, time_visitante),
    data = as.Date(data_hora)
  ) %>%
  distinct(data, time1, time2, .keep_all = TRUE) %>%     # mantém só a primeira ocorrência
  select(-time1, -time2, -data)

Criação de variáveis úteis

dados <- dados %>%
  mutate(
    gols_time_da_casa     = as.numeric(gols_time_da_casa),
    gols_time_visitante   = as.numeric(gols_time_visitante),
    gols_esperados_xg_time_da_casa     = as.numeric(gols_esperados_xg_time_da_casa),
    gols_esperados_xg_time_visitante   = as.numeric(gols_esperados_xg_time_visitante),
    total_de_finalizacoes_time_da_casa     = as.numeric(total_de_finalizacoes_time_da_casa),
    total_de_finalizacoes_time_visitante   = as.numeric(total_de_finalizacoes_time_visitante),
    escanteios_time_da_casa     = as.numeric(escanteios_time_da_casa),
    escanteios_time_visitante   = as.numeric(escanteios_time_visitante)
  )


dados <- dados %>%
  mutate(
    resultado = case_when(
      gols_time_da_casa > gols_time_visitante ~ "Vitória Casa",
      gols_time_da_casa < gols_time_visitante ~ "Vitória Visitante",
      TRUE ~ "Empate"
    ),
    
    diff_gols = gols_time_da_casa - gols_time_visitante,
    diff_xg   = gols_esperados_xg_time_da_casa - gols_esperados_xg_time_visitante,
    
    efic_ofensiva_casa      = gols_time_da_casa / gols_esperados_xg_time_da_casa,
    efic_ofensiva_visitante = gols_time_visitante / gols_esperados_xg_time_visitante,
    
    gols_acima_xg_casa      = gols_time_da_casa - gols_esperados_xg_time_da_casa,
    gols_acima_xg_visitante = gols_time_visitante - gols_esperados_xg_time_visitante,

    total_finalizacoes =
      total_de_finalizacoes_time_da_casa +
      total_de_finalizacoes_time_visitante,

    total_escanteios =
      escanteios_time_da_casa +
      escanteios_time_visitante
  ) %>%
  mutate(across(starts_with("efic_ofensiva"),
                ~ if_else(is.infinite(.), NA_real_, .)))

Última visualização

glimpse(dados)
Rows: 2,087
Columns: 86
$ url_jogo                                           <chr> "https://www.flashs…
$ time_da_casa                                       <chr> "Fluminense", "Spor…
$ time_visitante                                     <chr> "Flamengo", "Flamen…
$ data_hora                                          <dttm> 2025-11-19 21:30:0…
$ gols_time_da_casa                                  <dbl> 2, 1, 3, 2, 3, 0, 1…
$ gols_time_visitante                                <dbl> 1, 5, 2, 2, 0, 0, 0…
$ gols_esperados_xg_time_da_casa                     <dbl> 1.75, 0.41, 2.60, 0…
$ gols_esperados_xg_time_visitante                   <dbl> 1.56, 3.73, 2.49, 1…
$ posse_de_bola_time_da_casa                         <dbl> 0.31, 0.25, 0.66, 0…
$ posse_de_bola_time_visitante                       <dbl> 0.69, 0.75, 0.34, 0…
$ total_de_finalizacoes_time_da_casa                 <dbl> 9, 7, 14, 15, 25, 2…
$ total_de_finalizacoes_time_visitante               <dbl> 13, 36, 18, 15, 4, …
$ finalizacoes_no_alvo_time_da_casa                  <chr> "3", "2", "4", "4",…
$ finalizacoes_no_alvo_time_visitante                <chr> "4", "13", "4", "2"…
$ chances_claras_time_da_casa                        <chr> "2", "1", "4", "1",…
$ chances_claras_time_visitante                      <chr> "1", "6", "4", "4",…
$ escanteios_time_da_casa                            <dbl> 3, 4, 10, 3, 9, 13,…
$ escanteios_time_visitante                          <dbl> 5, 15, 3, 5, 8, 0, …
$ passes_time_da_casa                                <dbl> 0.71, 0.69, 0.91, 0…
$ passes_time_visitante                              <dbl> 0.89, 0.90, 0.84, 0…
$ cartoes_amarelos_time_da_casa                      <chr> "4", "5", "2", "2",…
$ cartoes_amarelos_time_visitante                    <chr> "3", "3", "2", "3",…
$ xg_das_finalizacoes_no_alvo_xgot_time_da_casa      <chr> "1.89", "0.57", "1.…
$ xg_das_finalizacoes_no_alvo_xgot_time_visitante    <chr> "1.29", "4.27", "2.…
$ finalizacoes_para_fora_time_da_casa                <chr> "4", "2", "7", "8",…
$ finalizacoes_para_fora_time_visitante              <chr> "5", "14", "10", "8…
$ finalizacoes_bloqueadas_time_da_casa               <chr> "2", "3", "3", "3",…
$ finalizacoes_bloqueadas_time_visitante             <chr> "4", "9", "4", "5",…
$ finalizacoes_de_dentro_da_area_time_da_casa        <chr> "5", "5", "12", "7"…
$ finalizacoes_de_dentro_da_area_time_visitante      <chr> "9", "21", "13", "1…
$ finalizacoes_de_fora_da_area_time_da_casa          <chr> "4", "2", "2", "8",…
$ finalizacoes_de_fora_da_area_time_visitante        <chr> "4", "15", "5", "2"…
$ bolas_na_trave_time_da_casa                        <chr> "0", "0", "1", "1",…
$ bolas_na_trave_time_visitante                      <chr> "0", "1", "1", "0",…
$ toques_dentro_da_area_adversaria_time_da_casa      <chr> "10", "7", "34", "1…
$ toques_dentro_da_area_adversaria_time_visitante    <chr> "28", "49", "27", "…
$ passes_em_profundidade_certos_time_da_casa         <dbl> 0.01, 0.00, 0.02, 0…
$ passes_em_profundidade_certos_time_visitante       <dbl> 0.00, 0.01, 0.00, 0…
$ impedimentos_time_da_casa                          <chr> "2", "0", "1", "1",…
$ impedimentos_time_visitante                        <chr> "4", "1", "1", "1",…
$ faltas_cobradas_time_da_casa                       <dbl> 0.12, 0.05, 0.12, 0…
$ faltas_cobradas_time_visitante                     <dbl> 0.14, 0.05, 0.14, 0…
$ passes_longos_time_da_casa                         <dbl> 0.37, 0.23, 0.65, 0…
$ passes_longos_time_visitante                       <dbl> 0.52, 0.54, 0.66, 0…
$ passes_no_terco_final_time_da_casa                 <dbl> 0.59, 0.44, 0.84, 0…
$ passes_no_terco_final_time_visitante               <dbl> 0.79, 0.89, 0.77, 0…
$ cruzamentos_time_da_casa                           <dbl> 0.20, 0.14, 0.16, 0…
$ cruzamentos_time_visitante                         <dbl> 0.30, 0.29, 0.43, 0…
$ assistencias_esperadas_xa_time_da_casa             <chr> "0.41", "0.18", "1.…
$ assistencias_esperadas_xa_time_visitante           <chr> "0.96", "3.97", "1.…
$ laterais_cobrados_time_da_casa                     <chr> "19", "7", "15", "1…
$ laterais_cobrados_time_visitante                   <chr> "21", "23", "15", "…
$ faltas_time_da_casa                                <dbl> 0.14, 0.05, 0.14, 0…
$ faltas_time_visitante                              <dbl> 0.12, 0.05, 0.12, 0…
$ desarmes_time_da_casa                              <chr> "75%", "50%", "60%"…
$ desarmes_time_visitante                            <chr> "73%", "50%", "47%"…
$ duelos_ganhos_time_da_casa                         <dbl> 0.49, 0.32, 0.39, 0…
$ duelos_ganhos_time_visitante                       <dbl> 0.49, 0.30, 0.50, 0…
$ rebatidas_time_da_casa                             <chr> "41", "49", "14", "…
$ rebatidas_time_visitante                           <chr> "13", "6", "31", "1…
$ interceptacoes_time_da_casa                        <chr> "5", "8", "4", "8",…
$ interceptacoes_time_visitante                      <chr> "11", "6", "12", "4…
$ erros_que_resultaram_em_finalizacao_time_da_casa   <chr> "1", "1", "1", "1",…
$ erros_que_resultaram_em_finalizacao_time_visitante <chr> "1", "1", "1", "1",…
$ erros_que_resultaram_em_gol_time_da_casa           <chr> "0", "1", "1", "0",…
$ erros_que_resultaram_em_gol_time_visitante         <chr> "1", "1", "1", "1",…
$ defesas_do_goleiro_time_da_casa                    <chr> "3", "7", "2", "0",…
$ defesas_do_goleiro_time_visitante                  <chr> "1", "1", "2", "2",…
$ xgot_enfrentado_time_da_casa                       <chr> "1.29", "4.27", "2.…
$ xgot_enfrentado_time_visitante                     <chr> "1.89", "0.57", "1.…
$ gols_evitados_time_da_casa                         <chr> "0.29", "-0.73", "0…
$ gols_evitados_time_visitante                       <chr> "-0.11", "-0.43", "…
$ time                                               <chr> "Flamengo", "Flamen…
$ cartoes_vermelhos_time_da_casa                     <chr> NA, "2", NA, "0", "…
$ cartoes_vermelhos_time_visitante                   <chr> NA, "0", NA, "1", "…
$ gols_de_cabeca_time_da_casa                        <chr> NA, NA, NA, NA, NA,…
$ gols_de_cabeca_time_visitante                      <chr> NA, NA, NA, NA, NA,…
$ resultado                                          <chr> "Vitória Casa", "Vi…
$ diff_gols                                          <dbl> 1, -4, 1, 0, 3, 0, …
$ diff_xg                                            <dbl> 0.19, -3.32, 0.11, …
$ efic_ofensiva_casa                                 <dbl> 1.1428571, 2.439024…
$ efic_ofensiva_visitante                            <dbl> 0.6410256, 1.340482…
$ gols_acima_xg_casa                                 <dbl> 0.25, 0.59, 0.40, 1…
$ gols_acima_xg_visitante                            <dbl> -0.56, 1.27, -0.49,…
$ total_finalizacoes                                 <dbl> 22, 43, 32, 30, 29,…
$ total_escanteios                                   <dbl> 8, 19, 13, 8, 17, 1…

Visualização

Gráficos

Correlação entre variáveis de forma gráfica (time da casa)

Ranking de features mais impactantes no saldo de gols

                                                                                       variavel
gols_time_da_casa                                                             gols_time_da_casa
gols_time_visitante                                                         gols_time_visitante
gols_acima_xg_casa                                                           gols_acima_xg_casa
xg_das_finalizacoes_no_alvo_xgot_time_da_casa     xg_das_finalizacoes_no_alvo_xgot_time_da_casa
xgot_enfrentado_time_visitante                                   xgot_enfrentado_time_visitante
gols_de_cabeca_time_visitante                                     gols_de_cabeca_time_visitante
gols_de_cabeca_time_da_casa                                         gols_de_cabeca_time_da_casa
diff_xg                                                                                 diff_xg
gols_acima_xg_visitante                                                 gols_acima_xg_visitante
xg_das_finalizacoes_no_alvo_xgot_time_visitante xg_das_finalizacoes_no_alvo_xgot_time_visitante
xgot_enfrentado_time_da_casa                                       xgot_enfrentado_time_da_casa
chances_claras_time_da_casa                                         chances_claras_time_da_casa
gols_evitados_time_visitante                                       gols_evitados_time_visitante
gols_esperados_xg_time_da_casa                                   gols_esperados_xg_time_da_casa
gols_esperados_xg_time_visitante                               gols_esperados_xg_time_visitante
gols_evitados_time_da_casa                                           gols_evitados_time_da_casa
efic_ofensiva_visitante                                                 efic_ofensiva_visitante
finalizacoes_no_alvo_time_da_casa                             finalizacoes_no_alvo_time_da_casa
chances_claras_time_visitante                                     chances_claras_time_visitante
finalizacoes_no_alvo_time_visitante                         finalizacoes_no_alvo_time_visitante
                                                correlacao  abs_corr
gols_time_da_casa                                0.7568492 0.7568492
gols_time_visitante                             -0.6673231 0.6673231
gols_acima_xg_casa                               0.5818581 0.5818581
xg_das_finalizacoes_no_alvo_xgot_time_da_casa    0.5312770 0.5312770
xgot_enfrentado_time_visitante                   0.5312770 0.5312770
gols_de_cabeca_time_visitante                   -0.5159430 0.5159430
gols_de_cabeca_time_da_casa                      0.5136641 0.5136641
diff_xg                                          0.5120454 0.5120454
gols_acima_xg_visitante                         -0.4974238 0.4974238
xg_das_finalizacoes_no_alvo_xgot_time_visitante -0.4853628 0.4853628
xgot_enfrentado_time_da_casa                    -0.4852450 0.4852450
chances_claras_time_da_casa                      0.4533860 0.4533860
gols_evitados_time_visitante                    -0.4170440 0.4170440
gols_esperados_xg_time_da_casa                   0.3779838 0.3779838
gols_esperados_xg_time_visitante                -0.3743246 0.3743246
gols_evitados_time_da_casa                       0.3675716 0.3675716
efic_ofensiva_visitante                         -0.3638994 0.3638994
finalizacoes_no_alvo_time_da_casa                0.3472388 0.3472388
chances_claras_time_visitante                   -0.3468077 0.3468077
finalizacoes_no_alvo_time_visitante             -0.3347685 0.3347685

Desempenho dos times em casa ou fora

Conclusão

Conclusões

A análise realizada permitiu observar algumas tendências importantes, mas também evidenciou limitações relevantes dos dados utilizados. Muitos jogos brasileiros — especialmente envolvendo equipes de menor expressão, que careciam de estatísticas completas — acabaram afetando a robustez dos modelos e restringindo a profundidade das conclusões em determinadas métricas.

Outro ponto interessante foi perceber que alguns parâmetros que, à primeira vista, pareciam ter forte relação com o saldo de gols, como posse de bola, não se mostraram tão determinantes assim. Esse resultado reforça a ideia de que o desempenho no futebol é multifatorial, envolvendo aspectos que estatísticas tradicionais não capturam totalmente.

Por outro lado, um padrão ficou muito evidente: a maioria dos times apresenta melhor desempenho quando joga em casa. O fator mandante apareceu com consistência, indicando que elementos como familiaridade com o gramado, apoio da torcida e redução de desgaste logístico exercem influência significativa nos resultados.

Em suma, embora a análise tenha proporcionado insights relevantes, ela também aponta possíveis melhorias futuras, como o uso de bases de dados mais completas, ampliação do volume de partidas analisadas e exploração de novos indicadores capazes de captar nuances táticas e contextuais das disputas.