Kayla Nightingale se preguntó acerca de los factores que los gerentes de equipo consideraron al determinar los valores de mercado de los jugadores de la Liga de Campeones de la Unión de Asociaciones Europeas de Fútbol, para tal efecto Nightingale reunió varios datos de rendimiento de la liga y las noticias de transferencia de 77 jugadores de fútbol ofensivos notables (es decir, mediocampistas y delanteros) que se mudaron a otro equipo entre 2009 y 2015.
Los objetivos del presente trabajo son:
Determinar los factores esenciales que hacen que un jugador de fútbol ofensivo sea valioso.
Construir un modelo funcional que pudiera predecir el valor de mercado de un jugador.
cargamos la base de datos
library("xlsx")
setwd("C:/Users/Dell/Desktop/analisis lineal/TRABAJO")
Base <-read.xlsx("W16653-XLS-ENG task-1.xlsx", sheetName = "Student_Data")
library(funModeling)
df_status(Base)
## variable q_zeros p_zeros q_na p_na q_inf p_inf type unique
## 1 X. 0 0.00 0 0 0 0 numeric 77
## 2 Year 0 0.00 0 0 0 0 numeric 7
## 3 Player.Name 0 0.00 0 0 0 0 factor 71
## 4 From 0 0.00 0 0 0 0 factor 45
## 5 To 0 0.00 0 0 0 0 factor 26
## 6 GBP..M. 0 0.00 0 0 0 0 numeric 55
## 7 Y.5 12 15.58 0 0 0 0 numeric 38
## 8 Y.4 5 6.49 0 0 0 0 numeric 37
## 9 Y.3 1 1.30 0 0 0 0 numeric 38
## 10 Y.2 0 0.00 0 0 0 0 numeric 32
## 11 Y.1 0 0.00 0 0 0 0 numeric 37
## 12 WA 0 0.00 0 0 0 0 numeric 72
## 13 Goals 0 0.00 0 0 0 0 numeric 50
## 14 App 0 0.00 0 0 0 0 numeric 53
## 15 G.A 0 0.00 0 0 0 0 numeric 75
## 16 Age 0 0.00 0 0 0 0 numeric 13
## 17 Height 0 0.00 0 0 0 0 numeric 25
## 18 Pos 0 0.00 0 0 0 0 factor 2
## 19 Foot 0 0.00 0 0 0 0 factor 3
## 20 CR 0 0.00 0 0 0 0 numeric 2
## 21 NR 0 0.00 0 0 0 0 numeric 3
names(Base)
## [1] "X." "Year" "Player.Name" "From" "To"
## [6] "GBP..M." "Y.5" "Y.4" "Y.3" "Y.2"
## [11] "Y.1" "WA" "Goals" "App" "G.A"
## [16] "Age" "Height" "Pos" "Foot" "CR"
## [21] "NR"
head(Base)
## X. Year Player.Name From To GBP..M.
## 1 1 2015  Douglas Costa  Shakhtar Donetsk  Bayern Munich 21.9
## 2 2 2015  André Schürrle  Chelsea  Wolfsburg 22.0
## 3 3 2015  Juan Cuadrado  Fiorentina  Chelsea 23.3
## 4 4 2015  Mateo KovaÄ\215ić  Inter  Real Madrid 23.4
## 5 5 2015  Paulo Dybala  Palermo  Juventus 23.4
## 6 6 2015  Carlos Bacca  Sevilla  Milan 23.9
## Y.5 Y.4 Y.3 Y.2 Y.1 WA Goals App
## 1 0.9000000 0.9000000 0.9000000 0.9642857 0.7692308 0.8867033 25 128
## 2 0.9117647 0.9117647 1.0000000 0.8823529 0.9375000 0.9286765 45 156
## 3 0.2368421 0.8684211 0.9473684 0.8421053 0.8500000 0.7489474 23 127
## 4 0.8333333 0.8461538 0.8125000 0.8421053 0.9210526 0.8510290 11 126
## 5 0.7105263 1.0000000 0.7105263 0.6666667 0.9210526 0.8017544 38 128
## 6 0.9722222 0.7142857 1.0000000 0.9210526 0.9473684 0.9109858 82 152
## G.A Age Height Pos Foot CR NR
## 1 0.19531250 24 172 OFF L 2 1
## 2 0.28846154 24 184 OFF R 1 1
## 3 0.18110236 27 178 OFF R 2 3
## 4 0.08730159 21 178 MID R 1 2
## 5 0.29687500 21 176 OFF L 2 1
## 6 0.53947368 28 181 OFF R 2 3
summary(Base)
## X. Year Player.Name From
## Min. : 1 Min. :2009 Â Ã\201ngel Di MarÃa: 2 Â Arsenal : 4
## 1st Qu.:20 1st Qu.:2012  Cesc Fà bregas : 2  Atlético Madrid: 4
## Median :39 Median :2013 Â Juan Mata : 2 Â Barcelona : 4
## Mean :39 Mean :2013 Â Radamel Falcao : 2 Â Liverpool : 4
## 3rd Qu.:58 3rd Qu.:2015 Â Roberto Firmino : 2 Â Valencia : 4
## Max. :77 Max. :2015 Â Robin van Persie: 2 Â Porto : 3
## (Other) :65 (Other) :54
## To GBP..M. Y.5 Y.4
## Â Manchester City :11 Min. : 4.25 Min. :0.0000 Min. :0.0000
## Â Real Madrid : 9 1st Qu.:24.70 1st Qu.:0.4474 1st Qu.:0.7143
## Â Chelsea : 8 Median :30.00 Median :0.8421 Median :0.8421
## Â Manchester United: 7 Mean :34.18 Mean :0.6715 Mean :0.7569
## Â Barcelona : 6 3rd Qu.:35.50 3rd Qu.:0.9211 3rd Qu.:0.9118
## Â Liverpool : 4 Max. :86.00 Max. :1.0000 Max. :1.0000
## (Other) :32
## Y.3 Y.2 Y.1 WA
## Min. :0.0000 Min. :0.2895 Min. :0.1316 Min. :0.2568
## 1st Qu.:0.6579 1st Qu.:0.7333 1st Qu.:0.7667 1st Qu.:0.7263
## Median :0.8158 Median :0.8667 Median :0.8684 Median :0.8018
## Mean :0.7719 Mean :0.8144 Mean :0.8280 Mean :0.7685
## 3rd Qu.:0.9211 3rd Qu.:0.9211 3rd Qu.:0.9211 3rd Qu.:0.8684
## Max. :1.0000 Max. :1.0000 Max. :1.0000 Max. :0.9393
##
## Goals App G.A Age
## Min. : 4.00 Min. : 47.0 Min. :0.03604 Min. :19.00
## 1st Qu.: 25.00 1st Qu.:127.0 1st Qu.:0.19136 1st Qu.:23.00
## Median : 38.00 Median :143.0 Median :0.27143 Median :25.00
## Mean : 45.25 Mean :136.2 Mean :0.32832 Mean :24.73
## 3rd Qu.: 61.00 3rd Qu.:156.0 3rd Qu.:0.46199 3rd Qu.:27.00
## Max. :111.00 Max. :189.0 Max. :0.70667 Max. :31.00
##
## Height Pos Foot CR NR
## Min. :167.0 MID:30 B:16 Min. :1.000 Min. :1.000
## 1st Qu.:175.0 OFF:47 L:18 1st Qu.:1.000 1st Qu.:1.000
## Median :180.0 R:43 Median :1.000 Median :1.000
## Mean :179.9 Mean :1.182 Mean :1.325
## 3rd Qu.:184.0 3rd Qu.:1.000 3rd Qu.:1.000
## Max. :195.0 Max. :2.000 Max. :3.000
##
La primera columna es un identificador, contamos con 20 variables de las cuales 5 son cualitativas y 15 son cuantitativas, para el modelo de regresion solo consideraremos las variables cuantitativas, la variable respuesta es :
library(ggplot2)
ggplot(data = Base, aes(x = Year)) +
geom_bar(color = "blue", fill = "white") +
coord_flip() +
labs(list(x = "Region", y = "Frecuencia"))+
geom_text(stat='count',aes(label=..count..),vjust=0.5)
densidad
ggplot(data = Base,
aes(x = GBP..M.))+
geom_density() +
labs(list(x = "Precio de venta del jugador", y = "Densidad"))+
theme(axis.title = element_text(face = "bold", colour = "#990000",
size = 10), axis.text = element_text(size = 7),
plot.title = element_text(size = rel(1.2), colour = "blue"))
Analizar la relación entre variables
En primer lugar estableceremos si existe relacion entre las variables.
De este modo identificaremos los mejores predictores para el modelo de regresion lineal, mediante el calculo de los coeficientes de regresion para cada variable, para tal efecto nos valdremos del paquete GGally
library("GGally")
ggpairs(Base[,c(-1,-3,-4,-5,-18,-19)], lower = list(continuous = "smooth"),
diag = list(continuous = "barDiag"), axisLabels = "none")
En primer lugar observamos que la variable respuesta GBP (M) tiene una muy baja correlación con las demás variables, el mayor valor es con G / A: Relación entre goles y apariciones en partidos de liga durante los últimos cinco años con una correlación de 0.229. Lo cual nos hace pensar que el modelo de regresion lineal multiple no es el más adecuado o podrian existir datos atípicos que estan influyendo en los resultados, tambien podria estar sucediendo que no cumplen algunos de los supuestos de regresión lineal.
Para el caso de las variables explicativas las de mayor correlación son:
Y-3: Aparición sobre el número total de partidos de liga tres años antes de la transferencia
Y-4: Aparición sobre el número total de partidos de liga cuatro años antes de la transferencia.
Y-5: Aparición sobre el número total de partidos de liga (índice de utilización) cinco años antes de la transferencia.
Goles: número total de goles marcados en partidos de liga en los últimos cinco años.
App: número total de apariciones en partidos de liga durante los últimos cinco años
Age: Edad en el momento de la transferencia
CR: Clasificación del club del equipo que vende al jugador.
modelo <- lm(GBP..M. ~ Y.5 +Y.4+Y.3+Y.2+Y.1+WA+Goals+App+G.A+Age+Height+CR+NR, data = Base)
summary(modelo)
##
## Call:
## lm(formula = GBP..M. ~ Y.5 + Y.4 + Y.3 + Y.2 + Y.1 + WA + Goals +
## App + G.A + Age + Height + CR + NR, data = Base)
##
## Residuals:
## Min 1Q Median 3Q Max
## -24.749 -10.408 -1.687 6.777 44.517
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 47.36770 58.92169 0.804 0.4244
## Y.5 0.60860 9.69586 0.063 0.9501
## Y.4 -0.20105 10.55595 -0.019 0.9849
## Y.3 -5.83233 12.15619 -0.480 0.6330
## Y.2 10.35664 13.57120 0.763 0.4482
## Y.1 -2.90889 14.33981 -0.203 0.8399
## WA NA NA NA NA
## Goals 0.31530 0.49041 0.643 0.5226
## App 0.01837 0.20479 0.090 0.9288
## G.A -17.82108 70.55552 -0.253 0.8014
## Age -2.10242 0.91122 -2.307 0.0243 *
## Height 0.18575 0.30180 0.615 0.5404
## CR -8.56589 5.07354 -1.688 0.0962 .
## NR 2.11657 3.33106 0.635 0.5274
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.82 on 64 degrees of freedom
## Multiple R-squared: 0.1983, Adjusted R-squared: 0.04802
## F-statistic: 1.319 on 12 and 64 DF, p-value: 0.2299
El modelo con todas las variables introducidas como predictores tiene un R-squared: 0.1983, es capaz de explicar el 18,83% de la variabilidad observada en el precio de transferencia del jugador.la mayoria de los coeficientes de regresion no son significativos, lo que es un indicativo de que podrían no contribuir al modelo.
En este caso se van a emplear la estrategia de stepwise mixto. El valor matemático empleado para determinar la calidad del modelo va a ser Akaike(AIC).
El modelo preferido es el que tiene el valor mínimo en el AIC.
step(object = modelo, direction = "both", trace = 1)
## Start: AIC=437
## GBP..M. ~ Y.5 + Y.4 + Y.3 + Y.2 + Y.1 + WA + Goals + App + G.A +
## Age + Height + CR + NR
##
##
## Step: AIC=437
## GBP..M. ~ Y.5 + Y.4 + Y.3 + Y.2 + Y.1 + Goals + App + G.A + Age +
## Height + CR + NR
##
## Df Sum of Sq RSS AIC
## - Y.4 1 0.09 16018 435.00
## - Y.5 1 0.99 16019 435.01
## - App 1 2.01 16020 435.01
## - Y.1 1 10.30 16029 435.05
## - G.A 1 15.97 16034 435.08
## - Y.3 1 57.61 16076 435.28
## - Height 1 94.81 16113 435.46
## - NR 1 101.05 16120 435.49
## - Goals 1 103.46 16122 435.50
## - Y.2 1 145.76 16164 435.70
## <none> 16018 437.00
## - CR 1 713.45 16732 438.36
## - Age 1 1332.38 17351 441.15
##
## Step: AIC=435
## GBP..M. ~ Y.5 + Y.3 + Y.2 + Y.1 + Goals + App + G.A + Age + Height +
## CR + NR
##
## Df Sum of Sq RSS AIC
## - Y.5 1 0.97 16020 433.01
## - App 1 2.00 16020 433.01
## - Y.1 1 10.22 16029 433.05
## - G.A 1 16.62 16035 433.08
## - Y.3 1 57.83 16076 433.28
## - Height 1 95.35 16114 433.46
## - NR 1 102.26 16121 433.49
## - Goals 1 106.01 16124 433.51
## - Y.2 1 152.50 16171 433.73
## <none> 16018 435.00
## - CR 1 713.91 16732 436.36
## + Y.4 1 0.09 16018 437.00
## + WA 1 0.09 16018 437.00
## - Age 1 1338.28 17357 439.18
##
## Step: AIC=433.01
## GBP..M. ~ Y.3 + Y.2 + Y.1 + Goals + App + G.A + Age + Height +
## CR + NR
##
## Df Sum of Sq RSS AIC
## - App 1 3.63 16023 431.02
## - Y.1 1 10.61 16030 431.06
## - G.A 1 19.09 16039 431.10
## - Y.3 1 63.40 16083 431.31
## - Height 1 95.53 16115 431.47
## - NR 1 101.60 16121 431.49
## - Goals 1 113.05 16133 431.55
## - Y.2 1 151.53 16171 431.73
## <none> 16020 433.01
## - CR 1 722.19 16742 434.40
## + Y.5 1 0.97 16018 435.00
## + WA 1 0.28 16019 435.01
## + Y.4 1 0.08 16019 435.01
## - Age 1 1436.39 17456 437.62
##
## Step: AIC=431.02
## GBP..M. ~ Y.3 + Y.2 + Y.1 + Goals + G.A + Age + Height + CR +
## NR
##
## Df Sum of Sq RSS AIC
## - Y.1 1 8.54 16032 429.07
## - Y.3 1 61.58 16085 429.32
## - Height 1 93.40 16116 429.47
## - NR 1 98.11 16121 429.49
## - G.A 1 101.74 16125 429.51
## - Y.2 1 161.84 16185 429.80
## <none> 16023 431.02
## - Goals 1 449.52 16473 431.16
## - CR 1 719.10 16742 432.41
## + App 1 3.63 16020 433.01
## + Y.5 1 2.60 16020 433.01
## + WA 1 2.06 16021 433.01
## + Y.4 1 0.31 16023 433.02
## - Age 1 1506.72 17530 435.94
##
## Step: AIC=429.07
## GBP..M. ~ Y.3 + Y.2 + Goals + G.A + Age + Height + CR + NR
##
## Df Sum of Sq RSS AIC
## - Y.3 1 59.38 16091 427.35
## - G.A 1 93.57 16125 427.51
## - NR 1 93.71 16125 427.51
## - Height 1 94.92 16127 427.52
## - Y.2 1 155.20 16187 427.81
## <none> 16032 429.07
## - Goals 1 448.22 16480 429.19
## - CR 1 784.02 16816 430.74
## + Y.1 1 8.54 16023 431.02
## + Y.5 1 2.37 16029 431.05
## + App 1 1.55 16030 431.06
## + Y.4 1 0.41 16031 431.06
## + WA 1 0.02 16032 431.07
## - Age 1 1498.67 17530 433.95
##
## Step: AIC=427.35
## GBP..M. ~ Y.2 + Goals + G.A + Age + Height + CR + NR
##
## Df Sum of Sq RSS AIC
## - G.A 1 46.01 16137 425.57
## - NR 1 60.50 16152 425.64
## - Height 1 96.13 16187 425.81
## - Y.2 1 169.54 16261 426.16
## - Goals 1 398.90 16490 427.24
## <none> 16091 427.35
## + Y.3 1 59.38 16032 429.07
## + WA 1 13.96 16077 429.28
## + Y.1 1 6.34 16085 429.32
## + Y.5 1 3.75 16087 429.33
## + App 1 3.12 16088 429.34
## + Y.4 1 0.97 16090 429.35
## - CR 1 878.19 16969 429.44
## - Age 1 1448.66 17540 431.99
##
## Step: AIC=425.57
## GBP..M. ~ Y.2 + Goals + Age + Height + CR + NR
##
## Df Sum of Sq RSS AIC
## - NR 1 46.49 16184 423.79
## - Height 1 77.48 16214 423.94
## - Y.2 1 233.56 16371 424.68
## <none> 16137 425.57
## + G.A 1 46.01 16091 427.35
## + Y.5 1 37.05 16100 427.39
## + App 1 24.94 16112 427.45
## + Y.3 1 11.82 16125 427.51
## + WA 1 6.56 16130 427.54
## + Y.4 1 5.60 16132 427.54
## + Y.1 1 0.72 16136 427.57
## - CR 1 872.25 17009 427.62
## - Age 1 1518.25 17655 430.49
## - Goals 1 1736.46 17874 431.44
##
## Step: AIC=423.79
## GBP..M. ~ Y.2 + Goals + Age + Height + CR
##
## Df Sum of Sq RSS AIC
## - Height 1 85.29 16269 422.20
## - Y.2 1 304.73 16488 423.23
## <none> 16184 423.79
## + NR 1 46.49 16137 425.57
## - CR 1 826.10 17010 425.63
## + G.A 1 32.00 16152 425.64
## + Y.5 1 22.10 16161 425.69
## + App 1 15.94 16168 425.72
## + Y.4 1 6.93 16177 425.76
## + WA 1 6.43 16177 425.76
## + Y.3 1 4.34 16179 425.77
## + Y.1 1 0.32 16183 425.79
## - Age 1 1483.82 17667 428.55
## - Goals 1 1774.38 17958 429.80
##
## Step: AIC=422.2
## GBP..M. ~ Y.2 + Goals + Age + CR
##
## Df Sum of Sq RSS AIC
## - Y.2 1 338.64 16608 421.78
## <none> 16269 422.20
## + Height 1 85.29 16184 423.79
## + NR 1 54.30 16214 423.94
## - CR 1 850.83 17120 424.12
## + G.A 1 15.79 16253 424.12
## + Y.5 1 11.50 16257 424.14
## + Y.3 1 7.70 16261 424.16
## + App 1 4.89 16264 424.17
## + Y.4 1 1.65 16267 424.19
## + Y.1 1 1.29 16268 424.19
## + WA 1 0.97 16268 424.19
## - Age 1 1419.49 17688 426.64
## - Goals 1 1954.23 18223 428.93
##
## Step: AIC=421.78
## GBP..M. ~ Goals + Age + CR
##
## Df Sum of Sq RSS AIC
## <none> 16608 421.78
## + Y.2 1 338.64 16269 422.20
## + NR 1 137.03 16470 423.14
## + Height 1 119.20 16488 423.23
## - CR 1 760.09 17368 423.23
## + WA 1 60.24 16547 423.50
## + G.A 1 59.94 16548 423.50
## + App 1 43.55 16564 423.58
## + Y.5 1 29.03 16578 423.65
## + Y.1 1 6.30 16601 423.75
## + Y.4 1 1.86 16606 423.77
## + Y.3 1 0.61 16607 423.78
## - Age 1 1699.76 18307 427.29
## - Goals 1 2320.26 18928 429.85
##
## Call:
## lm(formula = GBP..M. ~ Goals + Age + CR, data = Base)
##
## Coefficients:
## (Intercept) Goals Age CR
## 80.9602 0.2221 -1.9062 -8.2010
El mejor modelo resultante del proceso de selección ha sido:
modelof <- lm(formula = GBP..M. ~ Goals + Age + CR, data = Base)
summary(modelof)
##
## Call:
## lm(formula = GBP..M. ~ Goals + Age + CR, data = Base)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.841 -10.135 -2.462 6.129 50.107
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 80.96019 17.22794 4.699 1.2e-05 ***
## Goals 0.22206 0.06953 3.194 0.00207 **
## Age -1.90617 0.69736 -2.733 0.00786 **
## CR -8.20102 4.48669 -1.828 0.07166 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15.08 on 73 degrees of freedom
## Multiple R-squared: 0.1689, Adjusted R-squared: 0.1347
## F-statistic: 4.943 on 3 and 73 DF, p-value: 0.003517
Si bien es cierto el valor del R-squared: 0.1689 es menor que en modelo original, los coeficientes son significativos. además el p-value: 0.003517 lo que indica que al menos uno de los coeficientes es diferente de cero.
Es recomendable mostrar el intervalo de confianza para cada uno de los coeficientes parciales de regresión:
confint(lm(formula = GBP..M. ~ Goals + Age + CR, data = Base))
## 2.5 % 97.5 %
## (Intercept) 46.62495575 115.2954336
## Goals 0.08347954 0.3606348
## Age -3.29600108 -0.5163304
## CR -17.14298547 0.7409506
Podemos interpretar algunos de los coeficienters de regresión:
Por cada aumento en un año de la edad del jugador el precio de transferencia disminuye en 1.90617 millones de libras esterlinas manteniendo constante las las otras variables regresoras.
Por cada gol adicional anotado en la temporada el precio del jugador aumenta en promedio en 0.22206 millones de libras esterlinas.
Relación lineal entre los predictores numéricos y la variable respuesta:
Esta condición se puede validar bien mediante diagramas de dispersión entre la variable dependiente y cada uno de los predictores (como se ha hecho en el análisis preliminar) o con diagramas de dispersión entre cada uno de los predictores y los residuos del modelo. Si la relación es lineal, los residuos deben de distribuirse aleatoriamente en torno a 0 con una variabilidad constante a lo largo del eje X. Esta última opción suele ser más indicada ya que permite identificar posibles datos atípicos.
library(ggplot2)
library(gridExtra)
plot1 <- ggplot(data = Base, aes(Goals, modelof$residuals)) +
geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
theme_bw()
plot2 <- ggplot(data = Base, aes(Age, modelof$residuals)) +
geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
theme_bw()
plot3 <- ggplot(data = Base, aes(CR, modelof$residuals)) +
geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
theme_bw()
grid.arrange(plot1, plot2, plot3)
No Se cumple la linealidad para todos los predictores
Distribución normal de los residuos:
qqnorm(modelof$residuals)
qqline(modelof$residuals)
Graficamente observamos que los residuos se acercan a una distribución normal pero con colas pesadas.
Normalidad
library("nortest")
pearson.test(modelof$residuals)
##
## Pearson chi-square normality test
##
## data: modelof$residuals
## P = 18.221, p-value = 0.0327
ad.test(modelof$residuals)
##
## Anderson-Darling normality test
##
## data: modelof$residuals
## A = 2.1015, p-value = 2.163e-05
Si p.value<0.05-> SI se rechaza H0. Por lo tanto, los errores No se distribuyen en forma normal.
Variabilidad constante de los residuos (homocedasticidad):
Al representar los residuos frente a los valores ajustados por el modelo, los primeros se tienen que distribuir de forma aleatoria en torno a cero, manteniendo aproximadamente la misma variabilidad a lo largo del eje X. Si se observa algún patrón específico, por ejemplo forma cónica o mayor dispersión en los extremos, significa que la variabilidad es dependiente del valor ajustado y por lo tanto no hay homocedasticidad.
ggplot(data = Base, aes(modelof$fitted.values, modelof$residuals)) +
geom_point() +
geom_smooth(color = "firebrick", se = FALSE) +
geom_hline(yintercept = 0) +
theme_bw()
library(lmtest)
bptest(modelof)
##
## studentized Breusch-Pagan test
##
## data: modelof
## BP = 4.24, df = 3, p-value = 0.2367
H0: Los residuos tienen varianza constante. H1: Los residuos no tienen varianza constante.
Dado que el p-value = 0.2367> 0.05, no rechazamos H0. No tenemos suficiente evidencia que la heterocedasticidad está presente en el modelo de regresión.
Multicolinealidad:
Matriz de correlación entre predictores.
library(corrplot)
corrplot(cor(dplyr::select(Base, Goals, Age,CR)),
method = "number", tl.col = "black")
Análisis de Inflación de Varianza (VIF):
VIF = 1 / (1-R2)
Cuanto mayor es el FIV de una variable, mayor es la varianza del correspondiente coeficiente de regresión. Uno de los problemas de la presencia de colinealidad es la inestabilidad de las estimaciones de los coeficientes de regresión.
library(car)
vif(modelof)
## Goals Age CR
## 1.218490 1.204069 1.013561
Un valor de 1 significa que el predictor no está correlacionado con otras variables. Cuanto mayor sea el valor, mayor será la correlación de la variable con otras variables. Los valores de más de 4 o 5 a veces se consideran moderados a altos, y los valores de 10 o más se consideran muy altos.
No hay predictores que muestren una correlación lineal ni inflación de varianza, muy alta.
Autocorrelación:
library(car)
dwt(modelof, alternative = "two.sided")
## lag Autocorrelation D-W Statistic p-value
## 1 0.4145829 1.095759 0
## Alternative hypothesis: rho != 0
dwtest(modelof,alternative = "two.sided")
##
## Durbin-Watson test
##
## data: modelof
## DW = 1.0958, p-value = 2.228e-05
## alternative hypothesis: true autocorrelation is not 0
El estadístico Durbin-Watson siempre tendrá un valor entre 0 y 4. Un valor de 2, significa que no se detecta autocorrelación en la muestra. Valores <=2 indica correlación positiva y valores entre 2 y 4 indican autocorrelación negativa. En este caso, los valores son cercanos a 1, por lo que hay evidencia de correlación.
Base$studentized_residual <- rstudent(modelof)
ggplot(data = Base, aes(x = predict(modelof), y = abs(studentized_residual))) +
geom_hline(yintercept = 3, color = "grey", linetype = "dashed") +
geom_point(aes(color = ifelse(abs(studentized_residual) > 3, 'red', 'black'))) +
scale_color_identity() +
labs(title = "Distribución de los residuos studentized",
x = "predicción modelo") +
theme_bw() + theme(plot.title = element_text(hjust = 0.5))
which(abs(Base$studentized_residual) > 3)
## [1] 52
summary(influence.measures(modelof))
## Potentially influential observations of
## lm(formula = GBP..M. ~ Goals + Age + CR, data = Base) :
##
## dfb.1_ dfb.Gols dfb.Age dfb.CR dffit cov.r cook.d hat
## 3 -0.07 -0.07 0.06 0.10 0.13 1.18_* 0.00 0.11
## 19 0.41 -0.25 -0.44 0.15 -0.71_* 0.92 0.12 0.10
## 36 0.23 0.03 -0.17 -0.13 0.34 0.82_* 0.03 0.02
## 51 0.51 0.30 -0.48 -0.16 0.59 0.81_* 0.08 0.05
## 52 0.20 -0.02 -0.09 -0.19 0.47 0.55_* 0.05 0.02
## 66 0.00 0.01 -0.01 0.01 0.02 1.17_* 0.00 0.10
## 77 0.26 0.46 -0.26 -0.19 0.56 0.80_* 0.07 0.05
En la tabla generada se recogen las observaciones que son significativamente influyentes en al menos uno de los predictores (una columna para cada predictor). Las tres últimas columnas son 3 medidas distintas para cuantificar la influencia. A modo de guía se pueden considerar excesivamente influyentes aquellas observaciones para las que:
Leverages (hat): Se consideran observaciones influyentes aquellas cuyos valores hat superen 2.5((p+1)/n)=0.20, siendo p el número de predictores y n el número de observaciones. Distancia Cook (cook.d): Se consideran influyentes valores superiores a 1. La visualización gráfica de las influencias se obtiene del siguiente modo:
influencePlot(modelof)
## StudRes Hat CookD
## 3 0.3564059 0.11035746 0.003986949
## 19 -2.1338433 0.09848278 0.118579704
## 21 -0.9932898 0.10415400 0.028682307
## 37 2.0714314 0.09596013 0.108951922
## 52 3.6169278 0.01679584 0.047936011
## 77 2.4780016 0.04928055 0.074338368
Los análisis muestran varias observaciones influyentes (posición 19,37,52 y 77) que exceden los límites de preocupación para los valores de Leverages o Distancia Cook. Estudios más exhaustivos consistirían en rehacer el modelo sin las observaciones y ver el impacto.
Calculando la precisión
library("prediction")
PrecioPred <- predict(modelof, Base)
actuals_preds <- data.frame(cbind(Base$GBP..M., PrecioPred))
correlation_accuracy <- cor(actuals_preds)
head(actuals_preds)
## V1 PrecioPred
## 1 21.9 24.36161
## 2 22.0 37.00377
## 3 23.3 18.19900
## 4 23.4 35.17233
## 5 23.4 32.96685
## 6 23.9 29.39421
min_max_accuracy <- mean(apply(actuals_preds, 1, min) / apply(actuals_preds, 1, max))
min_max_accuracy
## [1] 0.7407075
mape <- mean(abs((actuals_preds$PrecioPred - actuals_preds$V1))/actuals_preds$V1)
mape
## [1] 0.462212
El modelo lineal múltiple
GBP..M.=80.96019 +0.22206 * Goals -1.90617 * Age -8.20102 * CR
Es capaz de explicar el 16.89% de la variabilidad observada en el precio de venta (R-squared: 0.1689, Adjusted R-squared: 0.1347).
El test F muestra que es no significativo (F-statistic: 4.943).No satisfacen todas las condiciones para este tipo de regresión múltiple.
Las observaciónes (19,37,52 y 77) podría estar influyendo de forma notable en el modelo.
Las variables que explican mejor el precio de un jugador son, Goles, Edad y CR(Clasificación del Club que vende al Jugador).
Concluimos que el modelo de regresion multiple no es el mas adecuado por solo explicar el 16.86% ademas de no cumplir algunos supuestos, recomendamos retitar los datos influyentes y realizar algún metodo de linealización para ver si asi cumplen con los supuestos y aumenta el % de varianza explicada del modelo o aplicar metodos no paramétricos.