(DESCRIPCIÓN) This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
## spc_tbl_ [12,153 × 25] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Date : chr [1:12153] "16/01/2025" "16/01/2025" "15/01/2025" "15/01/2025" ...
## $ Season : chr [1:12153] "2024/25" "2024/25" "2024/25" "2024/25" ...
## $ HomeTeam : chr [1:12153] "Ipswich Town" "Man United" "Everton" "Leicester" ...
## $ AwayTeam : chr [1:12153] "Brighton & Hove Albion" "Southampton" "Aston Villa" "Crystal Palace" ...
## $ FTH Goals : num [1:12153] 0 3 0 0 3 2 2 2 3 1 ...
## $ FTA Goals : num [1:12153] 2 1 1 2 0 1 2 2 2 1 ...
## $ FT Result : chr [1:12153] "A" "H" "A" "A" ...
## $ HTH Goals : num [1:12153] 0 0 0 0 1 2 0 1 2 1 ...
## $ HTA Goals : num [1:12153] 1 1 0 0 0 1 0 0 0 0 ...
## $ HT Result : chr [1:12153] "A" "A" "D" "D" ...
## $ Referee : chr [1:12153] "T Harrington" "J Brooks" "S Barrott" "A Madley" ...
## $ H Shots : num [1:12153] 5 23 10 21 17 14 18 26 4 6 ...
## $ A Shots : num [1:12153] 11 13 11 9 13 10 21 7 21 23 ...
## $ H SOT : num [1:12153] 3 9 3 4 5 4 6 10 3 3 ...
## $ A SOT : num [1:12153] 5 5 3 4 7 2 8 3 5 7 ...
## $ H Fouls : num [1:12153] 13 7 17 7 10 16 4 15 9 7 ...
## $ A Fouls : num [1:12153] 14 10 10 6 13 9 4 16 18 10 ...
## $ H Corners : num [1:12153] 1 4 8 4 4 10 4 9 0 0 ...
## $ A Corners : num [1:12153] 9 4 5 3 2 4 5 3 3 9 ...
## $ H Yellow : num [1:12153] 2 1 2 0 0 3 0 2 3 2 ...
## $ A Yellow : num [1:12153] 2 3 1 0 2 1 0 3 3 1 ...
## $ H Red : num [1:12153] 0 0 0 0 0 0 0 0 0 0 ...
## $ A Red : num [1:12153] 0 0 0 0 0 0 0 0 0 0 ...
## $ Display_Order: num [1:12153] 20250116 20250116 20250115 20250115 20250115 ...
## $ League : chr [1:12153] "Premier League" "Premier League" "Premier League" "Premier League" ...
## - attr(*, "spec")=
## .. cols(
## .. Date = col_character(),
## .. Season = col_character(),
## .. HomeTeam = col_character(),
## .. AwayTeam = col_character(),
## .. `FTH Goals` = col_double(),
## .. `FTA Goals` = col_double(),
## .. `FT Result` = col_character(),
## .. `HTH Goals` = col_double(),
## .. `HTA Goals` = col_double(),
## .. `HT Result` = col_character(),
## .. Referee = col_character(),
## .. `H Shots` = col_double(),
## .. `A Shots` = col_double(),
## .. `H SOT` = col_double(),
## .. `A SOT` = col_double(),
## .. `H Fouls` = col_double(),
## .. `A Fouls` = col_double(),
## .. `H Corners` = col_double(),
## .. `A Corners` = col_double(),
## .. `H Yellow` = col_double(),
## .. `A Yellow` = col_double(),
## .. `H Red` = col_double(),
## .. `A Red` = col_double(),
## .. Display_Order = col_double(),
## .. League = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
## [1] "Date" "Season" "HomeTeam" "AwayTeam"
## [5] "FTH Goals" "FTA Goals" "FT Result" "HTH Goals"
## [9] "HTA Goals" "HT Result" "Referee" "H Shots"
## [13] "A Shots" "H SOT" "A SOT" "H Fouls"
## [17] "A Fouls" "H Corners" "A Corners" "H Yellow"
## [21] "A Yellow" "H Red" "A Red" "Display_Order"
## [25] "League"
#Reemplazar valores faltantes con la media, NO es recomendable imputar valores faltantes con la media si hay datos sesgados, outliers, patrones temporales o alta proporción de valores faltantes; mejor usar mediana, KNN o interpolación.
You can also embed plots, for example:
#Eliminar datos atípicos

## === RESUMEN ESTADÍSTICO ===
##
## [ANTES de winsorización]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 1.000 1.000 1.531 2.000 9.000
##
## [DESPUÉS de winsorización]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 1.000 1.000 1.489 2.000 3.965

## === RESUMEN ESTADÍSTICO ===
##
## [ANTES de winsorización]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 11.00 13.00 13.47 16.00 43.00
##
## [DESPUÉS de winsorización]
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.07 11.00 13.00 13.15 16.00 18.93

