Carga de librerías para procesar el dataset.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.5.3
## -- Attaching packages -------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.2.0 v purrr 0.3.2
## v tibble 2.1.1 v dplyr 0.8.1
## v tidyr 0.8.3 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.5.3
## Warning: package 'tibble' was built under R version 3.5.3
## Warning: package 'tidyr' was built under R version 3.5.3
## Warning: package 'readr' was built under R version 3.5.3
## Warning: package 'purrr' was built under R version 3.5.3
## Warning: package 'dplyr' was built under R version 3.5.3
## Warning: package 'stringr' was built under R version 3.5.3
## Warning: package 'forcats' was built under R version 3.5.3
## -- Conflicts ----------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(dplyr)
library(ggplot2)
library(lmtest)
## Warning: package 'lmtest' was built under R version 3.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 3.5.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(corrplot)
## Warning: package 'corrplot' was built under R version 3.5.3
## corrplot 0.84 loaded
library(robustHD)
## Warning: package 'robustHD' was built under R version 3.5.3
## Loading required package: perry
## Warning: package 'perry' was built under R version 3.5.3
## Loading required package: parallel
## Loading required package: robustbase
## Warning: package 'robustbase' was built under R version 3.5.3
library(car)
## Warning: package 'car' was built under R version 3.5.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 3.5.3
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
setwd("D:/My Files(MARIANO-PC)/Native/Disco local/CURSOS/BIG_DATA/FLACSO/Tomas_mod_IV/tp/datos")
datos_futbol_2015<-read_delim("datos_2015.csv",
";", escape_double = FALSE, locale = locale(encoding = "LATIN1"), trim_ws = TRUE)
## Parsed with column specification:
## cols(
## .default = col_double(),
## club = col_character()
## )
## See spec(...) for full column specifications.
str(datos_futbol_2015)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 30 obs. of 49 variables:
## $ club : chr "Quilmes" "Olimpo" "Banfield" "Godoy Cruz" ...
## $ Pts_2012_13 : num 50 0 0 0 0 49 0 43 59 74 ...
## $ Pts_2013_14 : num 45 50 0 0 54 56 57 49 49 56 ...
## $ Pts_2014 : num 12 19 20 20 21 21 24 25 25 25 ...
## $ inversion_abs : num 6.33 2.25 7.55 3.4 10.83 ...
## $ inversion_relativa: num 0.651 0.255 0.591 0.301 1.088 ...
## $ valor : num 13.2 10 16.9 13.1 16.3 ...
## $ libertadores : num 0 0 0 0 0 0 0 0 1 0 ...
## $ sudamericana : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ascenso : num 0 0 0 0 0 0 0 0 0 1 ...
## $ Pos : num 11 18 8 22 3 21 12 29 7 15 ...
## $ Pts : num 45 36 50 32 59 32 44 23 51 40 ...
## $ PJ : num 30 30 30 30 30 30 30 30 30 30 ...
## $ PG : num 13 8 14 8 16 8 12 4 14 11 ...
## $ PE : num 6 12 8 8 11 8 8 11 9 7 ...
## $ PP : num 11 10 8 14 3 14 10 15 7 12 ...
## $ GF : num 38 23 38 32 47 27 41 29 34 37 ...
## $ GC : num 37 26 32 40 26 31 38 51 28 40 ...
## $ Dif : num 1 -3 6 -8 21 -4 3 -22 6 -3 ...
## $ Pos_Fecha_1 : num 19 25 19 14 8 8 19 27 8 27 ...
## $ Pos_Fecha_2 : num 18 25 12 18 4 14 20 30 4 29 ...
## $ Pos_Fecha_3 : num 24 29 12 14 3 18 27 30 2 27 ...
## $ Pos_Fecha_4 : num 23 29 18 8 1 15 25 30 4 25 ...
## $ Pos_Fecha_5 : num 19 29 13 16 1 18 20 30 5 21 ...
## $ Pos_Fecha_6 : num 20 25 9 19 1 18 24 30 11 21 ...
## $ Pos_Fecha_7 : num 22 26 5 18 3 17 25 30 14 21 ...
## $ Pos_Fecha_8 : num 20 27 6 21 4 19 25 28 15 17 ...
## $ Pos_Fecha_9 : num 22 28 7 23 4 18 19 29 16 20 ...
## $ Pos_Fecha_10 : num 23 30 9 24 4 21 18 29 20 11 ...
## $ Pos_Fecha_11 : num 21 28 10 22 5 24 17 26 18 8 ...
## $ Pos_Fecha_12 : num 20 25 9 21 3 24 18 26 17 11 ...
## $ Pos_Fecha_13 : num 23 25 10 19 3 24 15 28 13 9 ...
## $ Pos_Fecha_14 : num 23 26 10 22 5 25 13 28 15 11 ...
## $ Pos_Fecha_15 : num 23 28 12 22 5 27 8 26 10 14 ...
## $ Pos_Fecha_16 : num 23 28 10 18 4 26 8 27 12 15 ...
## $ Pos_Fecha_17 : num 23 26 14 19 6 24 7 28 11 16 ...
## $ Pos_Fecha_18 : num 21 26 13 17 4 22 7 28 12 16 ...
## $ Pos_Fecha_19 : num 18 22 12 19 4 24 8 27 11 17 ...
## $ Pos_Fecha_20 : num 15 22 9 19 6 25 8 27 11 18 ...
## $ Pos_Fecha_21 : num 15 24 9 21 4 22 8 27 11 18 ...
## $ Pos_Fecha_22 : num 15 22 8 23 3 24 9 27 10 17 ...
## $ Pos_Fecha_23 : num 14 23 9 25 3 21 12 27 8 19 ...
## $ Pos_Fecha_24 : num 13 21 7 23 3 19 12 27 10 18 ...
## $ Pos_Fecha_25 : num 13 22 6 25 3 20 12 27 8 17 ...
## $ Pos_Fecha_26 : num 11 20 8 25 3 22 14 28 10 18 ...
## $ Pos_Fecha_27 : num 11 20 9 23 3 19 14 28 8 16 ...
## $ Pos_Fecha_28 : num 11 18 10 21 2 20 12 29 6 16 ...
## $ Pos_Fecha_29 : num 11 17 9 22 3 20 12 29 8 15 ...
## $ Pos_Fecha_30 : num 11 18 8 22 3 21 12 29 7 15 ...
## - attr(*, "spec")=
## .. cols(
## .. club = col_character(),
## .. Pts_2012_13 = col_double(),
## .. Pts_2013_14 = col_double(),
## .. Pts_2014 = col_double(),
## .. inversion_abs = col_double(),
## .. inversion_relativa = col_double(),
## .. valor = col_double(),
## .. libertadores = col_double(),
## .. sudamericana = col_double(),
## .. ascenso = col_double(),
## .. Pos = col_double(),
## .. Pts = col_double(),
## .. PJ = col_double(),
## .. PG = col_double(),
## .. PE = col_double(),
## .. PP = col_double(),
## .. GF = col_double(),
## .. GC = col_double(),
## .. Dif = col_double(),
## .. Pos_Fecha_1 = col_double(),
## .. Pos_Fecha_2 = col_double(),
## .. Pos_Fecha_3 = col_double(),
## .. Pos_Fecha_4 = col_double(),
## .. Pos_Fecha_5 = col_double(),
## .. Pos_Fecha_6 = col_double(),
## .. Pos_Fecha_7 = col_double(),
## .. Pos_Fecha_8 = col_double(),
## .. Pos_Fecha_9 = col_double(),
## .. Pos_Fecha_10 = col_double(),
## .. Pos_Fecha_11 = col_double(),
## .. Pos_Fecha_12 = col_double(),
## .. Pos_Fecha_13 = col_double(),
## .. Pos_Fecha_14 = col_double(),
## .. Pos_Fecha_15 = col_double(),
## .. Pos_Fecha_16 = col_double(),
## .. Pos_Fecha_17 = col_double(),
## .. Pos_Fecha_18 = col_double(),
## .. Pos_Fecha_19 = col_double(),
## .. Pos_Fecha_20 = col_double(),
## .. Pos_Fecha_21 = col_double(),
## .. Pos_Fecha_22 = col_double(),
## .. Pos_Fecha_23 = col_double(),
## .. Pos_Fecha_24 = col_double(),
## .. Pos_Fecha_25 = col_double(),
## .. Pos_Fecha_26 = col_double(),
## .. Pos_Fecha_27 = col_double(),
## .. Pos_Fecha_28 = col_double(),
## .. Pos_Fecha_29 = col_double(),
## .. Pos_Fecha_30 = col_double()
## .. )
View(datos_futbol_2015)
head(datos_futbol_2015)
## # A tibble: 6 x 49
## club Pts_2012_13 Pts_2013_14 Pts_2014 inversion_abs inversion_relat~
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Quil~ 50 45 12 6.33 0.651
## 2 Olim~ 0 50 19 2.25 0.255
## 3 Banf~ 0 0 20 7.55 0.591
## 4 Godo~ 0 0 20 3.4 0.301
## 5 Rosa~ 0 54 21 10.8 1.09
## 6 Defe~ 49 56 21 1.27 0.203
## # ... with 43 more variables: valor <dbl>, libertadores <dbl>,
## # sudamericana <dbl>, ascenso <dbl>, Pos <dbl>, Pts <dbl>, PJ <dbl>,
## # PG <dbl>, PE <dbl>, PP <dbl>, GF <dbl>, GC <dbl>, Dif <dbl>,
## # Pos_Fecha_1 <dbl>, Pos_Fecha_2 <dbl>, Pos_Fecha_3 <dbl>,
## # Pos_Fecha_4 <dbl>, Pos_Fecha_5 <dbl>, Pos_Fecha_6 <dbl>,
## # Pos_Fecha_7 <dbl>, Pos_Fecha_8 <dbl>, Pos_Fecha_9 <dbl>,
## # Pos_Fecha_10 <dbl>, Pos_Fecha_11 <dbl>, Pos_Fecha_12 <dbl>,
## # Pos_Fecha_13 <dbl>, Pos_Fecha_14 <dbl>, Pos_Fecha_15 <dbl>,
## # Pos_Fecha_16 <dbl>, Pos_Fecha_17 <dbl>, Pos_Fecha_18 <dbl>,
## # Pos_Fecha_19 <dbl>, Pos_Fecha_20 <dbl>, Pos_Fecha_21 <dbl>,
## # Pos_Fecha_22 <dbl>, Pos_Fecha_23 <dbl>, Pos_Fecha_24 <dbl>,
## # Pos_Fecha_25 <dbl>, Pos_Fecha_26 <dbl>, Pos_Fecha_27 <dbl>,
## # Pos_Fecha_28 <dbl>, Pos_Fecha_29 <dbl>, Pos_Fecha_30 <dbl>
summary(datos_futbol_2015)
## club Pts_2012_13 Pts_2013_14 Pts_2014
## Length:30 Min. : 0.00 Min. : 0.00 Min. : 0.0
## Class :character 1st Qu.: 0.00 1st Qu.: 0.00 1st Qu.: 0.0
## Mode :character Median : 0.00 Median :46.50 Median :21.0
## Mean :26.00 Mean :30.13 Mean :17.5
## 3rd Qu.:56.25 3rd Qu.:56.00 3rd Qu.:26.0
## Max. :74.00 Max. :61.00 Max. :41.0
## inversion_abs inversion_relativa valor libertadores
## Min. :-2.900 Min. :-0.223610 Min. : 3.380 Min. :0.0
## 1st Qu.: 0.045 1st Qu.: 0.004951 1st Qu.: 7.312 1st Qu.:0.0
## Median : 0.790 Median : 0.122887 Median :13.155 Median :0.0
## Mean : 2.403 Mean : 0.172154 Mean :15.012 Mean :0.2
## 3rd Qu.: 4.075 3rd Qu.: 0.253180 3rd Qu.:17.973 3rd Qu.:0.0
## Max. :11.200 Max. : 1.088256 Max. :43.400 Max. :1.0
## sudamericana ascenso Pos Pts
## Min. :0.0000 Min. :0.0000 Min. : 1.00 Min. :14.00
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.: 8.25 1st Qu.:30.50
## Median :0.0000 Median :0.0000 Median :15.50 Median :40.00
## Mean :0.2333 Mean :0.3333 Mean :15.50 Mean :40.33
## 3rd Qu.:0.0000 3rd Qu.:1.0000 3rd Qu.:22.75 3rd Qu.:49.75
## Max. :1.0000 Max. :1.0000 Max. :30.00 Max. :64.00
## PJ PG PE PP
## Min. :30 Min. : 3.00 Min. : 4.000 Min. : 3.00
## 1st Qu.:30 1st Qu.: 7.00 1st Qu.: 8.000 1st Qu.: 7.00
## Median :30 Median : 9.50 Median : 9.000 Median :10.00
## Mean :30 Mean :10.33 Mean : 9.333 Mean :10.33
## 3rd Qu.:30 3rd Qu.:13.75 3rd Qu.:11.750 3rd Qu.:13.75
## Max. :30 Max. :20.00 Max. :14.000 Max. :22.00
## GF GC Dif Pos_Fecha_1
## Min. :19.00 Min. :20.00 Min. :-34.00 Min. : 1.00
## 1st Qu.:27.00 1st Qu.:26.50 1st Qu.: -8.00 1st Qu.: 8.00
## Median :32.00 Median :32.50 Median : -2.50 Median :15.00
## Mean :33.13 Mean :33.13 Mean : 0.00 Mean :14.17
## 3rd Qu.:38.00 3rd Qu.:37.75 3rd Qu.: 6.75 3rd Qu.:19.00
## Max. :49.00 Max. :55.00 Max. : 24.00 Max. :30.00
## Pos_Fecha_2 Pos_Fecha_3 Pos_Fecha_4 Pos_Fecha_5
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 7.50 1st Qu.: 8.25 1st Qu.: 8.00 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.23 Mean :15.30 Mean :15.40 Mean :15.50
## 3rd Qu.:22.25 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_6 Pos_Fecha_7 Pos_Fecha_8 Pos_Fecha_9
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.47 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_10 Pos_Fecha_11 Pos_Fecha_12 Pos_Fecha_13
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.50 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_14 Pos_Fecha_15 Pos_Fecha_16 Pos_Fecha_17
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.50 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_18 Pos_Fecha_19 Pos_Fecha_20 Pos_Fecha_21
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.43 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_22 Pos_Fecha_23 Pos_Fecha_24 Pos_Fecha_25
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.50 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_26 Pos_Fecha_27 Pos_Fecha_28 Pos_Fecha_29
## Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
## 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25 1st Qu.: 8.25
## Median :15.50 Median :15.50 Median :15.50 Median :15.50
## Mean :15.50 Mean :15.50 Mean :15.50 Mean :15.50
## 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75 3rd Qu.:22.75
## Max. :30.00 Max. :30.00 Max. :30.00 Max. :30.00
## Pos_Fecha_30
## Min. : 1.00
## 1st Qu.: 8.25
## Median :15.50
## Mean :15.50
## 3rd Qu.:22.75
## Max. :30.00
El dataset está constituido por 30 registros y 49 variables.Cada uno de los registros corresponde a un club de fútbol de la primera división de la República Argentina para el año 2015. Las variables corresponden a la cantidad de puntos que obtuvo cada equipo para ese año y para años anteriores (desde 2012 a 2015) y la posición que tenia cada club durante las 30 fechas del torneo 2015. Se destaca que varios clubes que estaban en primera división para el año 2015 no lo estaban en el año anterior, esto se puede determinar a partir del campo ascenso. El dataset también tiene variables sobre el valor del club para el año 2015, la inversión absoluta que realizó y la relativa. Se observan variables de goles a favor, en contra, puntos obtenidos, entre otros, relacionados sobre la performance de cada club durante el 2015, incluyendo si participó en copas internacionales: Copa Libertadores y Sudamericana. Respecto a las variables económicas: la inversión absoluta se refiere a cuanto invirtió en el 2015 cada club, la inversión relativa refiere a la variación respecto al año anterior (2014) y la variable valor nos indica cuánto valía cada equipo al inicio de la temporada. En los datos de las variables se puede observar que el club que obtuvo mas puntos (64) no fue el de mas valor y el que mas invirtió ese año. El club que mas invirtió ese año (11,2 mill de EUR) y que más valor tenía (43, 4 mill de EUR) obtuvo la posición 9. El club con menos valor del mercado para ese año (3.75 mill de EUR) obtuvo la posición 26/30 equipos.El equipo que menos valor tenía obtuvo la sexta posición. Si bien es interesante analizar la relación entre la performance de los equipos y la inversión realizada y su valor, también hay que considerar que existen otra variables que pueden pesar como la participación en copas internacionales: libertadores y sudamericana. Por ejemplo, el equipo que mas invirtió pudo haber tenido una performance baja a nivel local pero a nivel internacional le pudo haber ido muy bien. Respecto a esto, las variables sudamericana y libertadores nos indican que 6 equipos jugaron libertadores y 7 sudamericana para ese año y el equipo que más invirtió y valor tiene jugó las tres competencias: torneo local, libertadores y sudamericana.
Para continuar profundizando el dataset se propone analizar si existe correlación entre algunas de las variables de interés y posteriormente generar la regresión lineal.
# creamos un dataframe con los campos que nos interesan:
datos_select<-select(datos_futbol_2015,Pts_2012_13,Pts_2013_14,Pts_2014,inversion_abs,inversion_relativa,valor,libertadores,sudamericana,ascenso,Pts)
# creamos matrix de correlación:
cor_matrix_select<- cor(datos_select)
view(cor_matrix_select)
round(cor_matrix_select, digits = 2)
## Pts_2012_13 Pts_2013_14 Pts_2014 inversion_abs
## Pts_2012_13 1.00 0.78 0.71 -0.01
## Pts_2013_14 0.78 1.00 0.75 0.18
## Pts_2014 0.71 0.75 1.00 0.23
## inversion_abs -0.01 0.18 0.23 1.00
## inversion_relativa -0.19 0.11 0.09 0.83
## valor 0.30 0.26 0.39 0.57
## libertadores 0.40 0.25 0.35 0.23
## sudamericana 0.25 0.18 0.39 0.07
## ascenso -0.31 -0.48 -0.65 -0.40
## Pts 0.29 0.40 0.57 0.53
## inversion_relativa valor libertadores sudamericana
## Pts_2012_13 -0.19 0.30 0.40 0.25
## Pts_2013_14 0.11 0.26 0.25 0.18
## Pts_2014 0.09 0.39 0.35 0.39
## inversion_abs 0.83 0.57 0.23 0.07
## inversion_relativa 1.00 0.18 -0.05 -0.08
## valor 0.18 1.00 0.64 0.15
## libertadores -0.05 0.64 1.00 0.12
## sudamericana -0.08 0.15 0.12 1.00
## ascenso -0.33 -0.54 -0.18 -0.22
## Pts 0.44 0.62 0.49 0.11
## ascenso Pts
## Pts_2012_13 -0.31 0.29
## Pts_2013_14 -0.48 0.40
## Pts_2014 -0.65 0.57
## inversion_abs -0.40 0.53
## inversion_relativa -0.33 0.44
## valor -0.54 0.62
## libertadores -0.18 0.49
## sudamericana -0.22 0.11
## ascenso 1.00 -0.51
## Pts -0.51 1.00
La matrix permite observar si existe correlacion para cada una de las variables seleccionadas. Si el dato es cercano a -1 es correlación negativa, cercana a 0 no hay correlación y si es positiva, cuando mas cercana a 1 la correlación es mayor. Recordar que la correlación no implica causalidad. Para una mejor visualización de la correlación la graficaremos.
corrplot(cor_matrix_select,method = "circle", shade.col = NA, tl.col = "black", tl.srt = 45, addCoef.col = "black", addcolorlabel= "no", order = "AOE", addshade = "all")
## Warning in text.default(pos.xlabel[, 1], pos.xlabel[, 2], newcolnames, srt
## = tl.srt, : "addcolorlabel" is not a graphical parameter
## Warning in text.default(pos.ylabel[, 1], pos.ylabel[, 2], newrownames, col
## = tl.col, : "addcolorlabel" is not a graphical parameter
## Warning in title(title, ...): "addcolorlabel" is not a graphical parameter
Los que se observa es una correlacion positiva fuerte entre las variables de puntos 2012_13, 2013-14, 2014 y la variable pts. Siendo mas fuerte la correlación entre pts 2014 y pts (que corresponde a 2015). También existe correlación positiva entre la variable Pts y valor del equipo. Lo que indica a mayor cantidad de puntos, mayor valor del equipo. También es alta la correlación entre pts e inversión absoluta.Otra correlación importante es la de valor del equipo y participación en la copa libertadores, coincide con la compra/prestamos de jugadores que realizan los equipo para reforzarse considerando que deben afrontar esa copa y el torneo local.(luego seguir)
Usaremos una reg. lineal para explicar la variable Pts (puntos) a partir de las variables Pts_2012_13, Pts_2013_14, Pts_2014, inversion_abs (inversión absoluta), inversion_relativa (inversión relativa), valor (valor en millones de euros), libertadores (si participó en el 2015 en la Copa Libertadores), sudamericana (si participó en el 2015 en la Copa Sudamericana), ascenso (si ascendió).
Reg_lm=lm(Pts~., data=datos_select)
summary(Reg_lm)
##
## Call:
## lm(formula = Pts ~ ., data = datos_select)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.1568 -3.9097 -0.2494 3.4886 15.7965
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 15.058086 7.459359 2.019 0.0571 .
## Pts_2012_13 -0.084927 0.103988 -0.817 0.4237
## Pts_2013_14 0.008748 0.106711 0.082 0.9355
## Pts_2014 0.575616 0.223596 2.574 0.0181 *
## inversion_abs -2.173272 1.268791 -1.713 0.1022
## inversion_relativa 40.110542 15.874772 2.527 0.0201 *
## valor 0.834816 0.338797 2.464 0.0229 *
## libertadores 3.896544 5.391639 0.723 0.4782
## sudamericana -1.348871 3.915157 -0.345 0.7340
## ascenso 7.400458 5.703893 1.297 0.2092
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.973 on 20 degrees of freedom
## Multiple R-squared: 0.7028, Adjusted R-squared: 0.5691
## F-statistic: 5.256 on 9 and 20 DF, p-value: 0.0009804
Del resultado se observa lo siguiente: el R2 es el porcentaje de variación de la variable de respuesta que explica su relación con las vatriables predictoras, en este caso es del 70%. Por lo general, mientras mayor sea el R2, mejor será el ajuste del modelo a sus datos. Respecto al R2 ajustado, en este caso las variables seleccionadas explican en 56% (0.5691) la variación en los puntos. Hay 3 variables que superan el 95% de confianza en que la relación existe en la realidad y no es producto de una casualidad en los datos: Pts_2014, Valor del equipo, inversion_relativa. Podemos afirmar que las tres variables tienen incidencia en la obtención de puntos del año 2015, por ejemplo: Si un equipo aumenta en una unidad su valor (1 millón de euros) aumentará 0.83 en puntos.
Posteriomente analizamos los residuos de nuestro modelo para ver si existe algún patrón específico.Para visualizarlos graficamente, los comparamos con una linea que indica cero, los residuos cercanos a ese valor corresponden a observaciones a las que el modelo se ajusta bien.
residuos_reg_lm <- residuals(Reg_lm)
datos_select<- datos_select %>% mutate(residuo_reg_lm = residuos_reg_lm)
ggplot(datos_select) +
geom_point(aes(x = Pts, y = residuo_reg_lm)) +
geom_hline(yintercept = 0, col = "violet") +
labs(x = "Pts", y = "Residuos de regresión")
En el gráfico se observa que no existe un patrón, a simple vista se distribuyen aleatoriamente, lo que estaría indicando que nuestro modelo es adecuado (los residuos positivos se cancelan con los negativos, promediando cerca de cero.)
Ploteamos:
par (mfrow=c(2,2))
plot(Reg_lm)
Descripción de los grficos:
1-Residuals vs Fitted. El objetivo aquí es verificar si los residuos presentan patrones. En la gráfica se observa que los mismos se distribuyen aleatoriamente.
2- Normal Q-Q.En este caso los residuos presentan distribución normal.
3-scale-Location. Lo importante en este caso es ver si existee homocedasticidad,la varianza de los residuos debe de ser constante en todo el rango de observaciones. en este caso la varianza es constante, se distribuyen de forma aleatoria manteniendo una misma dispersión y sin ningún patrón específico.
4- residuals vs Leverage.no Se observan casos extremos, los valores se ajustan a la linea de Cook.
Ahora comenzaremos a evaluar distintos modelos sustrayendo variables y ver cuál es el que mejor se ajusta. Utilizaremos el método paso a paso (stepwise), que emplea criterios matemáticos para decidir qué predictores contribuyen significativamente al modelo y en qué orden se introducen. El método paso a paso requiere de algún criterio matemático para determinar si el modelo mejora o empeora con cada incorporación o extracción. Para hacer esto contamos con la función step de R que selecciona un modelo de regresión a partir del criterio de información de Akaike (AIC). AIC toma en consideración tanto la medida en que el modelo se ajusta a las series observadas como el número de parámetros utilizados en el ajuste.
step(Reg_lm)
## Start: AIC=132.4
## Pts ~ Pts_2012_13 + Pts_2013_14 + Pts_2014 + inversion_abs +
## inversion_relativa + valor + libertadores + sudamericana +
## ascenso
##
## Df Sum of Sq RSS AIC
## - Pts_2013_14 1 0.43 1271.8 130.41
## - sudamericana 1 7.55 1279.0 130.58
## - libertadores 1 33.20 1304.6 131.17
## - Pts_2012_13 1 42.40 1313.8 131.38
## <none> 1271.4 132.40
## - ascenso 1 107.01 1378.4 132.82
## - inversion_abs 1 186.51 1457.9 134.51
## - valor 1 385.98 1657.4 138.35
## - inversion_relativa 1 405.84 1677.3 138.71
## - Pts_2014 1 421.30 1692.7 138.99
##
## Step: AIC=130.41
## Pts ~ Pts_2012_13 + Pts_2014 + inversion_abs + inversion_relativa +
## valor + libertadores + sudamericana + ascenso
##
## Df Sum of Sq RSS AIC
## - sudamericana 1 8.26 1280.1 128.60
## - libertadores 1 32.91 1304.8 129.18
## - Pts_2012_13 1 61.06 1332.9 129.82
## <none> 1271.8 130.41
## - ascenso 1 107.47 1379.3 130.84
## - inversion_abs 1 186.18 1458.0 132.51
## - valor 1 387.90 1659.8 136.40
## - inversion_relativa 1 412.75 1684.6 136.84
## - Pts_2014 1 458.42 1730.3 137.65
##
## Step: AIC=128.6
## Pts ~ Pts_2012_13 + Pts_2014 + inversion_abs + inversion_relativa +
## valor + libertadores + ascenso
##
## Df Sum of Sq RSS AIC
## - libertadores 1 33.46 1313.6 127.38
## - Pts_2012_13 1 57.59 1337.7 127.92
## <none> 1280.1 128.60
## - ascenso 1 109.66 1389.8 129.07
## - inversion_abs 1 210.54 1490.6 131.17
## - valor 1 404.33 1684.4 134.84
## - Pts_2014 1 457.72 1737.8 135.78
## - inversion_relativa 1 467.99 1748.1 135.95
##
## Step: AIC=127.38
## Pts ~ Pts_2012_13 + Pts_2014 + inversion_abs + inversion_relativa +
## valor + ascenso
##
## Df Sum of Sq RSS AIC
## - Pts_2012_13 1 49.17 1362.7 126.48
## <none> 1313.6 127.38
## - ascenso 1 186.84 1500.4 129.37
## - inversion_abs 1 248.65 1562.2 130.58
## - inversion_relativa 1 511.20 1824.8 135.24
## - Pts_2014 1 533.75 1847.3 135.61
## - valor 1 806.24 2119.8 139.74
##
## Step: AIC=126.48
## Pts ~ Pts_2014 + inversion_abs + inversion_relativa + valor +
## ascenso
##
## Df Sum of Sq RSS AIC
## <none> 1362.7 126.48
## - ascenso 1 151.63 1514.4 127.65
## - inversion_abs 1 235.60 1598.3 129.27
## - inversion_relativa 1 533.79 1896.5 134.40
## - Pts_2014 1 645.87 2008.6 136.12
## - valor 1 762.31 2125.0 137.81
##
## Call:
## lm(formula = Pts ~ Pts_2014 + inversion_abs + inversion_relativa +
## valor + ascenso, data = datos_select)
##
## Coefficients:
## (Intercept) Pts_2014 inversion_abs
## 13.5176 0.4665 -2.3508
## inversion_relativa valor ascenso
## 43.9452 0.9416 7.8035
Luego realizamos la regresión lineal de las variables seleccionadas:
metodo_step <- lm(Pts ~ Pts_2014 + inversion_abs + inversion_relativa +
valor + ascenso, data = datos_select)
summary(metodo_step)
##
## Call:
## lm(formula = Pts ~ Pts_2014 + inversion_abs + inversion_relativa +
## valor + ascenso, data = datos_select)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.303 -3.851 -0.657 3.961 14.887
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.5176 6.0767 2.224 0.03578 *
## Pts_2014 0.4665 0.1383 3.373 0.00252 **
## inversion_abs -2.3508 1.1540 -2.037 0.05282 .
## inversion_relativa 43.9452 14.3326 3.066 0.00530 **
## valor 0.9416 0.2570 3.664 0.00123 **
## ascenso 7.8035 4.7753 1.634 0.11528
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.535 on 24 degrees of freedom
## Multiple R-squared: 0.6815, Adjusted R-squared: 0.6152
## F-statistic: 10.27 on 5 and 24 DF, p-value: 2.345e-05
Tal como hicimos con el anterior modelo, analizamos los residuos de este último para ver si existe algún patrón específico.Para visualizarlos graficamente los comparamos con una linea que indica cero, los residuos cercanos a ese valor corresponden a observaciones a las que el modelo se ajusta bien.
residuos_Metodo_step <- residuals(metodo_step)
datos_select <- datos_select %>% mutate(residuos_Metodo_step = residuos_Metodo_step)
ggplot(datos_select) +
geom_point(aes(x = Pts, y = residuos_Metodo_step)) +
geom_hline(yintercept = 0, col = "violet") +
labs(x = "Pts", y = "Residuos regresión")
El gráfico de los residuos nos varía respecto al anterior, presenta a simple vista una distribución aleatoria.
Ploteamos y describimos resultados:
par(mfrow=c(2,2))
plot(metodo_step)
Esta nuevo modelo mejoró la performance respecto a la primer regresión, las variables independientes del modelo son: inversion reletaiva, el valor del equipo + la inversion absoluta, los puntos del año 2014 y la variable ascenso. El R2 ajustado aumentó aproximadamente a 61% (vs 56% del anterior).
Nuevamente son las mismas 3 variables independientes que superan el 95% de confianza, eso nos estaría indicando que existe relación real y no es producto de una casualidad en los datos: Pts_2014, Valor del equipo, inversion_relativa. Podemos afirmar que las tres variables tienen incidencia en la obtención de puntos del año 2015, por ejemplo: Si un equipo aumenta en una unidad su valor (1 millón de euros) aumentará 0.9 en puntos (vs 0.83 del anterior modelo). existen dos observaciones que podrían estar teniendo gran influencia ya que se alejan de la nube de puntos y podría estar forzando el modelo hacia un ajuste erróneo. Podría ser un outlier? Es la observación 15 y 19.
El modo adecuado a proceder cuando se sospecha de algún posible valor atípico o influyente es calcular el modelo de regresión incluyendo y excluyendo dicho valor.
En este caso también podemos medir la distancia de cook y detectar si alguna observación es influente. Si alguna observación supera el valor 1, estaríamos detectando un valor influyente; y una observación con una distancia de Cook superior a tres veces la distancia media de Cook podría ser un valor atípico.
# Primero medimos la distancia de Cook para ver si hay algun valor atípico.
outlierTest(metodo_step)
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
## rstudent unadjusted p-value Bonferroni p
## 15 2.344987 0.028025 0.84076
No existen valores que superen en tres veces la distancia media de cook
summary(influence.measures(metodo_step))
## Potentially influential observations of
## lm(formula = Pts ~ Pts_2014 + inversion_abs + inversion_relativa + valor + ascenso, data = datos_select) :
##
## dfb.1_ dfb.P_20 dfb.invrsn_b dfb.invrsn_r dfb.valr dfb.ascn dffit
## 5 0.15 -0.07 0.17 -0.31 -0.11 -0.10 -0.44
## 14 -0.07 0.02 -0.09 0.08 0.12 0.04 0.13
## 19 0.37 -0.52 -1.09_* 0.88 -0.06 -0.42 -2.14_*
## 22 0.11 -0.17 0.09 -0.09 0.00 -0.10 0.22
## 29 -0.19 0.35 0.17 -0.05 -0.16 0.25 -0.51
## cov.r cook.d hat
## 5 2.76_* 0.03 0.55
## 14 2.81_* 0.00 0.54
## 19 0.92 0.67 0.51
## 22 2.08_* 0.01 0.39
## 29 1.87_* 0.04 0.38
Los valores están cercanos a cero por lo que no existen valores superiores a 1, consecuentemente no hay alguno que tenga gran influecia y pueda impactar en los datos.
En este caso aplicaremos una estandarización de las variables.Es importante mencionar que la magnitud de cada coeficiente parcial de regresión depende de las unidades en las que se mida la variable predictora a la que corresponde, por lo que su magnitud no está asociada con la importancia de cada predictor. Para poder determinar qué impacto tienen en el modelo cada una de las variables, se emplean los coeficientes parciales estandarizados, que se obtienen al estandarizar (sustraer la media y dividir entre la desviación estándar) las variables predictoras. Realizaremos una transformación de las variables del modelo anterior,estandarizandolas.
datos_select<- datos_select%>%
mutate(Pts_std = standardize(Pts),
inversion_abs_std=standardize(inversion_abs),
inversion_relativa_std=standardize(inversion_relativa),
valor_std=standardize(valor),
ascenso_std=standardize(ascenso),
Pts_2014_std=standardize(Pts_2014))
Metodo_std <- lm(Pts_std ~ Pts_2014_std + inversion_abs_std + inversion_relativa_std +
valor_std + ascenso_std, data = datos_select)
summary(Metodo_std)
##
## Call:
## lm(formula = Pts_std ~ Pts_2014_std + inversion_abs_std + inversion_relativa_std +
## valor_std + ascenso_std, data = datos_select)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.01291 -0.31706 -0.05409 0.32610 1.22562
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.982e-16 1.133e-01 0.000 1.00000
## Pts_2014_std 5.308e-01 1.574e-01 3.373 0.00252 **
## inversion_abs_std -7.189e-01 3.529e-01 -2.037 0.05282 .
## inversion_relativa_std 9.443e-01 3.080e-01 3.066 0.00530 **
## valor_std 8.174e-01 2.231e-01 3.664 0.00123 **
## ascenso_std 3.080e-01 1.885e-01 1.634 0.11528
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6204 on 24 degrees of freedom
## Multiple R-squared: 0.6815, Adjusted R-squared: 0.6152
## F-statistic: 10.27 on 5 and 24 DF, p-value: 2.345e-05
Los datos reflejados no modifican los resultados del anterior modelo, el r2 ajustado se mantiene en el 61%. Incluso las variables mas significativas son las mismas que el modelo anterior:Inversión relativa, Valor del equipo y puntos obtenidos en el año 2014, la ventaja que reviste este modelo es que las variables ya están estandarizadas.Este modelo hasta el momento es el mejor.
Construiremos el intervalo de confianza para cada uno de los parámetros y luego graficamos.
Reg_lm <- function(X,Y){
boot <- sample.int(nrow(datos_select),nrow(datos_select),replace=T)
boot_fit = lm(Pts ~ Pts_2014 + inversion_abs + inversion_relativa +
valor + ascenso,data=datos_select[boot,])
return(coef(boot_fit))
}
boot <- t(replicate(10000,Reg_lm(X,Y)))
view(boot)
head(boot)
## (Intercept) Pts_2014 inversion_abs inversion_relativa valor
## [1,] 28.386021 0.1613215 1.923124 2.991086 0.0294765
## [2,] 4.311962 0.6308591 -1.964876 43.896315 1.1643605
## [3,] 11.911851 0.4255273 -4.083569 62.238272 1.3063353
## [4,] 10.524077 0.3267018 -3.289437 57.471176 1.1719668
## [5,] 7.317648 0.4407933 -1.873576 45.496976 1.1652900
## [6,] 10.181236 0.6335478 -1.329044 34.428734 0.9458360
## ascenso
## [1,] 1.841224
## [2,] 13.037849
## [3,] 6.804058
## [4,] 9.075437
## [5,] 12.044834
## [6,] 12.914997
# visualizamos a través de histrogramas
par(mfrow=c(2,2))
hist(boot[,1])
hist(boot[,2])
hist(boot[,3])
hist(boot[,4])
hist(boot[,5])
quantile(boot[,1],p=c(.025,.25,.5,.75,.975))
## 2.5% 25% 50% 75% 97.5%
## 1.327458 9.044745 12.960024 17.332304 29.437206
quantile(boot[,2],p=c(.025,.25,.5,.75,.975))
## 2.5% 25% 50% 75% 97.5%
## 0.2010336 0.3861168 0.4720149 0.5568644 0.7479777
quantile(boot[,3],p=c(.025,.25,.5,.75,.975))
## 2.5% 25% 50% 75% 97.5%
## -4.364700 -2.937792 -2.135196 -1.149361 1.589096
quantile(boot[,4],p=c(.025,.25,.5,.75,.975))
## 2.5% 25% 50% 75% 97.5%
## 0.7250927 30.9392371 41.5133389 51.5463414 73.0742993
quantile(boot[,5],p=c(.025,.25,.5,.75,.975))
## 2.5% 25% 50% 75% 97.5%
## 0.1038367 0.7756607 0.9358458 1.0807989 1.4429888
A partir de los intervalos de confianza construidos se puede afirmar que los parametros son estadisticamente significativos con un 97,5% de certeza.