Determinar predicciones de datos bajo el modelo de regresión lineal simple.
De un conjunto de datos con dos variables (bivariable) en donde una de ellas es \(X\) variable independiente y otra de ellas \(Y\) variable dependiente, predecir el valor de Y conforme la historia de X.
La utilidad principal de los análisis correlacionales es saber cómo se puede comportar un concepto o una variable al conocer el comportamiento de otras variables vinculadas, por ejemplo: a mayor estudio mejor rendimiento; a mayor cantidad de sol mayor temperatura de ambiente; a mayor frecuencia de actividad social mayor porcentaje de contagios, entre muchos otros.
La importancia de la correlación es conocer el grado de relación entre variables y ayuda a las técnicas de predicción, es decir, intentar predecir el valor aproximado que tendrá un grupo de individuos o casos en una variable, a partir del valor que poseen en las variables relacionadas.
La correlación puede ser positiva o negativa de entre \(-1\) a \(1\) y significa que el coeficiente r de Pearson puede variar de −1.00 a +1.00, donde:
−1.00 = correlación negativa perfecta. (“A mayor X, menor Y”, de manera proporcional. Es decir, cada vez que X aumenta una unidad, Y disminuye siempre una cantidad constante). Esto también se aplica “a menor X, mayor Y”.
El signo indica la dirección de la correlación (positiva o negativa); y el valor numérico, la magnitud de la correlación.
Por otra parte, menciona que el análisis de correlación intenta medir la intensidad de tales relaciones entre dos variables por medio de un solo número denominado coeficiente de correlación.
Para determinar el coeficiente de correlación de Pearson de una muestra se utiliza la siguiente fórmula:
\[r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})\cdot(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^{2}\cdot\sum_{i=1}^{n}(y_i - \bar{y})^{2}}}\]
Siendo \(r\) el valor del coeficiente de correlación. La correlación de Pearson funciona bien con variables cuantitativas que tienen una distribución normal.
La idea básica del análisis de correlación es identificar la asociación entre dos variables; por lo general, se puede describir la relación graficando o elaborando un diagrama de dispersión entre \(x\) y \(y\).
La regresión lineal simple implica aplicar una ecuación matemática de mínimos cuadrados que permite pronosticar o predecir el valor de una variable con base en el valor de otra; este procedimiento se llama análisis de regresión.
El análisis de regresión es un método para examinar una relación lineal entre dos variables; se utiliza el concepto de correlación \(r\), sin embargo, la regresión proporciona mucho más información, además de permitir estimaciones o predicciones de la relación lineal con la ecuación de mínimos cuadrados.
\[Y = a + bx\]
En donde:
\[ b = r \cdot(\frac{ s_{y}}{s_x}) = r \cdot \frac{\sqrt{ \frac{\sum_{i=1}^n(y_i- \bar{y})^2}{n-1}}} {\sqrt{ \frac{\sum_{i=1}^n(x_i- \bar{x})^2}{n-1}}} \]
En donde:
\(r\) es el coeficiente de correlación.
\(S_y\) es la desviación estándar de \(y\). \(\text {es el denominador}\)
\(S_x\) es la desviación estándar de la variable \(x\). \(\text{es el numerador}\)
Y para determinar a:
\[a = \bar{y} - b \cdot\bar{x}\]
Un valor que es importante destacar en la regresión lineal, es el coeficiente de determinación también representado por \(r^{2}\) que se puede sacar elevando al cuadrado el coeficiente de correlación previamente determinado.
Cuando el coeficiente \(r\) de Pearson se eleva al cuadrado \(r^{2}\), se obtiene el coeficiente de determinación y el resultado indica la variabilidad de factores comunes. Esto es, el porcentaje de la variación de una variable debido a la variación de la otra variable y viceversa (o cuánto explica o determina una variable la variación de la otra).
El coeficiente de determinación es la proporción y la explicación de la variación total de la variable dependiente \(y\) con respecto a la variable independiente \(x\).
library(dplyr)
library(mosaic)
library(readr)
library(ggplot2) # Para gráficos
library(knitr) # Para formateo de datos
library(DT)
library(cowplot)
library("visualize")
Datos de llamadas que hacen vendedores y las ventas que realizan.
vendedores <- paste("V",1:15, sep="")
llamadas <- c(96, 40, 104, 128, 164, 76, 72, 80 , 36, 84, 180, 132, 120, 44, 84)
ventas <- c(41, 41, 51, 60, 61, 29, 39, 50, 28, 43, 70, 56, 45, 31, 30)
datos <- data.frame(vendedores, llamadas, ventas)
datos
## vendedores llamadas ventas
## 1 V1 96 41
## 2 V2 40 41
## 3 V3 104 51
## 4 V4 128 60
## 5 V5 164 61
## 6 V6 76 29
## 7 V7 72 39
## 8 V8 80 50
## 9 V9 36 28
## 10 V10 84 43
## 11 V11 180 70
## 12 V12 132 56
## 13 V13 120 45
## 14 V14 44 31
## 15 V15 84 30
r <- cor(datos$llamadas, datos$ventas)
r
## [1] 0.8646318
ggplot(data = datos, aes(x = llamadas, y = ventas)) +
geom_point(colour = 'blue')
modelo <- lm(data = datos, formula = ventas~llamadas)
modelo
##
## Call:
## lm(formula = ventas ~ llamadas, data = datos)
##
## Coefficients:
## (Intercept) llamadas
## 19.9800 0.2606
summary(modelo)
##
## Call:
## lm(formula = ventas ~ llamadas, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.873 -2.861 0.255 3.511 10.595
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 19.9800 4.3897 4.552 0.000544 ***
## llamadas 0.2606 0.0420 6.205 3.19e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.72 on 13 degrees of freedom
## Multiple R-squared: 0.7476, Adjusted R-squared: 0.7282
## F-statistic: 38.5 on 1 and 13 DF, p-value: 3.193e-05
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación: ", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación: 0.747588134135855"
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## 19.98
## llamadas
## 0.260625
mean(datos$llamadas)
## [1] 96
mean(datos$ventas)
## [1] 45
ggplot() +
geom_point(data = datos, aes(x = llamadas, y = ventas), colour='blue') +
geom_point(aes(x= mean(datos$llamadas), y = mean(datos$ventas)), col = 'green') +
geom_line(aes( x = datos$llamadas, y = predict(modelo, datos)), color = "red") +
xlab("Llamadas") +
ylab("Ventas") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
x <- c(100, 130, 160)
prediccion <- predict(object = modelo, newdata = data.frame(llamadas = x))
prediccion
## 1 2 3
## 46.04250 53.86125 61.68000
# Comprobar
y = a + b * x
y
## [1] 46.04250 53.86125 61.68000
De un conjunto de datos para una empresa que invierte dinero en comerciales se tienen un historial de ventas de doce semanas.
semanas <- c(1:12)
comerciales <- c(2,5,1,3,4,1,5,3,4,2,3,2)
ventas <- c(50,57,41,54,54,38,63,48,59,46, 45, 48 )
datos <- data.frame(semanas,comerciales,ventas)
kable(datos, caption = "Ventas en función de inversión en comerciales")
semanas | comerciales | ventas |
---|---|---|
1 | 2 | 50 |
2 | 5 | 57 |
3 | 1 | 41 |
4 | 3 | 54 |
5 | 4 | 54 |
6 | 1 | 38 |
7 | 5 | 63 |
8 | 3 | 48 |
9 | 4 | 59 |
10 | 2 | 46 |
11 | 3 | 45 |
12 | 2 | 48 |
r <- cor(datos$comerciales, datos$ventas)
r
## [1] 0.9006177
ggplot(data = datos, aes(x = comerciales, y = ventas)) +
geom_point(colour = 'blue')
modelo <- lm(data = datos, formula = ventas~comerciales)
modelo
##
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
##
## Coefficients:
## (Intercept) comerciales
## 36.131 4.841
summary(modelo)
##
## Call:
## lm(formula = ventas ~ comerciales, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.6534 -2.7331 0.1076 2.8357 4.1873
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 36.1315 2.3650 15.278 2.93e-08 ***
## comerciales 4.8406 0.7387 6.553 6.45e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.378 on 10 degrees of freedom
## Multiple R-squared: 0.8111, Adjusted R-squared: 0.7922
## F-statistic: 42.94 on 1 and 10 DF, p-value: 6.449e-05
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación: ", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación: 0.811112191696598"
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## 36.13147
## comerciales
## 4.840637
mean(datos$comerciales)
## [1] 2.916667
mean(datos$ventas)
## [1] 50.25
ggplot() +
geom_point(data = datos, aes(x = comerciales, y = ventas), colour='blue') +
geom_point(aes(x= mean(datos$comerciales), y = mean(datos$ventas)), col = 'green') +
geom_line(aes( x = datos$comerciales, y = predict(modelo, datos)), color = "red") +
xlab("Comerciales") +
ylab("Ventas") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
x <- c(4, 3.5, 2, 0,1)
prediccion <- predict(object = modelo, newdata = data.frame(comerciales = x))
prediccion
## 1 2 3 4 5
## 55.49402 53.07371 45.81275 36.13147 40.97211
# Comprobar
y = a + b * x
y
## [1] 55.49402 53.07371 45.81275 36.13147 40.97211
Uno de los problemas más desafiantes que se enfrentan en el área del control de la contaminación del agua lo representa la industria de la peletería (dedicada a la elaboración de indumentaria, cuero y piel animal).
Los desechos de ésta tienen una complejidad química. Se caracterizan por valores elevados de demanda de oxígeno bioquímico, sólidos volátiles y otras medidas de la contaminación.
Tal vez si existen contaminantes sólidos se requiera mayor oxígeno bioquímico.
seq <- c(1:33)
solido <- c(3,7,11,15,18,27,29,30,30,31,31,32,33,33,34,36,36,36,37,38,39,39,39,40,41,42,42,43,44,45,46,47,50)
oxigeno <- c(5,11,21,16,16,28,27,25,35,30,40,32,34,32,34,37,38,34,36,38,37,36,45,39,41,40,44,37,44,46,46,49,51 )
datos <- data.frame(seq,solido,oxigeno)
kable(datos, caption = "Contaminante oxígeno en función de sólidos contaminantes")
seq | solido | oxigeno |
---|---|---|
1 | 3 | 5 |
2 | 7 | 11 |
3 | 11 | 21 |
4 | 15 | 16 |
5 | 18 | 16 |
6 | 27 | 28 |
7 | 29 | 27 |
8 | 30 | 25 |
9 | 30 | 35 |
10 | 31 | 30 |
11 | 31 | 40 |
12 | 32 | 32 |
13 | 33 | 34 |
14 | 33 | 32 |
15 | 34 | 34 |
16 | 36 | 37 |
17 | 36 | 38 |
18 | 36 | 34 |
19 | 37 | 36 |
20 | 38 | 38 |
21 | 39 | 37 |
22 | 39 | 36 |
23 | 39 | 45 |
24 | 40 | 39 |
25 | 41 | 41 |
26 | 42 | 40 |
27 | 42 | 44 |
28 | 43 | 37 |
29 | 44 | 44 |
30 | 45 | 46 |
31 | 46 | 46 |
32 | 47 | 49 |
33 | 50 | 51 |
r <- cor(datos$solido, datos$oxigeno)
r
## [1] 0.9554794
ggplot(data = datos, aes(x = solido, y = oxigeno)) +
geom_point(colour = 'blue')
modelo <- lm(data = datos, formula = oxigeno~solido)
modelo
##
## Call:
## lm(formula = oxigeno ~ solido, data = datos)
##
## Coefficients:
## (Intercept) solido
## 3.8296 0.9036
summary(modelo)
##
## Call:
## lm(formula = oxigeno ~ solido, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.939 -1.783 -0.228 1.506 8.157
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.82963 1.76845 2.166 0.0382 *
## solido 0.90364 0.05012 18.030 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.23 on 31 degrees of freedom
## Multiple R-squared: 0.9129, Adjusted R-squared: 0.9101
## F-statistic: 325.1 on 1 and 31 DF, p-value: < 2.2e-16
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación :", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.912940801014387"
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## 3.829633
## solido
## 0.9036432
mean(datos$solido)
## [1] 33.45455
mean(datos$oxigeno)
## [1] 34.06061
ggplot() +
geom_point(data = datos, aes(x = solido, y = oxigeno), colour='blue') +
geom_point(aes(x= mean(datos$solido), y = mean(datos$oxigeno)), col = 'green') +
geom_line(aes( x = datos$solido, y = predict(modelo, datos)), color = "red") +
xlab("Reducción de sólido") +
ylab("% Oxígeno") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
x <- c(15,20,35,40,50)
prediccion <- predict(object = modelo, newdata = data.frame(solido = x))
prediccion
## 1 2 3 4 5
## 17.38428 21.90250 35.45715 39.97536 49.01179
# Comprobar
y = a + b * x
y
## [1] 17.38428 21.90250 35.45715 39.97536 49.01179
Los datos que se obtuvieron en las medidas de los sólidos contaminantes y la demanda de oxígeno bioquímico con la relación de las variables de sólido y oxígeno. Se da a conocer lo siguiente:
El valor de la correlación que se obtiene entre las variables sólido y oxígeno es de 0.7173011.
El coeficiente de determinación r2 con valor de 0.9129 significa que el valor de solido representa el 91.29 % del oxígeno.
La media de la variable del sólido es de 33.45455, el 33%.
La media de la variable del oxígeno es de 34.06061, el 34%.
Mediciones del cuerpo humano en donde se buscar identificar el coeficiente de correlación \(r\), el coeficiente de determinación \(r^2\) y el modelo de regresión lineal para predecir peso en relación a la estatura de una persona.
datos <- read.table("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/datos/body.dat.txt", quote="\"", comment.char="")
datos <- as.data.frame(datos)
Son 507 observaciones y 25 variables. Se identifican todas las variables de datos. Las variables de interés son las variables numéricas (columnas 23 y 24) y la columna 25 de género solo para ubicar género Masculino (1) o Femenino (2).
str(datos)
## 'data.frame': 507 obs. of 25 variables:
## $ V1 : num 42.9 43.7 40.1 44.3 42.5 43.3 43.5 44.4 43.5 42 ...
## $ V2 : num 26 28.5 28.2 29.9 29.9 27 30 29.8 26.5 28 ...
## $ V3 : num 31.5 33.5 33.3 34 34 31.5 34 33.2 32.1 34 ...
## $ V4 : num 17.7 16.9 20.9 18.4 21.5 19.6 21.9 21.8 15.5 22.5 ...
## $ V5 : num 28 30.8 31.7 28.2 29.4 31.3 31.7 28.8 27.5 28 ...
## $ V6 : num 13.1 14 13.9 13.9 15.2 14 16.1 15.1 14.1 15.6 ...
## $ V7 : num 10.4 11.8 10.9 11.2 11.6 11.5 12.5 11.9 11.2 12 ...
## $ V8 : num 18.8 20.6 19.7 20.9 20.7 18.8 20.8 21 18.9 21.1 ...
## $ V9 : num 14.1 15.1 14.1 15 14.9 13.9 15.6 14.6 13.2 15 ...
## $ V10: num 106 110 115 104 108 ...
## $ V11: num 89.5 97 97.5 97 97.5 ...
## $ V12: num 71.5 79 83.2 77.8 80 82.5 82 76.8 68.5 77.5 ...
## $ V13: num 74.5 86.5 82.9 78.8 82.5 80.1 84 80.5 69 81.5 ...
## $ V14: num 93.5 94.8 95 94 98.5 95.3 101 98 89.5 99.8 ...
## $ V15: num 51.5 51.5 57.3 53 55.4 57.5 60.9 56 50 59.8 ...
## $ V16: num 32.5 34.4 33.4 31 32 33 42.4 34.1 33 36.5 ...
## $ V17: num 26 28 28.8 26.2 28.4 28 32.3 28 26 29.2 ...
## $ V18: num 34.5 36.5 37 37 37.7 36.6 40.1 39.2 35.5 38.3 ...
## $ V19: num 36.5 37.5 37.3 34.8 38.6 36.1 40.3 36.7 35 38.6 ...
## $ V20: num 23.5 24.5 21.9 23 24.4 23.5 23.6 22.5 22 22.2 ...
## $ V21: num 16.5 17 16.9 16.6 18 16.9 18.8 18 16.5 16.9 ...
## $ V22: num 21 23 28 23 22 21 26 27 23 21 ...
## $ V23: num 65.6 71.8 80.7 72.6 78.8 74.8 86.4 78.4 62 81.6 ...
## $ V24: num 174 175 194 186 187 ...
## $ V25: int 1 1 1 1 1 1 1 1 1 1 ...
Se seleccionan las columnas que tienen valores de peso en kilogramso y estaturas en centímetros de personas así como el género, Se muestran los primeros 10 y últimos 10 registros.
colnames(datos)[23:25] <- c("peso", "estatura", "genero")
# Solo interesan las tres últimas columnas
datos <- select(datos, estatura, peso, genero)
kable(head(datos, 10), caption = "Datos de pesos y estaturas de personas")
estatura | peso | genero |
---|---|---|
174.0 | 65.6 | 1 |
175.3 | 71.8 | 1 |
193.5 | 80.7 | 1 |
186.5 | 72.6 | 1 |
187.2 | 78.8 | 1 |
181.5 | 74.8 | 1 |
184.0 | 86.4 | 1 |
184.5 | 78.4 | 1 |
175.0 | 62.0 | 1 |
184.0 | 81.6 | 1 |
kable(tail(datos, 10), caption = "Datos de pesos y estaturas de personas")
estatura | peso | genero | |
---|---|---|---|
498 | 169.5 | 67.3 | 0 |
499 | 160.0 | 75.5 | 0 |
500 | 172.7 | 68.2 | 0 |
501 | 162.6 | 61.4 | 0 |
502 | 157.5 | 76.8 | 0 |
503 | 176.5 | 71.8 | 0 |
504 | 164.4 | 55.5 | 0 |
505 | 160.7 | 48.6 | 0 |
506 | 174.0 | 66.4 | 0 |
507 | 163.8 | 67.3 | 0 |
r <- cor(datos$estatura, datos$peso)
r
## [1] 0.7173011
ggplot(data = datos, aes(x = estatura, y = peso)) +
geom_point(colour = 'blue')
modelo <- lm(data = datos, formula = peso~estatura)
modelo
##
## Call:
## lm(formula = peso ~ estatura, data = datos)
##
## Coefficients:
## (Intercept) estatura
## -105.011 1.018
summary(modelo)
##
## Call:
## lm(formula = peso ~ estatura, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18.743 -6.402 -1.231 5.059 41.103
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -105.01125 7.53941 -13.93 <2e-16 ***
## estatura 1.01762 0.04399 23.14 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.308 on 505 degrees of freedom
## Multiple R-squared: 0.5145, Adjusted R-squared: 0.5136
## F-statistic: 535.2 on 1 and 505 DF, p-value: < 2.2e-16
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación :", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.514520837538849"
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## -105.0113
## estatura
## 1.017617
mean(datos$estatura)
## [1] 171.1438
mean(datos$peso)
## [1] 69.14753
ggplot() +
geom_point(data = datos, aes(x = estatura, y = peso), colour='blue') +
geom_point(aes(x= mean(datos$estatura), y = mean(datos$peso)), col = 'green') +
geom_line(aes( x = datos$estatura, y = predict(modelo, datos)), color = "red") +
xlab("Estatura") +
ylab("Peso") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
x <- c(150, 160, 170, 175, 185, 190)
prediccion <- predict(object = modelo, newdata = data.frame(estatura = x))
prediccion
## 1 2 3 4 5 6
## 47.63126 57.80743 67.98360 73.07168 83.24785 88.33593
# Comprobar
y = a + b * x
y
## [1] 47.63126 57.80743 67.98360 73.07168 83.24785 88.33593
Conforme a los datos obtenido de una muestra de mediciones del cuerpo humano en relación las variables independiente estatura y la variable dependiente el peso. Se concluye lo siguiente:
El valor de la correlación entre las variables estatura y peso es de 0.7173011 que significa y se interpreta como una correlación positiva considerable.
El valor del coeficiente determinación \(r^{2}\) significa que el valor de la estatura de una persona representa el 51.45 % del peso de la misma.
Por cada unidad de estatura en una persona el peso varía en función de 1.0176168
Para una persona que mide 170 centímetros la predicción de peso es de 67.9835977
Para una persona que mide 185 centímetros la predicción de peso es de 83.2478493
datos.bruto <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Agosto-Diciembre%202022/datos/players_20.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
str(datos.bruto)
## 'data.frame': 18278 obs. of 104 variables:
## $ sofifa_id : int 158023 20801 190871 200389 183277 192985 192448 203376 177003 209331 ...
## $ player_url : Factor w/ 18278 levels "https://sofifa.com/player/101317/michael-ratajczak/20/159586",..: 397 5124 2497 3676 1537 2765 2674 4267 1088 5356 ...
## $ short_name : Factor w/ 17354 levels "A. Abdallah",..: 9768 3205 12703 7899 4500 8740 11808 16595 9778 11643 ...
## $ long_name : Factor w/ 18218 levels "A. Benjamin Chiamuloira Paes",..: 9904 3292 12557 7423 4443 9252 10715 16632 10336 12149 ...
## $ age : int 32 34 27 26 28 28 27 27 33 27 ...
## $ dob : Factor w/ 6142 levels "01/01/1983","01/01/1984",..: 4738 833 840 1230 1228 5551 5888 1539 1779 2945 ...
## $ height_cm : int 170 187 175 188 175 181 187 193 172 175 ...
## $ weight_kg : int 72 83 68 87 74 70 85 92 66 71 ...
## $ nationality : Factor w/ 162 levels "Afghanistan",..: 6 122 19 135 13 13 58 109 35 44 ...
## $ club : Factor w/ 698 levels " SSV Jahn Regensburg",..: 228 353 463 64 507 401 228 389 507 389 ...
## $ overall : int 94 93 92 91 91 91 90 90 90 90 ...
## $ potential : int 94 93 92 93 91 91 93 91 90 90 ...
## $ value_eur : int 95500000 58500000 105500000 77500000 90000000 90000000 67500000 78000000 45000000 80500000 ...
## $ wage_eur : int 565000 405000 290000 125000 470000 370000 250000 200000 340000 240000 ...
## $ player_positions : Factor w/ 643 levels "CAM","CAM, CDM",..: 545 621 345 227 351 12 227 56 156 575 ...
## $ preferred_foot : Factor w/ 2 levels "Left","Right": 1 2 2 2 2 2 2 2 2 1 ...
## $ international_reputation : int 5 5 5 3 4 4 3 3 4 3 ...
## $ weak_foot : int 4 4 5 3 4 5 4 3 4 3 ...
## $ skill_moves : int 4 5 5 1 4 4 1 2 4 4 ...
## $ work_rate : Factor w/ 9 levels "High/High","High/Low",..: 8 2 3 9 3 1 9 9 1 3 ...
## $ body_type : Factor w/ 10 levels "Akinfenwa","C. Ronaldo",..: 5 2 6 7 7 7 7 7 4 8 ...
## $ real_face : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 2 2 2 2 2 ...
## $ release_clause_eur : int 195800000 96500000 195200000 164700000 184500000 166500000 143400000 150200000 92300000 148900000 ...
## $ player_tags : Factor w/ 84 levels "","#Acrobat",..: 27 74 75 1 72 38 1 83 35 73 ...
## $ team_position : Factor w/ 30 levels "","CAM","CB",..: 27 16 2 7 16 21 7 10 21 27 ...
## $ team_jersey_number : int 10 7 10 13 7 17 1 4 10 11 ...
## $ loaned_from : Factor w/ 317 levels "","1. FC Heidenheim 1846",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ joined : Factor w/ 1761 levels "","01/01/1998",..: 73 639 245 969 88 1705 83 19 97 86 ...
## $ contract_valid_until : int 2021 2022 2022 2023 2024 2023 2022 2023 2020 2023 ...
## $ nation_position : Factor w/ 27 levels "","CAM","CB",..: 1 14 15 7 12 19 27 9 1 24 ...
## $ nation_jersey_number : int NA 7 10 1 10 7 22 4 NA 10 ...
## $ pace : int 87 90 91 NA 91 76 NA 77 74 93 ...
## $ shooting : int 92 93 85 NA 83 86 NA 60 76 86 ...
## $ passing : int 92 82 87 NA 86 92 NA 70 89 81 ...
## $ dribbling : int 96 89 95 NA 94 86 NA 71 89 89 ...
## $ defending : int 39 35 32 NA 35 61 NA 90 72 45 ...
## $ physic : int 66 78 58 NA 66 78 NA 86 66 74 ...
## $ gk_diving : int NA NA NA 87 NA NA 88 NA NA NA ...
## $ gk_handling : int NA NA NA 92 NA NA 85 NA NA NA ...
## $ gk_kicking : int NA NA NA 78 NA NA 88 NA NA NA ...
## $ gk_reflexes : int NA NA NA 89 NA NA 90 NA NA NA ...
## $ gk_speed : int NA NA NA 52 NA NA 45 NA NA NA ...
## $ gk_positioning : int NA NA NA 90 NA NA 88 NA NA NA ...
## $ player_traits : Factor w/ 922 levels "","Acrobatic Clearance",..: 112 687 787 334 165 718 920 203 19 113 ...
## $ attacking_crossing : int 88 84 87 13 81 93 18 53 86 79 ...
## $ attacking_finishing : int 95 94 87 11 84 82 14 52 72 90 ...
## $ attacking_heading_accuracy: int 70 89 62 15 61 55 11 86 55 59 ...
## $ attacking_short_passing : int 92 83 87 43 89 92 61 78 92 84 ...
## $ attacking_volleys : int 88 87 87 13 83 82 14 45 76 79 ...
## $ skill_dribbling : int 97 89 96 12 95 86 21 70 87 89 ...
## $ skill_curve : int 93 81 88 13 83 85 18 60 85 83 ...
## $ skill_fk_accuracy : int 94 76 87 14 79 83 12 70 78 69 ...
## $ skill_long_passing : int 92 77 81 40 83 91 63 81 88 75 ...
## $ skill_ball_control : int 96 92 95 30 94 91 30 76 92 89 ...
## $ movement_acceleration : int 91 89 94 43 94 77 38 74 77 94 ...
## $ movement_sprint_speed : int 84 91 89 60 88 76 50 79 71 92 ...
## $ movement_agility : int 93 87 96 67 95 78 37 61 92 91 ...
## $ movement_reactions : int 95 96 92 88 90 91 86 88 89 92 ...
## $ movement_balance : int 95 71 84 49 94 76 43 53 93 88 ...
## $ power_shot_power : int 86 95 80 59 82 91 66 81 79 80 ...
## $ power_jumping : int 68 95 61 78 56 63 79 90 68 69 ...
## $ power_stamina : int 75 85 81 41 84 89 35 75 85 85 ...
## $ power_strength : int 68 78 49 78 63 74 78 92 58 73 ...
## $ power_long_shots : int 94 93 84 12 80 90 10 64 82 84 ...
## $ mentality_aggression : int 48 63 51 34 54 76 43 82 62 63 ...
## $ mentality_interceptions : int 40 29 36 19 41 61 22 89 82 55 ...
## $ mentality_positioning : int 94 95 87 11 87 88 11 47 79 92 ...
## $ mentality_vision : int 94 82 90 65 89 94 70 65 91 84 ...
## $ mentality_penalties : int 75 85 90 11 88 79 25 62 82 77 ...
## $ mentality_composure : int 96 95 94 68 91 91 70 89 92 91 ...
## $ defending_marking : int 33 28 27 27 34 68 25 91 68 38 ...
## $ defending_standing_tackle : int 37 32 26 12 27 58 13 92 76 43 ...
## $ defending_sliding_tackle : int 26 24 29 18 22 51 10 85 71 41 ...
## $ goalkeeping_diving : int 6 7 9 87 11 15 88 13 13 14 ...
## $ goalkeeping_handling : int 11 11 9 92 12 13 85 10 9 14 ...
## $ goalkeeping_kicking : int 15 15 15 78 6 5 88 13 7 9 ...
## $ goalkeeping_positioning : int 14 14 15 90 8 10 88 11 14 11 ...
## $ goalkeeping_reflexes : int 8 11 11 89 8 13 90 11 9 14 ...
## $ ls : Factor w/ 95 levels "","30+2","31+2",..: 94 95 89 1 88 86 1 60 76 89 ...
## $ st : Factor w/ 95 levels "","30+2","31+2",..: 94 95 89 1 88 86 1 60 76 89 ...
## $ rs : Factor w/ 95 levels "","30+2","31+2",..: 94 95 89 1 88 86 1 60 76 89 ...
## $ lw : Factor w/ 108 levels "","25+2","27+2",..: 108 106 107 1 106 104 1 64 100 105 ...
## $ lf : Factor w/ 104 levels "","26+2","27+2",..: 104 103 102 1 101 100 1 65 94 101 ...
## $ cf : Factor w/ 104 levels "","26+2","27+2",..: 104 103 102 1 101 100 1 65 94 101 ...
## $ rf : Factor w/ 104 levels "","26+2","27+2",..: 104 103 102 1 101 100 1 65 94 101 ...
## $ rw : Factor w/ 108 levels "","25+2","27+2",..: 108 106 107 1 106 104 1 64 100 105 ...
## $ lam : Factor w/ 104 levels "","27+2","28+2",..: 104 101 103 1 102 101 1 64 99 100 ...
## $ cam : Factor w/ 104 levels "","27+2","28+2",..: 104 101 103 1 102 101 1 64 99 100 ...
## $ ram : Factor w/ 104 levels "","27+2","28+2",..: 104 101 103 1 102 101 1 64 99 100 ...
## $ lm : Factor w/ 101 levels "","27+2","30+2",..: 101 99 100 1 100 99 1 62 95 98 ...
## $ lcm : Factor w/ 89 levels "","31+2","32+2",..: 88 80 82 1 84 89 1 64 89 80 ...
## $ cm : Factor w/ 89 levels "","31+2","32+2",..: 88 80 82 1 84 89 1 64 89 80 ...
## $ rcm : Factor w/ 89 levels "","31+2","32+2",..: 88 80 82 1 84 89 1 64 89 80 ...
## $ rm : Factor w/ 101 levels "","27+2","30+2",..: 101 99 100 1 100 99 1 62 95 98 ...
## $ lwb : Factor w/ 99 levels "","30+2","31+2",..: 65 59 61 1 61 84 1 88 92 70 ...
## $ ldm : Factor w/ 99 levels "","28+2","29+2",..: 60 51 51 1 55 84 1 95 92 63 ...
## $ cdm : Factor w/ 99 levels "","28+2","29+2",..: 60 51 51 1 55 84 1 95 92 63 ...
## $ rdm : Factor w/ 99 levels "","28+2","29+2",..: 60 51 51 1 55 84 1 95 92 63 ...
## $ rwb : Factor w/ 99 levels "","30+2","31+2",..: 65 59 61 1 61 84 1 88 92 70 ...
## [list output truncated]
¿Cuál es la variable independiente y cuál la variable dependiente? La variable independiente sería altura y la variable dependiente peso.
¿Cuál es la estructura de los datos? Son 18278 observaciones o registros y 104 variables.
datos <- datos.bruto %>%
select(height_cm, weight_kg)
colnames(datos) <- c("altura", "peso")
datatable(datos, caption = "Jugadores FIFA")
Determinar la correlación de Pearson con la función cor(x,y) que establece el grado de relación entre dos variables; \(x\) e \(y\).
¿Cómo se interpreta el valor del coeficiente de correlación? Se seleccionan dos variables numéricas de interés, height_cm y weight_kg; se modifican los nombres de variables o columnas en el conjunto de datos y se muestran los primeros 10 y últimos 10 registros.
summary(datos)
## altura peso
## Min. :156.0 Min. : 50.00
## 1st Qu.:177.0 1st Qu.: 70.00
## Median :181.0 Median : 75.00
## Mean :181.4 Mean : 75.28
## 3rd Qu.:186.0 3rd Qu.: 80.00
## Max. :205.0 Max. :110.00
ggplot(data = datos, aes(x = altura, y = peso)) +
geom_point(colour = 'blue')
modelo <- lm(data = datos, formula = altura~peso)
modelo
##
## Call:
## lm(formula = altura ~ peso, data = datos)
##
## Coefficients:
## (Intercept) peso
## 125.8763 0.7371
\(r^{2}\)
¿Cuál es el valor y qué significa el coeficiente de determinación?
summary(modelo)
##
## Call:
## lm(formula = altura ~ peso, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -28.9568 -2.7875 0.0012 2.7383 18.3157
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.259e+02 3.429e-01 367.1 <2e-16 ***
## peso 7.371e-01 4.535e-03 162.5 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.321 on 18276 degrees of freedom
## Multiple R-squared: 0.5911, Adjusted R-squared: 0.5911
## F-statistic: 2.642e+04 on 1 and 18276 DF, p-value: < 2.2e-16
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación :", r^2)
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.514520837538849"
¿Cuáles son los valores de \(a\) y \(b\) en la ecuación de mínimos cuadrados? \(Y = a + b\cdot x\)
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept)
## 125.8763
## peso
## 0.7370959
ggplot() +
geom_point(data = datos, aes(x = altura, y = peso), colour='blue') +
geom_point(aes(x= mean(datos$altura), y = mean(datos$peso)), col = 'green') +
geom_line(aes( x = datos$altura, y = predict(modelo, datos)), color = "red") +
xlab("Altura") +
ylab("Peso") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
Predecir conforme a valores nuevos con la función predict() y verificar manualmente.
x <- c(68, 78, 81, 90, 70, 75)
prediccion <- predict(object = modelo, newdata = data.frame(peso = x))
prediccion
## 1 2 3 4 5 6
## 175.9988 183.3698 185.5811 192.2149 177.4730 181.1585
# Comprobar
y = a + b * x
y
## [1] 175.9988 183.3698 185.5811 192.2149 177.4730 181.1585
Se utilizan 18278 observaciones o registros y 104 variables.
El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación : 0.514520837538849.
En este caso, se utilizan distintas medidas al igual que distintos gráficos como gráfica de dispersión, gráfica de tendencia, etc. De igual manera, utilizamos el coeficiente de Correlación r que su utilidad principal es saber cómo se puede comportar un concepto o una variable al conocer el comportamiento de otras variables vinculadas.
También, utilizamos la fórmula para correlación de Pearson que se estructura por:
\[r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})\cdot(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^{2}\cdot\sum_{i=1}^{n}(y_i - \bar{y})^{2}}}\]
Siendo \(r\) el valor del coeficiente de correlación.
Al igual, en el caso vemos la regresión lineal simple que esta implica aplicar una ecuación matemática de mínimos cuadrados que permite pronosticar o predecir el valor de una variable con base en el valor de otra.