names(data)[duplicated(names(data))]
## character(0)

#REGRESION LINEAL CON DATOS ATIPICOS #GRAFICA DE DISPERSION
# Cargar la biblioteca ggplot2
library(ggplot2)
# Crear la gráfica de dispersión
ggplot(data, aes(x = Goles_local, y = Tiros_L)) +
geom_point(color = "blue") + # Puntos en color azul
labs(title = "Goles de Local vs. Goles de Visitante",
x = "Goles Local",
y = "Goles Visitante") +
theme_minimal() # Estilo limpio

# Eliminar valores NA
data_clean <- na.omit(data)
#COVARIANZA
# 📌 Calcular la covarianza
covarianza <- cov(data_clean$Goles_local, data_clean$Tiros_L)
cat("\n📊 Covarianza:", round(covarianza, 4), "\n")
##
## 📊 Covarianza: 2.0383
#CORRELACION DE PEARSON
# 📌 Calcular la correlación de Pearson
cor_pearson <- cor(data_clean$Goles_local, data_clean$Tiros_L, method = "pearson")
cat("🔹 Correlación de Pearson:", round(cor_pearson, 4), "\n")
## 🔹 Correlación de Pearson: 0.2918
#CORRELACION DE SPEARMAN
# 📌 Calcular la correlación de Spearman
cor_spearman <- cor(data_clean$Goles_local, data_clean$Tiros_L, method = "spearman")
cat("🔸 Correlación de Spearman:", round(cor_spearman, 4), "\n")
## 🔸 Correlación de Spearman: 0.2787
#CORRELACION LINEAL COEFICIENTE DE DETERMINACION
# 📌 Realizar regresión lineal
modelo <- lm(Tiros_L ~ Goles_local, data = data_clean)
intercepto <- coef(modelo)[1]
pendiente <- coef(modelo)[2]
# 📌 Extraer el coeficiente de determinación (R²)
r2 <- summary(modelo)$r.squared
# 📌 Mostrar resultados de manera más clara
cat("\n📊 RESULTADOS DE LA REGRESIÓN LINEAL 📊\n")
##
## 📊 RESULTADOS DE LA REGRESIÓN LINEAL 📊
cat("Fórmula del modelo: Tiros_L =", round(intercepto, 4), "+", round(pendiente, 4), "* Goles_local\n")
## Fórmula del modelo: Tiros_L = 11.7822 + 1.1955 * Goles_local
cat("🔸 Coeficiente de determinación (R²):", round(r2, 4), "\n")
## 🔸 Coeficiente de determinación (R²): 0.0852
# 📌 Interpretación rápida de R²
if (r2 > 0.7) {
cat("✅ La variable 'Goles_local' explica bien la variabilidad en 'Tiros_L'.\n")
} else if (r2 > 0.3) {
cat("⚠️ Hay una relación moderada entre 'Goles_local' y 'Tiros_L'.\n")
} else {
cat("❌ La relación es débil. Puede que 'Goles_local' no sea un buen predictor de 'Tiros_L'.\n")
}
## ❌ La relación es débil. Puede que 'Goles_local' no sea un buen predictor de 'Tiros_L'.
# 📌 Graficar la regresión lineal con la nube de puntos
ggplot(data_clean, aes(x = Goles_local, y = Tiros_L)) +
geom_point(alpha = 0.5, color = "blue") + # Puntos de dispersión
geom_smooth(method = "lm", se = FALSE, color = "red") + # Línea de regresión
labs(title = "Regresión Lineal: Goles Local vs TIros equipo local",
x = "Goles Local",
y = "Tiros equipo local") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

#BOXPLOT
# 📌 Graficar los boxplots para comparar la distribución de los goles
ggplot(data_clean, aes(y = Goles_local, x = "Goles Local")) +
geom_boxplot(fill = "lightblue") +
labs(title = "Distribución de Goles Locales", y = "Goles Locales", x = "") +
theme_minimal()

ggplot(data_clean, aes(y = Tiros_L, x = "Tiros local")) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Distribución de tiros equipo local", y = "Tiros equipo local", x = "") +
theme_minimal()

