\(y = \beta0 + \beta1x1 + \epsilon1\)
\(y = \beta0 + \beta1xi^2 + \beta2xi^3 + ... + \beta dxdi^n + \epsilon i\)
library(readr)
library(dplyr)
library(ggplot2)
library(caret)
datos_fifa <- read.csv("C:/Users/cinth/Documents/ITD/Analisis inteligente de datos/Datos/data.csv", encoding = "UTF-8")
datos_esp <- select(datos_fifa, Overall, Value)
print('Variable independiente x: Overall, significa como se valora un jugador')
[1] "Variable independiente x: Overall, significa como se valora un jugador"
print('Variable dependiente y: es el valor económico de un jugador')
[1] "Variable dependiente y: es el valor económico de un jugador"
mk_to_pesos <- function(m_k) {
options(scipen=999)
pesos <- substr(m_k,2,nchar(m_k)-1)
pesos <- as.numeric(pesos)
pesos
}
datos_esp <- datos_esp %>%
mutate(datos_esp, Valor = ifelse(substr(Value, nchar(Value), nchar(Value)) == 'M', mk_to_pesos(Value)*1000000, mk_to_pesos(Value)*100)) %>%
filter(Valor > 0)
4.1 Visualizar la dispersión de los datos:
ggplot(datos_esp, aes(x = Overall, y = Valor)) +
geom_point(color = "turquoise1")
set.seed(2020)
entrenamiento <- createDataPartition(y = datos_esp$Valor, p = 0.7, list = FALSE, times = 1)
datos_entrenamiento <- datos_esp[entrenamiento, ]
datos_validacion <- datos_esp[-entrenamiento, ]
head(datos_entrenamiento,10)
Overall Value Valor
1 94 \200110.5M 110500000
2 94 \20077M 77000000
3 92 \200118.5M 118500000
5 91 \200102M 102000000
6 91 \20093M 93000000
7 91 \20067M 67000000
8 91 \20080M 80000000
11 90 \20077M 77000000
12 90 \20076.5M 76500000
13 90 \20044M 44000000
head(datos_validacion,10)
Overall Value Valor
4 91 \20072M 72000000
9 91 \20051M 51000000
10 90 \20068M 68000000
16 89 \20089M 89000000
22 89 \20060M 60000000
23 89 \20038M 38000000
25 89 \20027M 27000000
29 88 \20069.5M 69500000
30 88 \20062M 62000000
31 88 \20073.5M 73500000
modelo_2 <- lm(formula = Valor ~ poly(Overall,2), data = datos_entrenamiento)
summary(modelo_2)
Call:
lm(formula = Valor ~ poly(Overall, 2), data = datos_entrenamiento)
Residuals:
Min 1Q Median 3Q Max
-30700475 -767818 394682 1187505 72146785
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2201307 24693 89.15 <0.0000000000000002 ***
poly(Overall, 2)1 405221235 2768412 146.37 <0.0000000000000002 ***
poly(Overall, 2)2 396524528 2768412 143.23 <0.0000000000000002 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2768000 on 12566 degrees of freedom
Multiple R-squared: 0.7695, Adjusted R-squared: 0.7694
F-statistic: 2.097e+04 on 2 and 12566 DF, p-value: < 0.00000000000000022
modelo_4 <- lm(formula = Valor ~ poly(Overall,4), data = datos_entrenamiento)
summary(modelo_4)
Call:
lm(formula = Valor ~ poly(Overall, 4), data = datos_entrenamiento)
Residuals:
Min 1Q Median 3Q Max
-48625933 -284105 31302 119222 32333305
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2201307 16319 134.89 <0.0000000000000002 ***
poly(Overall, 4)1 405221235 1829560 221.49 <0.0000000000000002 ***
poly(Overall, 4)2 396524528 1829560 216.73 <0.0000000000000002 ***
poly(Overall, 4)3 223114054 1829560 121.95 <0.0000000000000002 ***
poly(Overall, 4)4 66872586 1829560 36.55 <0.0000000000000002 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1830000 on 12564 degrees of freedom
Multiple R-squared: 0.8993, Adjusted R-squared: 0.8993
F-statistic: 2.806e+04 on 4 and 12564 DF, p-value: < 0.00000000000000022
ggplot() +
geom_point(data = datos_esp, aes(x = Overall, y = Valor)) + geom_line(aes( x = datos_esp$Overall, y = predict(modelo_2, datos_esp)), color = "turquoise1")
ggplot() +
geom_point(data = datos_esp, aes(x = Overall, y = Valor)) + geom_line(aes( x = datos_esp$Overall, y = predict(modelo_4, datos_esp)), color = "turquoise1")
predicciones_2 <- predict(modelo_2, newdata = datos_validacion)
8.1 - Agregar información del modelo a dataframe:
datos_validacion <- mutate(datos_validacion, prediccion_2 = predicciones_2)
head(datos_validacion, 10)
Overall Value Valor prediccion_2
1 91 \20072M 72000000 43287726
2 91 \20051M 51000000 43287726
3 90 \20068M 68000000 40323773
4 89 \20089M 89000000 37461356
5 89 \20060M 60000000 37461356
6 89 \20038M 38000000 37461356
7 89 \20027M 27000000 37461356
8 88 \20069.5M 69500000 34700475
9 88 \20062M 62000000 34700475
10 88 \20073.5M 73500000 34700475
tail(datos_validacion, 10)
Overall Value Valor prediccion_2
5377 48 \20020K 2000 7524400
5378 48 \20060K 6000 7524400
5379 48 \20040K 4000 7524400
5380 47 \20040K 4000 8926478
5381 47 \20050K 5000 8926478
5382 47 \20060K 6000 8926478
5383 47 \20060K 6000 8926478
5384 47 \20070K 7000 8926478
5385 47 \20060K 6000 8926478
5386 47 \20060K 6000 8926478
predicciones_4 <- predict(modelo_4, newdata = datos_validacion)
8.2 - Agregar información del modelo a dataframe:
datos_validacion <- mutate(datos_validacion, prediccion_4 = predicciones_4)
head(datos_validacion, 10)
Overall Value Valor prediccion_2 prediccion_4
1 91 \20072M 72000000 43287726 76593570
2 91 \20051M 51000000 43287726 76593570
3 90 \20068M 68000000 40323773 67844793
4 89 \20089M 89000000 37461356 59871400
5 89 \20060M 60000000 37461356 59871400
6 89 \20038M 38000000 37461356 59871400
7 89 \20027M 27000000 37461356 59871400
8 88 \20069.5M 69500000 34700475 52625933
9 88 \20062M 62000000 34700475 52625933
10 88 \20073.5M 73500000 34700475 52625933
tail(datos_validacion, 10)
Overall Value Valor prediccion_2 prediccion_4
5377 48 \20020K 2000 7524400 548149.2
5378 48 \20060K 6000 7524400 548149.2
5379 48 \20040K 4000 7524400 548149.2
5380 47 \20040K 4000 8926478 852512.9
5381 47 \20050K 5000 8926478 852512.9
5382 47 \20060K 6000 8926478 852512.9
5383 47 \20060K 6000 8926478 852512.9
5384 47 \20070K 7000 8926478 852512.9
5385 47 \20060K 6000 8926478 852512.9
5386 47 \20060K 6000 8926478 852512.9
Las variables que se tomaron de este conjunto de datos para este análisis fueron Overall y Value, donde se asigno a Overall como la variable independiente y Value la dependiente (b0 y b1), esto quiere decir que se analizará si el valor económico de un jugador esta dado por su overall. Al aplicar el modelo de regresión polinomial identificamos que en el de segunda potencia su R-squared es de 0.7695 y su Adjusted R-squared de 0.7694, mientas que para el cuarta ponencia sus valores son de 0.8993 y 0.8993 respectivamente. Si ordenamos nuestras variables en la formula b0 corresponde a Value y b1 al Overall, ya que como se definió al principio estamos buscando ver si overall nos define el valor económico del jugador. Este modelo predice mejor evaluándolo a la cuarta potencia, ya que sus valores resultantes están más cerca de los valores presentes en el dataset, comparando este modelo con el caso anterior correspondiente a regresión lineal simple, podemos observar que ahora overall nos ayuda a determinar el valor económico del jugador, aunque no sea precisamente la mejor variable para determinar dicho valor.