PG1 - Grupo 9: Análisis de patrones, relaciones y factores determinantes en el rendimiento de los jugadores en partidas de ajedrez en Lichess durante el año 2025

Authors

Joaquin Matías Mendoza Contreras

Viviana Cinthya Vargas Jiménez

Mia Daniela Vargas Maycock

Published

October 19, 2025

I. Introducción

I.1 Relevancia

La investigación aborda un tema de interés en el ámbito del análisis del rendimiento estratégico, ya que el estudio de partidas de ajedrez mediante métodos estadísticos permite identificar patrones, relaciones y factores determinantes en el rendimiento de los jugadores. A través del análisis de datos obtenidos de la plataforma Lichess durante el año 2025, se busca comprender cómo variables como la apertura utilizada, el número total de movimientos o el nivel de ELO inciden en el desarrollo y resultado de las partidas. Al reconocer estos patrones y relaciones, los jugadores pueden optimizar sus estrategias, reducir errores y fortalecer su capacidad de toma de decisiones. Finalmente, este tipo de análisis ofrece una ventaja significativa al promover un aprendizaje basado en evidencia y contribuir al avance del estudio científico del ajedrez en entornos digitales.

I.2 Planificación


---
config:
  theme: default
---
gantt
    title Planificación para la parte 1 del Proyecto
    dateFormat  DD-MM-YYYY
    axisFormat  %d-%m-%y
    todayMarker off

    section Avance 1
    Tema y objetivos (Todos)           :02-09-2025, 10d
    Instrumento de recolección (Todos) :06-09-2025, 6d
    Reunión para avance 1              :milestone, 12-09-2025, 1d

    section Avance 2
    Base de datos (Todos)              :13-09-2025, 13d
    Variables (Todos)                  :19-09-2025, 7d
    Reunión para avance 2              :milestone, 26-09-2025, 1d

    section Avance 3
    Descriptores (Todos)               :27-09-2025, 14d
    Análisis de descriptores (Todos)   :04-10-2025, 7d
    Presentación del PG1               :milestone, 11-10-2025, 1d

    section Informe
    Informe del PG1 (Todos)            :12-10-2025, 8d
    Presentación del Informe PG1 (Todos):milestone, 20-10-2025, 1d

I.3. Objetivos

I.3.1 Objetivo general

Aplicar métodos estadísticos al análisis de partidas de ajedrez para identificar patrones, relaciones y factores determinantes en el rendimiento de los jugadores.

I.3.2 Objetivos específicos

  1. Identificar cuáles aperturas generan partidas más largas o más cortas en función del número total de movimientos en Lichess durante 2025.
  2. Comparar el desempeño de los jugadores según su ELO por la cantidad de errores graves e imprecisiones cometidas en las partidas jugadas en Lichess durante 2025.

II.Datos

II.1 Población objetivo

En este proyecto, la población de estudio está conformada por jugadores activos de la plataforma Lichess durante el año 2025, quienes participaron en partidas clasificadas y cuyas estadísticas se encuentran disponibles públicamente.

Muestra: Jugadores que registraron sus datos mediante un formulario en línea (Google Forms), proporcionando información sobre partidas jugadas en Lichess en 2025, incluyendo apertura utilizada, número total de movimientos, ELO y cantidad de errores e imprecisiones.

Unidad muestral: Cada jugador participante que completó el formulario con los datos correspondientes a una partida individual registrada en Lichess.

II.2 Tipo de muestreo

Muestreo: Se utilizó un muestreo por conveniencia, ya que la selección de los datos dependió de la disposición de los jugadores en participar y registrar voluntariamente su información a través del formulario. Este tipo de muestreo permitió obtener datos reales y accesibles, facilitando el análisis estadístico del rendimiento ajedrecístico en la plataforma Lichess durante el año 2025.

II.3 Recolección de datos

La recolección de datos se realizó mediante un formulario en línea (Google Forms) diseñado para recopilar información estadística proveniente de partidas jugadas en la plataforma Lichess durante el año 2025. Cada participante registró manualmente los datos correspondientes a sus propias partidas, incluyendo la apertura utilizada, el número total de movimientos, su nivel de ELO y la cantidad de errores graves e imprecisiones detectadas por el análisis automático de la plataforma. Posteriormente, las respuestas fueron consolidadas en una base de datos unificada, lo que permitió organizar la información de forma estructurada para su posterior análisis estadístico.

El formulario fue distribuido virtualmente entre los estudiantes del curso, solicitando el uso de un correo institucional de UTEC para validar la participación. Se permitió más de una respuesta por persona, ya que los participantes podían registrar varias partidas propias. La herramienta facilitó la visualización y descarga de los resultados en formato “comma separated values” (.csv) para su posterior análisis. Los datos fueron anonimizados antes del procesamiento final, ya que la información personal no era relevante para los objetivos del estudio.

Enlace al formulario de recolección de datos: https://docs.google.com/forms/d/1K4s7LnwJEdvPEcOf_3M92DITqQIeaUZfe3onPXqifbA/edit?no_redirect=true

II.4 Variables