#REGRESION LINEAL SIN DATOS ATIPICOS #COVARIANZA
# 📌 Calcular la covarianza
covarianza <- cov(data_clean$Goles_local_winsor, data_clean$Tiros_L_winsor)
cat("\n📊 Covarianza:", round(covarianza, 4), "\n")
##
## 📊 Covarianza: 1.3606
#CORRELACION DE PEARSON
# 📌 Calcular la correlación de Pearson
cor_pearson <- cor(data_clean$Goles_local_winsor, data_clean$Tiros_L_winsor, method = "pearson")
cat("🔹 Correlación de Pearson:", round(cor_pearson, 4), "\n")
## 🔹 Correlación de Pearson: 0.2856
#Correlacion de spearman sin datos atipicos
# 📌 Calcular la correlación de Spearman
cor_spearman <- cor(data_clean$Goles_local_winsor, data_clean$Tiros_L_winsor, method = "spearman")
cat("🔸 Correlación de Spearman:", round(cor_spearman, 4), "\n")
## 🔸 Correlación de Spearman: 0.2768
#Correlacion lineal coeficiente de determinacion sin datos atipicos
# 📌 Realizar regresión lineal
modelo <- lm(Tiros_L_winsor ~ Goles_local_winsor, data = data_clean)
intercepto <- coef(modelo)[1]
pendiente <- coef(modelo)[2]
# 📌 Extraer el coeficiente de determinación (R²)
r2 <- summary(modelo)$r.squared
# 📌 Mostrar resultados de manera más clara
cat("\n📊 RESULTADOS DE LA REGRESIÓN LINEAL 📊\n")
##
## 📊 RESULTADOS DE LA REGRESIÓN LINEAL 📊
cat("Fórmula del modelo: Tiros_L =", round(intercepto, 4), "+", round(pendiente, 4), "* Goles_local\n")
## Fórmula del modelo: Tiros_L = 11.764 + 0.9585 * Goles_local
cat("🔸 Coeficiente de determinación (R²):", round(r2, 4), "\n")
## 🔸 Coeficiente de determinación (R²): 0.0815
# 📌 Interpretación rápida de R²
if (r2 > 0.7) {
cat("✅ La variable 'Goles_local' explica bien la variabilidad en 'Tiros_L'.\n")
} else if (r2 > 0.3) {
cat("⚠️ Hay una relación moderada entre 'Goles_local' y 'Tiros_L'.\n")
} else {
cat("❌ La relación es débil. Puede que 'Goles_local' no sea un buen predictor de 'Tiros_L'.\n")
}
## ❌ La relación es débil. Puede que 'Goles_local' no sea un buen predictor de 'Tiros_L'.
# 📌 Graficar la regresión lineal con la nube de puntos
ggplot(data_clean, aes(x = Goles_local_winsor, y = Tiros_L_winsor)) +
geom_point(alpha = 0.5, color = "blue") + # Puntos de dispersión
geom_smooth(method = "lm", se = FALSE, color = "red") + # Línea de regresión
labs(title = "Regresión Lineal: Goles Local vs TIros equipo local",
x = "Goles Local",
y = "Tiros equipo local") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

#BOXPLOT SIN DATOS ATIPICOS
# 📌 Graficar los boxplots para comparar la distribución de los goles
ggplot(data_clean, aes(y = Goles_local_winsor, x = "Goles Local")) +
geom_boxplot(fill = "lightblue") +
labs(title = "Distribución de Goles Locales", y = "Goles Locales", x = "") +
theme_minimal()

ggplot(data_clean, aes(y = Tiros_L_winsor, x = "Tiros_L")) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Distribución de Tiros equipo local", y = "Tiros_L", x = "") +
theme_minimal()

library(DT)
# Crear la tabla manualmente
tabla_resultados <- data.frame(
Metrica = c("Covarianza", "Correlación de Pearson", "Correlación de Spearman", "Coeficiente de determinación (R²)"),
Con_Datos_Atipicos = c(2.0383, 0.2918, 0.2787, 0.0852),
Sin_Datos_Atipicos = c(1.3606, 0.2856, 0.2768, 0.0815)
)
# Mostrar la tabla interactiva
datatable(
tabla_resultados,
options = list(
pageLength = 5,
autoWidth = TRUE
),
caption = "Tabla comparativa de métricas con y sin datos atípicos"
)
La covarianza tiene un cambio grande por lo que los valores atipicos aumentaban fuertemente su valor, esto significa que los valores atipicos hacian parecer que la covarianza era aun mas fuerte de lo que es, podemos ver esto que aunque aunmenten los tiros del equipo local no indica que los goles aumenten de manera fuerte En la correlacion no hay mucho cambio, pero al tener un valor tan cercano a 0 no hay mucha relacion lineal entre ambas Coeficiente de spearman, esta apenas cambio lo que indica que aunque las variables no tengan mucha relacion, esta si es fuerte a los cambios de datos mostrando que la tendencia monotona es fuerte, pero baja Esta al no cambiar practicamente indica que los tiros del equipo local no son un predictor muy fuerte de los goles del equipo local por lo que otros valores como tiros a puerta pueden afectar tambien En las graficas de regresion lineal podemos ver que son similares, pero con datos mas compactos siendo en la segunda un poco mas alta, aunque no haya mucha diferencia En los boxplot podemos ver una diferencia en como los datos reflejan los partidos comunes, por ejemplo en el de tiros se eliminaron los casos raros en los que hay mas de 30 y vemos como la mediana aumenta, lo que inidica que estos partidos cambian significativamente los valores