Tipo Variable Rangos o restricciones
Cualitativa nominal Apertura utilizada (Apertura) ———————————
Cuantitativa discreta Número total de movimientos (total_movimientos) 1-280
Cualitativa ordinal Categoría ELO del jugador (ELO) 100-3500
Cuantitativa discreta Numero de errores graves (blunders) 0 - total de movimientos
Cuantitativa discreta Número de imprecisiones (inaccuracies) 0 - total de movimientos
Cuantitativa continua Porcentaje de error por cada movimiento (porcentaje_error) 0 - total de movimientos

II.5 Limpieza

  • Carga de librerías

    Se emplearon librerías de R necesarias para la manipulación, limpieza y visualización de datos.

library(readr)
library(dplyr)

Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)
library(scales)

Adjuntando el paquete: 'scales'
The following object is masked from 'package:readr':

    col_factor
library(forcats)
library(purrr)

Adjuntando el paquete: 'purrr'
The following object is masked from 'package:scales':

    discard
library(tidyr)
  • Carga de base de datos

    Se cargó la base de datos proveniente del formulario de Google Forms y se seleccionaron únicamente las variables relevantes para el análisis.

df = read_csv("Instrumento de Recolección S08 - Análisis Lichess.csv")
Rows: 927 Columns: 23
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (11): Marca temporal, ¿Qué resultado obtuvo?, ¿Qué tipo de apertura(ope...
dbl   (8): ¿Cuál fue tu porcentaje de precisión? (omitir el %), ¿Cuál es tu ...
lgl   (1): Columna 23
time  (3): ¿Cuánto tiempo duró la partida?, ¿A qué hora del día jugaste la p...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df <- df %>% select(`¿Qué tipo de apertura(opening) usaste en la partida?`, `¿Cuál fue el número de movimientos totales de la partida(sólo el número)? Ejemplo: 9`, `¿Cuál es tu ELO al final de la partida?`, `¿Cuántos errores graves(blunders) tuviste en la partida?`, `¿Cuántas imprecisiones(inaccuracies) tuviste en la partida?`)
  • Limpieza de renombrar las variables

    Se renombraron para facilitar su manejo

df <- df %>% rename(Apertura = `¿Qué tipo de apertura(opening) usaste en la partida?`,

total_movimientos = `¿Cuál fue el número de movimientos totales de la partida(sólo el número)? Ejemplo: 9`,

ELO = `¿Cuál es tu ELO al final de la partida?`,

blunders = `¿Cuántos errores graves(blunders) tuviste en la partida?`,

inaccuracies = `¿Cuántas imprecisiones(inaccuracies) tuviste en la partida?`)
  • Creamos una variable denominada porcentaje_error para tener una variable cuantitativa continua.
df <- df %>%
  mutate(porcentaje_error = ((blunders + inaccuracies) / (total_movimientos / 2))*100 ) 
  • Manejo de datos faltantes:

    Se convirtieron las variables numéricas (total_movimientos, ELO, blunders e inaccuracies) a formato numérico con as.numeric() para evitar errores de tipo y facilitar la detección de valores faltantes y luego se aplicaron restricciones de rango para eliminar valores fuera de los límites aceptados. También se descartaron observaciones inconsistentes donde el número de errores superaba la mitad del total de movimientos.

df <- df%>% mutate(
  total_movimientos = as.numeric(total_movimientos),
  ELO = as.numeric(ELO),
  blunders = as.numeric(blunders),
  inaccuracies = as.numeric(inaccuracies)
)
  • Limpieza de total_movimientos

    Elegimos el rango de 1(minimo 1 movimiento puesto que sino la partida no habria comenzado) a 280(numero total de movimientos de la partida más larga registrada oficialmente en torneos)

    df <- df %>%
      mutate(total_movimientos = ifelse(between(total_movimientos, 1, 280), total_movimientos, NA))
  • Limpieza de ELO

    Elegimos el rango de 100 (uno de los rangos de ELO más bajos registrados en Lichess) y 3500 (rango de ELO más alto registrado por Hikaru Nakamura)

    df <- df %>%
      mutate(ELO = ifelse(between(ELO, 100, 3500), ELO, NA))
  • Limpieza de blunders e inaccuracies

    Primero creamos 1 variable extra valida, esta se encargara de verificar si la suma de errores es mayor al total de movimiento

    df <- df %>%
      mutate(
        valida = inaccuracies + blunders < round(total_movimientos/2)
      )
  • Limpieza de Apertura

    Se corrigieron caracteres, eliminando información redundante después de los dos puntos y descartando registros con texto incompleto o inválido.

    unique(df$Apertura)
      [1] "Bird Opening"                                                        
      [2] "Grob Opening"                                                        
      [3] "Caro-Kann Defense"                                                   
      [4] "Slav Defense"                                                        
      [5] "English Opening"                                                     
      [6] "Sicilian Defense"                                                    
      [7] "Vienna Game: Max Lange Defense"                                      
      [8] "King’s Pawn Game"                                                    
      [9] "Hungarian Opening"                                                   
     [10] "Nimzo-Larsen Attack"                                                 
     [11] "Nimzowitsch Defense: Scandinavian Variation"                         
     [12] "Van’t Kruijs Opening"                                                
     [13] "French Defense: Knight Variation"                                    
     [14] "Queen’s Pawn Game"                                                   
     [15] "Blackmar-Diemer Gambit"                                              
     [16] "Scandinavian Defense"                                                
     [17] "Ware Defense"                                                        
     [18] "Scandinavian  Defense"                                               
     [19] "Nimzowitsch Defense: Declined Variation"                             
     [20] "Scotch Game"                                                         
     [21] "Englund Gambit"                                                      
     [22] "Polish Opening"                                                      
     [23] "Philidor Defense"                                                    
     [24] "Ware Opening"                                                        
     [25] "Vienna Game"                                                         
     [26] "Horwitz Defense"                                                     
     [27] "King's Knight Opening"                                               
     [28] "Zukertort Opening"                                                   
     [29] "Scandinavian Defense: Modern Variation"                              
     [30] "Four Knights Game"                                                   
     [31] "Three Knights Opening"                                               
     [32] "Bishop's Opening"                                                    
     [33] "Elephant Gambit"                                                     
     [34] "Anderssen's Opening"                                                 
     [35] "Pirc Defense"                                                        
     [36] "Ponziani Opening"                                                    
     [37] "Italian Opening"                                                     
     [38] "English Gambit Declined: Reversed French"                            
     [39] "Caro-Kann Defense: Spike Variation"                                  
     [40] "Kádas Opening"                                                       
     [41] "Saragossa Opening"                                                   
     [42] "Lasker Simul Special"                                                
     [43] "Global Opening"                                                      
     [44] "Goldsmith Defense"                                                   
     [45] "English Gambit Declined: Reversed Mokele Mbembe"                     
     [46] "Sicilian Defense: Old Sicilian"                                      
     [47] "Ware"                                                                
     [48] "Duras Gambit"                                                        
     [49] "ware"                                                                
     [50] "Modern Defense"                                                      
     [51] "Nimzo-Larsen Attack: Modern Variation"                               
     [52] "French Defense: Normal Variation"                                    
     [53] "Grob"                                                                
     [54] "Barnes Opening"                                                      
     [55] "French Defense"                                                      
     [56] "English Opening: King's English Variation, Reversed Sicilian"        
     [57] "Nimzo-Larsen Attack: Classical Variation"                            
     [58] "Mieses Opening"                                                      
     [59] "Owen Defense"                                                        
     [60] "Polish"                                                              
     [61] "Anderssen's"                                                         
     [62] "Ware opening"                                                        
     [63] "Siciliana"                                                           
     [64] "Center Game"                                                         
     [65] "King’s Knight Opening"                                               
     [66] "Englund Gambit Declined"                                             
     [67] "Borg Defense"                                                        
     [68] "Bishop’s Opening"                                                    
     [69] "King’s Gambit Declined"                                              
     [70] "Polish Defense"                                                      
     [71] "Dutch Defense: Staunton Gambit"                                      
     [72] "Petrov's Defense"                                                    
     [73] "Kádas Opening: Beginner's Trap"                                      
     [74] "English Defense"                                                     
     [75] "Kádas Opening: Schneider Gambit"                                     
     [76] "Sodium Attack"                                                       
     [77] "Van Geet Opening"                                                    
     [78] "Zukertort Opening: Tennison Gambit"                                  
     [79] "Italian Game"                                                        
     [80] "Alekhine Defense"                                                    
     [81] "London System"                                                       
     [82] "Petrov's Defense: Three Knights Game"                                
     [83] "Petrov's Defense: Modern Attack"                                     
     [84] "Sicciliana"                                                          
     [85] "Queen's Gambit Declined: Ragozin Defense"                            
     [86] "Rapport - Jobava System"                                             
     [87] "Sicilian Defense: Polish Gambit"                                     
     [88] "French Defense: Diemer-Duhm Gambit Accepted"                         
     [89] "Hipopotamus  Defense"                                                
     [90] "Hippopotamus Defense"                                                
     [91] "Hippopotamus defense"                                                
     [92] "Carr Defense"                                                        
     [93] "French Defense: Exchange Variation"                                  
     [94] "Indian Defense: Knights Variation"                                   
     [95] "Queen's Gambit Accepted: Central Variation, Modern Defense"          
     [96] "French Defense: Perseus Gambit"                                      
     [97] "East Indian Defense"                                                 
     [98] "St. George Defense"                                                  
     [99] "Englund Gambit: Hartlaub-Charlick Gambit"                            
    [100] "French Defense: Morphy Gambit"                                       
    [101] "Nimzowitsch Defense"                                                 
    [102] "Indian Defense: Omega Gambit"                                        
    [103] "English Opening: King's English Variation"                           
    [104] "Van't Kruijs"                                                        
    [105] "English"                                                             
    [106] "Polish Opening: Symmetrical Variation"                               
    [107] "Queen's Pawn Game: London System"                                    
    [108] "Italian Game: Two Knights Defense, Knight Attack"                    
    [109] "Four Knights Game: Italian Variation"                                
    [110] "French Defense: Two Knights Variation"                               
    [111] "no se"                                                               
    [112] "ninguna"                                                             
    [113] "Petrov's Defense: Stafford Gambit"                                   
    [114] "Queen's Pawn Game: Chigorin Variation"                               
    [115] "Four Knights Game: Scotch Variation Accepted"                        
    [116] "Sicilian Defense: Staunton-Cochrane Variation"                       
    [117] "Englund Gambit: Soller Gambit Deferred"                              
    [118] "Barnes Defense"                                                      
    [119] "Scandinavian defense"                                                
    [120] "King's Night Opening"                                                
    [121] "Borg defense"                                                        
    [122] "Englud Gambit"                                                       
    [123] "Amar Opening"                                                        
    [124] "Agincourt Defense"                                                   
    [125] "Rat Defense"                                                         
    [126] "kádas Opening"                                                       
    [127] "Borg Opening"                                                        
    [128] "WareOpening"                                                         
    [129] "Petrov's Defense: Three Knights Gam"                                 
    [130] "Dutch Defense"                                                       
    [131] "Petrov's Defense: Damiano Variation"                                 
    [132] "Rat Defense: Small Center Defense"                                   
    [133] "Zukertort Opening: Kingside Fianchetto"                              
    [134] "Queen's Pawn Game"                                                   
    [135] "Alekhine Defense (ECO B02)"                                          
    [136] "Ware Opening: Symmetric Variation"                                   
    [137] "Van’t Kruijs Opening (ECO A00)"                                      
    [138] "Owen’s Defense (ECO B00)"                                            
    [139] "King’s Fianchetto Opening (ECO A00)"                                 
    [140] "Sicilian Defense: Grand Prix Attack (ECO B23)"                       
    [141] "Reti Opening (ECO A06)"                                              
    [142] "Apertura Reti (ECO A04)"                                             
    [143] "Apertura no estándar / A00"                                          
    [144] "Defensa Caro-Kann (B10)"                                             
    [145] "Defensa Owen (B00)"                                                  
    [146] "Defensa Española (ECO C60)"                                          
    [147] "Defensa Francesa (ECO C00)"                                          
    [148] "(ECO) B07 — Pirc/Modern-style (según ECO)"                           
    [149] "ECO C00 — Defensa Francesa (variante sin avance)"                    
    [150] "ECO B01 — Defensa Escandinava"                                       
    [151] "ECO A00 — Apertura Irregular"                                        
    [152] "ECO B00 — Defensa Owen"                                              
    [153] "ECO B00 — Defensa Owen (variante con g3 y Bb2)"                      
    [154] "ECO B00 — Defensa Nimzowitsch / Defensa Irregular"                   
    [155] "ECO B00 — Defensa Nimzowitsch"                                       
    [156] "ECO C42 — Defensa Petrov (o Rusa)"                                   
    [157] "ECO B00 — Defensa Owen (variante con b6 y g6)"                       
    [158] "1255"                                                                
    [159] "ECO B00 — Defensa sin clasificar (Apertura irregular con Qf3)"       
    [160] "ECO A01 — Apertura Larsen (1.b3)"                                    
    [161] "ECO A20 — Apertura Inglesa"                                          
    [162] "ECO B10 — Defensa Caro-Kann"                                         
    [163] "ECO A06 — Apertura Reti / Ataque Nimzo-Larsen (variante transpuesta)"
    [164] "ECO C47 — Defensa de los Cuatro Caballos"                            
    [165] "ECO B10 — Defensa Caro-Kann (variante irregular con Bb5)"            
    [166] "ECO C42 — Defensa Petrov (Defensa Rusa)"                             
    [167] "ECO C49 — Giuoco Piano (Italian Game)"                               
    [168] "ECO D02 — London System (con defensa flexible de negras)"            
    [169] "ECO C00 — Defensa Francesa (variante irregular con 2.Nf3 f6)"        
    [170] "ECO C42 — Defensa Petrov (variante con 3.Nxe5)"                      
    [171] "ECO A06 — Apertura Reti / Ataque Nf3"                                
    [172] "Englund Gambit Declined: Reversed French"                            
    [173] "Scandinavian Defense: Mieses-Kotroc Variation"                       
    [174] "Mikenas Defense"                                                     
    df$Apertura <- gsub("’", "'", df$Apertura)
    
    df$Apertura <- trimws(sub(":.*","", df$Apertura))
    
    unique(df$Apertura)
      [1] "Bird Opening"                                                        
      [2] "Grob Opening"                                                        
      [3] "Caro-Kann Defense"                                                   
      [4] "Slav Defense"                                                        
      [5] "English Opening"                                                     
      [6] "Sicilian Defense"                                                    
      [7] "Vienna Game"                                                         
      [8] "King's Pawn Game"                                                    
      [9] "Hungarian Opening"                                                   
     [10] "Nimzo-Larsen Attack"                                                 
     [11] "Nimzowitsch Defense"                                                 
     [12] "Van't Kruijs Opening"                                                
     [13] "French Defense"                                                      
     [14] "Queen's Pawn Game"                                                   
     [15] "Blackmar-Diemer Gambit"                                              
     [16] "Scandinavian Defense"                                                
     [17] "Ware Defense"                                                        
     [18] "Scandinavian  Defense"                                               
     [19] "Scotch Game"                                                         
     [20] "Englund Gambit"                                                      
     [21] "Polish Opening"                                                      
     [22] "Philidor Defense"                                                    
     [23] "Ware Opening"                                                        
     [24] "Horwitz Defense"                                                     
     [25] "King's Knight Opening"                                               
     [26] "Zukertort Opening"                                                   
     [27] "Four Knights Game"                                                   
     [28] "Three Knights Opening"                                               
     [29] "Bishop's Opening"                                                    
     [30] "Elephant Gambit"                                                     
     [31] "Anderssen's Opening"                                                 
     [32] "Pirc Defense"                                                        
     [33] "Ponziani Opening"                                                    
     [34] "Italian Opening"                                                     
     [35] "English Gambit Declined"                                             
     [36] "Kádas Opening"                                                       
     [37] "Saragossa Opening"                                                   
     [38] "Lasker Simul Special"                                                
     [39] "Global Opening"                                                      
     [40] "Goldsmith Defense"                                                   
     [41] "Ware"                                                                
     [42] "Duras Gambit"                                                        
     [43] "ware"                                                                
     [44] "Modern Defense"                                                      
     [45] "Grob"                                                                
     [46] "Barnes Opening"                                                      
     [47] "Mieses Opening"                                                      
     [48] "Owen Defense"                                                        
     [49] "Polish"                                                              
     [50] "Anderssen's"                                                         
     [51] "Ware opening"                                                        
     [52] "Siciliana"                                                           
     [53] "Center Game"                                                         
     [54] "Englund Gambit Declined"                                             
     [55] "Borg Defense"                                                        
     [56] "King's Gambit Declined"                                              
     [57] "Polish Defense"                                                      
     [58] "Dutch Defense"                                                       
     [59] "Petrov's Defense"                                                    
     [60] "English Defense"                                                     
     [61] "Sodium Attack"                                                       
     [62] "Van Geet Opening"                                                    
     [63] "Italian Game"                                                        
     [64] "Alekhine Defense"                                                    
     [65] "London System"                                                       
     [66] "Sicciliana"                                                          
     [67] "Queen's Gambit Declined"                                             
     [68] "Rapport - Jobava System"                                             
     [69] "Hipopotamus  Defense"                                                
     [70] "Hippopotamus Defense"                                                
     [71] "Hippopotamus defense"                                                
     [72] "Carr Defense"                                                        
     [73] "Indian Defense"                                                      
     [74] "Queen's Gambit Accepted"                                             
     [75] "East Indian Defense"                                                 
     [76] "St. George Defense"                                                  
     [77] "Van't Kruijs"                                                        
     [78] "English"                                                             
     [79] "no se"                                                               
     [80] "ninguna"                                                             
     [81] "Barnes Defense"                                                      
     [82] "Scandinavian defense"                                                
     [83] "King's Night Opening"                                                
     [84] "Borg defense"                                                        
     [85] "Englud Gambit"                                                       
     [86] "Amar Opening"                                                        
     [87] "Agincourt Defense"                                                   
     [88] "Rat Defense"                                                         
     [89] "kádas Opening"                                                       
     [90] "Borg Opening"                                                        
     [91] "WareOpening"                                                         
     [92] "Alekhine Defense (ECO B02)"                                          
     [93] "Van't Kruijs Opening (ECO A00)"                                      
     [94] "Owen's Defense (ECO B00)"                                            
     [95] "King's Fianchetto Opening (ECO A00)"                                 
     [96] "Reti Opening (ECO A06)"                                              
     [97] "Apertura Reti (ECO A04)"                                             
     [98] "Apertura no estándar / A00"                                          
     [99] "Defensa Caro-Kann (B10)"                                             
    [100] "Defensa Owen (B00)"                                                  
    [101] "Defensa Española (ECO C60)"                                          
    [102] "Defensa Francesa (ECO C00)"                                          
    [103] "(ECO) B07 — Pirc/Modern-style (según ECO)"                           
    [104] "ECO C00 — Defensa Francesa (variante sin avance)"                    
    [105] "ECO B01 — Defensa Escandinava"                                       
    [106] "ECO A00 — Apertura Irregular"                                        
    [107] "ECO B00 — Defensa Owen"                                              
    [108] "ECO B00 — Defensa Owen (variante con g3 y Bb2)"                      
    [109] "ECO B00 — Defensa Nimzowitsch / Defensa Irregular"                   
    [110] "ECO B00 — Defensa Nimzowitsch"                                       
    [111] "ECO C42 — Defensa Petrov (o Rusa)"                                   
    [112] "ECO B00 — Defensa Owen (variante con b6 y g6)"                       
    [113] "1255"                                                                
    [114] "ECO B00 — Defensa sin clasificar (Apertura irregular con Qf3)"       
    [115] "ECO A01 — Apertura Larsen (1.b3)"                                    
    [116] "ECO A20 — Apertura Inglesa"                                          
    [117] "ECO B10 — Defensa Caro-Kann"                                         
    [118] "ECO A06 — Apertura Reti / Ataque Nimzo-Larsen (variante transpuesta)"
    [119] "ECO C47 — Defensa de los Cuatro Caballos"                            
    [120] "ECO B10 — Defensa Caro-Kann (variante irregular con Bb5)"            
    [121] "ECO C42 — Defensa Petrov (Defensa Rusa)"                             
    [122] "ECO C49 — Giuoco Piano (Italian Game)"                               
    [123] "ECO D02 — London System (con defensa flexible de negras)"            
    [124] "ECO C00 — Defensa Francesa (variante irregular con 2.Nf3 f6)"        
    [125] "ECO C42 — Defensa Petrov (variante con 3.Nxe5)"                      
    [126] "ECO A06 — Apertura Reti / Ataque Nf3"                                
    [127] "Mikenas Defense"                                                     
    df <- df %>%
      mutate(Apertura = if_else(!grepl("\\s", Apertura), NA_character_, Apertura))
  • Revisamos si existen valores que no cumplen

    summary(df$valida)
   Mode   FALSE    TRUE 
logical       6     921 
  • En caso existan, eliminamos dicha observación de la tabla
    df <- df %>%
      filter(valida)
  • Volvemos a revisar los valores
    summary(df$valida)
   Mode    TRUE 
logical     921 
  • Eliminamos las observaciones con algún dato faltante
    df <- na.omit(df)
  • Revisamos si tenemos algún dato faltante(No habrán puesto que la limpieza esta hecha)
    sum(is.na(df))
[1] 0
  • Finalmente, hacemos un summary para verificar que los rangos se cumplan
    summary(df)
   Apertura         total_movimientos      ELO            blunders    
 Length:905         Min.   :  3.00    Min.   : 100.0   Min.   : 0.00  
 Class :character   1st Qu.: 30.00    1st Qu.: 725.0   1st Qu.: 1.00  
 Mode  :character   Median : 42.00    Median : 950.0   Median : 2.00  
                    Mean   : 46.28    Mean   : 981.1   Mean   : 2.76  
                    3rd Qu.: 58.00    3rd Qu.:1237.0   3rd Qu.: 4.00  
                    Max.   :198.00    Max.   :1947.0   Max.   :23.00  
  inaccuracies   porcentaje_error  valida       
 Min.   : 0.00   Min.   : 0.00    Mode:logical  
 1st Qu.: 2.00   1st Qu.:17.65    TRUE:905      
 Median : 3.00   Median :25.71                  
 Mean   : 3.17   Mean   :27.91                  
 3rd Qu.: 4.00   3rd Qu.:35.29                  
 Max.   :13.00   Max.   :91.67                  

Tras este proceso, la base resultante quedó prolija (una observación por fila y variable), cumpliendo con el mínimo de 150 observaciones limpias por variable para su análisis.

III. Análisis descriptivo

III.1 Análisis univariado

  • Descriptores numéricos

    Se clasificaron las variables en cualitativas y cuantitativas, aplicando funciones que resumen cada una mediante medidas de posición y dispersión para analizar su distribución y variabilidad.

vars_cualitativas <- c("Apertura")
vars_cuantitativas <- c("total_movimientos", "ELO", "blunders", "inaccuracies", "porcentaje_error")

resumen_numerica <- function(x) {
  x <- x[is.finite(x)]
  if (length(x) == 0) return(tibble(media=NA, mediana=NA, sd=NA, var=NA, p25=NA, p50=NA, p75=NA))
  tibble(
    media = mean(x),
    mediana = median(x),
    sd = sd(x),
    var = var(x),
    p25 = quantile(x, 0.25, names = FALSE),
    p50 = quantile(x, 0.50, names = FALSE),
    p75 = quantile(x, 0.75, names = FALSE)
  )
}

resumen_categorica <- function(x) {
  x <- fct_explicit_na(as.factor(x), na_level = "(NA)")
  tibble(
    apertura = levels(x),
    n = as.integer(tabulate(x)),
    prop = n / sum(n)
  ) %>%
    arrange(desc(n))
}

summary_num <- map(vars_cuantitativas, ~ resumen_numerica(df[[.x]]) |> mutate(variable = .x)) |> list_rbind()
summary_cat <- map(vars_cualitativas, ~ resumen_categorica(df[[.x]])) |> list_rbind()
Warning: `fct_explicit_na()` was deprecated in forcats 1.0.0.
ℹ Please use `fct_na_value_to_level()` instead.
print("=== Resúmenes numéricos ==="); print(summary_num |> relocate(variable))
[1] "=== Resúmenes numéricos ==="
# A tibble: 5 × 8
  variable           media mediana     sd       var   p25   p50    p75
  <chr>              <dbl>   <dbl>  <dbl>     <dbl> <dbl> <dbl>  <dbl>
1 total_movimientos  46.3     42    23.3     542.    30    42     58  
2 ELO               981.     950   324.   104669.   725   950   1237  
3 blunders            2.76     2     2.64      6.96   1     2      4  
4 inaccuracies        3.17     3     2.12      4.51   2     3      4  
5 porcentaje_error   27.9     25.7  15.0     225.    17.6  25.7   35.3
print("=== Resúmenes cualitativos ==="); print(summary_cat)
[1] "=== Resúmenes cualitativos ==="
# A tibble: 116 × 3
   apertura                n   prop
   <chr>               <int>  <dbl>
 1 Queen's Pawn Game     154 0.170 
 2 English Opening        68 0.0751
 3 King's Pawn Game       54 0.0597
 4 Ware Opening           45 0.0497
 5 Caro-Kann Defense      35 0.0387
 6 Bird Opening           32 0.0354
 7 Nimzo-Larsen Attack    28 0.0309
 8 Zukertort Opening      28 0.0309
 9 French Defense         26 0.0287
10 Polish Opening         25 0.0276
# ℹ 106 more rows

III.1.1 Histograma de ELO

ggplot(df, aes(x = ELO)) +
  geom_histogram(bins = 30, fill = "skyblue", color = "white") +
  labs(title = "Distribución del ELO", x = "ELO", y = "Frecuencia") +
  theme_minimal()

  • Interpretación:

    La distribución del ELO presenta una forma multimodal, con varios picos de frecuencia concentrados principalmente entre los 600 y 1200 puntos. Esto indica que existen diferentes grupos de jugadores con niveles de habilidad bien diferenciados.
    El primer grupo se ubica alrededor de los 700–800 puntos, mientras que otro grupo relevante aparece cerca de los 1000–1100 puntos.
    A partir de los 1500 puntos, la frecuencia de jugadores disminuye notablemente, mostrando que los valores altos de ELO son menos comunes.
    En general, teniendo en cuenta los niveles de ELO, y considerando que las personas con hasta 1400 de ELO son principiantes, podemos observar que la mayoría de jugadores en la muestra son principiantes en ajedrez, aunque también hay presencia de participantes con mayor dominio técnico.

III.1.2 Distribución del porcentaje de error

h <- hist(df$porcentaje_error, breaks = 30, plot = FALSE)
df_hist <- data.frame(x = h$mids, count = h$counts)

ggplot(df_hist, aes(x = x, y = count)) +
  geom_col(fill = "tomato", color = "white") +
  geom_text(
    aes(label = ifelse(count > 0 & !is.na(x), round(x, 1), "")),
    vjust = -0.5,
    size = 3.5
  ) +
  labs(title = "Distribución del porcentaje de error", x = "Porcentaje de error", y = "Frecuencia") +
  theme_minimal()

  • Interpretación:

    La distribución del porcentaje de error muestra un claro sesgo a la derecha, concentrando la mayor parte de los casos entre el 15 % y el 35 %. Esto indica que la mayoría de los jugadores cometen errores moderados, mientras que los porcentajes de error altos (mayores al 60 %) son menos frecuentes.
    El pico principal se encuentra alrededor del 20 % – 25 %, lo que sugiere que este rango representa el comportamiento típico del conjunto de jugadores. A medida que el porcentaje de error aumenta, la frecuencia disminuye gradualmente, reflejando que solo una minoría presenta un desempeño muy impreciso.
    En conjunto, la distribución evidencia que el rendimiento general tiende a ser aceptable o intermedio, con una proporción reducida de partidas con errores excesivos, lo que puede asociarse a diferencias de nivel entre jugadores con distintos ELO.

III.1.3 Boxplot de porcentaje de error

ggplot(df, aes(y = porcentaje_error)) +
  geom_boxplot(fill = "tomato", alpha = 0.6) +
  labs(title = "Dispersión del porcentaje de error", y = "Porcentaje de error") +
  theme_minimal()

  • Interpretación:

    El boxplot del porcentaje de error muestra una distribución concentrada entre aproximadamente el 15 % y el 35 %, con una mediana cercana al 25 %, lo que coincide con la zona de mayor frecuencia observada en el histograma.
    Se observa una cantidad considerable de valores atípicos hacia el extremo superior, representados por puntos individuales por encima del 60 %, lo que evidencia que algunos jugadores cometieron errores significativamente más altos que la mayoría.
    En conjunto, la gráfica sugiere que la mayoría de los jugadores mantiene un rendimiento estable, mientras que un pequeño grupo presenta niveles de error elevados que incrementan la dispersión total de la variable. Esto refuerza la asimetría positiva (sesgo a la derecha) detectada en el análisis previo.

III.1.4 Barplot de aperturas

ggplot(df %>% filter(!is.na(Apertura)) %>% count(Apertura, sort = TRUE) %>% slice_head(n = 12),
       aes(x = reorder(Apertura, n), y = n)) +
  geom_col(fill = "lightgreen") +
  coord_flip() +
  labs(title = "Top 12 aperturas más usadas", x = "Apertura", y = "Frecuencia") +
  theme_minimal()

  • Interpretación:

    El gráfico de barras muestra una preferencia por la apertura Queen’s Pawn Game, la cual supera con amplia diferencia al resto en frecuencia de uso. Le siguen, a distancia considerable, la English Opening y la King’s Pawn Game, que presentan una participación moderada dentro del conjunto de partidas analizadas.
    Las demás aperturas —como Ware Opening, Caro-Kann Defense o Bird Opening— mantienen frecuencias mucho menores y relativamente similares entre sí.
    En general, la distribución evidencia una alta concentración en pocas aperturas, lo que sugiere que la mayoría de los jugadores tiende a elegir estrategias iniciales más comunes y populares. Esto podría estar asociado a su conocimiento teórico de las aperturas de ajedrez o a una preferencia por movimientos de apertura más seguros y conocidos.

III.2 Análisis de interacción

III.2.1 Primer Objetivo

Apertura vs total de movimientos

top_aperturas <- df %>%
  count(Apertura, sort = TRUE) %>%
  slice_head(n = 12) %>%
  pull(Apertura)

ggplot(df %>% filter(Apertura %in% top_aperturas),
       aes(x = fct_rev(fct_infreq(Apertura)), y = total_movimientos)) +
  geom_boxplot(fill = "skyblue") +
  labs(title = "Número de movimientos según la apertura (Top 12)",
       x = "Apertura", y = "Total de movimientos") +
  theme_minimal() +
  coord_flip()

  • Interpretación:

    El boxplot muestra que el número total de movimientos varía significativamente según la apertura utilizada. En general, las aperturas más populares —como Queen’s Pawn Game, English Opening y King’s Pawn Game— presentan una distribución de movimientos más amplia, indicando que estas estrategias pueden derivar tanto en partidas cortas como en enfrentamientos prolongados.
    Algunas aperturas, como la Zukertort Opening y la Nimzo–Larsen Attack, exhiben una mayor mediana de movimientos, lo que sugiere que tienden a generar partidas más extensas y complejas. Por el contrario, defensas como la French o la Hungarian Opening muestran medianas más bajas y menor dispersión, reflejando partidas de menor duración o con desenlaces más rápidos.
    Además, se observan valores atípicos (outliers) en casi todas las aperturas, representando partidas excepcionalmente largas. En conjunto, el gráfico evidencia que la elección de la apertura influye en la duración de la partida, probablemente por el grado de equilibrio o agresividad que caracteriza a cada estrategia inicial.

III.2.1 Segundo Objetivo

Desempeño según ELO (errores graves e imprecisiones)

df_long <- df %>%
  pivot_longer(cols = c(blunders, inaccuracies), names_to = "tipo_error", values_to = "cantidad")

ggplot(df_long, aes(x = ELO, y = cantidad, color = tipo_error)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "loess", se = FALSE) +
  labs(title = "Errores vs ELO del jugador", x = "ELO", y = "Cantidad de errores") +
  scale_x_continuous(limits = c(200, NA)) +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
Warning: Removed 2 rows containing non-finite outside the scale range
(`stat_smooth()`).
Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_point()`).

  • Interpretación:

    El gráfico muestra la relación entre el ELO del jugador y la cantidad de errores cometidos, diferenciando entre errores graves (blunders) e imprecisiones (inaccuracies).
    Se observa una tendencia decreciente en ambos tipos de error a medida que aumenta el ELO, lo que indica que los jugadores con mayor nivel cometen menos equivocaciones. En los valores bajos de ELO (por debajo de 800), las imprecisiones y los blunders son más frecuentes y dispersos, mientras que a partir de los 1200–1500 puntos la cantidad de errores se reduce de forma notable.
    La curva suavizada refuerza este patrón: aunque existen excepciones, los jugadores con ELO alto muestran un comportamiento más consistente y preciso, manteniendo la idea que un ELO mayor representa a un jugador intermedio o avanzado en ajedrez, evidenciando una relación inversa entre ELO y cantidad de errores.
    En resumen, el gráfico respalda la hipótesis de que el nivel de experiencia y dominio técnico influye directamente en la reducción de errores durante la partida.

Relación ELO – porcentaje de error

ggplot(df, aes(x = ELO, y = porcentaje_error)) +
  geom_point(alpha = 0.4, color = "purple") +
  geom_smooth(method = "loess", color = "black") +
  labs(title = "Relación entre ELO y porcentaje de error", x = "ELO", y = "Porcentaje de error") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'

  • Interpretación:

    El diagrama de dispersión evidencia una relación inversa entre el ELO y el porcentaje de error, donde los jugadores con mayor nivel de habilidad tienden a cometer menos errores porcentualmente.
    En los niveles bajos de ELO (por debajo de 600), los porcentajes de error son altos y dispersos, indicando un desempeño más inestable. A medida que el ELO aumenta, el porcentaje de error se estabiliza alrededor del 25 %–30 %, reflejando un mayor control y precisión en el juego.
    La curva suavizada refuerza esta tendencia descendente, especialmente en los valores altos de ELO (superiores a 1500), donde la variabilidad disminuye de forma notable. Esto sugiere que el nivel de experiencia y conocimiento estratégico del jugador reduce la probabilidad de cometer errores graves o reiterativos, confirmando una relación negativa entre ambas variables.

IV. Conclusiones

  • El análisis evidencia que el nivel de habilidad del jugador influye directamente en su precisión durante la partida. Se identifico una relación negativa entre el ELO y el porcentaje de error, lo que indica que los jugadores con mayor experiencia y capacidad estratégica cometen menos errores graves e imprecisiones. Este hallazgo confirma que el ELO es un indicador confiable del rendimiento técnico, reflejando un dominio más estable del juego a medida que se incrementa la habilidad del jugador.
  • Asimismo, las aperturas más utilizadas tienden a generar partidas más estandarizadas y de duración moderada. La Queen’s Pawn Game fue la apertura con mayor frecuencia de uso, lo que evidencia una preferencia general por estrategias conocidas y seguras, probablemente asosiadas al nivel principiante de la mayoría de jugadores. En contraste, aperturas menos comunes como la Nimzo-Larsen Attack o la Zukertort Opening se relacionaron con un mayor número de movimientos promedio, sugiriendo que estas estrategias favorecen partidas más prolongadas y con mayor complejidad.
  • Por otro lado, el porcentaje de error presentó una alta variabilidad en jugadores con menor ELO, concentrándose principalmente entre un 15 % y 35 % de error. La presencia de valores atípicos en estos niveles evidencia una heterogeneidad en el desempeño, posiblemente explicada por diferencias en la experiencia, el conocimiento teórico o la capacidad de cálculo táctico.
  • Finalmente, el análisis de interacción permitió identificar patrones conjuntos entre estrategia y desempeño. Los jugadores con mejor clasificación no solo cometen menos errores, sino que además eligen aperturas más equilibradas, que dan lugar a partidas prolongadas pero con menor porcentaje de fallos. En conjunto, estos resultados sugieren que la estrategia de apertura y la precisión técnica actúan conjuntamente como factores determinantes del rendimiento en el juego.