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 (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).
La importancia de la correlación es conocer el grdo 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 (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).
La correlacion 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 (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).
Por otra parte (Walpole, Myers, and Myers 2012), 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. (Amat Rodrigo 2016)
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 (Lind, Marchal, and Wathen 2015).
\[Y = a + bx\]
En donde:
\[b = r \cdot(\frac{ s_{y}}{s_x}) = \frac{\sum(x_i - \bar{x})\cdot(y_i - \bar{y})}{\sum(x_i-\bar{x})^2}\] En donde:
\(r\) es el coeficiente de correlación.
\(S_y\) es la desviación estándar de \(y\).
\(S_x\) es la desviación etándar de la variable \(x\).
Y para determinar a:
\[a = \bar{y} - b \cdot\bar{x}\]
(Lind, Marchal, and Wathen 2015).
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) (Hernández Sampieri, Fernández Collado, and Baptista Lucio 2014).
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\). (Lind, Marchal, and Wathen 2015).
library(dplyr)
library(mosaic)
library(readr)
library(ggplot2) # Para gráficos
library(knitr) # Para formateo de datos
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. (Walpole et al. 2007)
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
Pendiente..
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 funcíón de 1.0176168
Para una persona que mide 170 centímetros la prediccón de peso es de 67.9835977
Para una persona que mide 185 centímetros la predicción de peso es de 83.2478493
datosfifa <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Enero%20Junio%202022/datos/datos.FIFA.limpios.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
datosfifa <- as.data.frame(datosfifa)
¿Cuál es la variable independiente y cuál la variable dependiente?
Un variable independiente es una variable que representa una cantidad que se modifica en un experimento.
Una variable dependiente representa una cantidad cuyo valor depende de cómo se modifica la variable independiente.
A menudo y es la variable que se utiliza para representar la variable dependiente en una ecuación.
A menudo x es la variable que se utiliza para representar la variable independiente en una ecuación.
¿Cuál es la estructura de los datos?
str(datosfifa)
## 'data.frame': 17955 obs. of 50 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Name : Factor w/ 16956 levels "E. Fern\xe1ndez",..: 9482 3927 11975 4799 8574 5042 9490 713 14459 7905 ...
## $ Age : int 31 33 26 27 27 27 32 31 32 25 ...
## $ Nationality : Factor w/ 163 levels "S\xe3o Tom\xe9 & Pr\xedncipe",..: 8 124 22 140 15 15 37 158 140 137 ...
## $ Overall : int 94 94 92 91 91 91 91 91 91 90 ...
## $ Potential : int 94 94 93 93 92 91 91 91 91 93 ...
## $ Club : Factor w/ 651 levels "FK Bod\xf8/Glimt",..: 245 340 437 383 382 184 472 245 472 54 ...
## $ Preferred.Foot : Factor w/ 3 levels "","Left","Right": 2 3 3 3 3 3 3 3 3 3 ...
## $ International.Reputation: int 5 5 5 4 4 4 4 5 4 3 ...
## $ Weak.Foot : int 4 4 5 3 5 4 4 4 3 3 ...
## $ Skill.Moves : int 4 5 5 1 4 4 4 3 3 1 ...
## $ Height : Factor w/ 22 levels "","5'1","5'10",..: 10 15 12 17 4 11 11 13 13 15 ...
## $ Weight : Factor w/ 58 levels "","110lbs","115lbs",..: 23 34 19 27 21 25 17 37 33 38 ...
## $ Crossing : int 84 84 79 17 93 81 86 77 66 13 ...
## $ Finishing : int 95 94 87 13 82 84 72 93 60 11 ...
## $ HeadingAccuracy : int 70 89 62 21 55 61 55 77 91 15 ...
## $ ShortPassing : int 90 81 84 50 92 89 93 82 78 29 ...
## $ Volleys : int 86 87 84 13 82 80 76 88 66 13 ...
## $ Dribbling : int 97 88 96 18 86 95 90 87 63 12 ...
## $ Curve : int 93 81 88 21 85 83 85 86 74 13 ...
## $ FKAccuracy : int 94 76 87 19 83 79 78 84 72 14 ...
## $ LongPassing : int 87 77 78 51 91 83 88 64 77 26 ...
## $ BallControl : int 96 94 95 42 91 94 93 90 84 16 ...
## $ Acceleration : int 91 89 94 57 78 94 80 86 76 43 ...
## $ SprintSpeed : int 86 91 90 58 76 88 72 75 75 60 ...
## $ Agility : int 91 87 96 60 79 95 93 82 78 67 ...
## $ Reactions : int 95 96 94 90 91 90 90 92 85 86 ...
## $ Balance : int 95 70 84 43 77 94 94 83 66 49 ...
## $ ShotPower : int 85 95 80 31 91 82 79 86 79 22 ...
## $ Jumping : int 68 95 61 67 63 56 68 69 93 76 ...
## $ Stamina : int 72 88 81 43 90 83 89 90 84 41 ...
## $ Strength : int 59 79 49 64 75 66 58 83 83 78 ...
## $ LongShots : int 94 93 82 12 91 80 82 85 59 12 ...
## $ Aggression : int 48 63 56 38 76 54 62 87 88 34 ...
## $ Interceptions : int 22 29 36 30 61 41 83 41 90 19 ...
## $ Positioning : int 94 95 89 12 87 87 79 92 60 11 ...
## $ Vision : int 94 82 87 68 94 89 92 84 63 70 ...
## $ Penalties : int 75 85 81 40 79 86 82 85 75 11 ...
## $ Composure : int 96 95 94 68 88 91 84 85 82 70 ...
## $ Marking : int 33 28 27 15 68 34 60 62 87 27 ...
## $ StandingTackle : int 28 31 24 21 58 27 76 45 92 12 ...
## $ SlidingTackle : int 26 23 33 13 51 22 73 38 91 18 ...
## $ GKDiving : int 6 7 9 90 15 11 13 27 11 86 ...
## $ GKHandling : int 11 11 9 85 13 12 9 25 8 92 ...
## $ GKKicking : int 15 15 15 87 5 6 7 31 9 78 ...
## $ GKPositioning : int 14 14 15 88 10 8 14 33 7 88 ...
## $ GKReflexes : int 8 11 11 94 13 8 9 37 11 89 ...
## $ Valor : int 110500000 77000000 118500000 72000000 102000000 93000000 67000000 80000000 51000000 68000000 ...
## $ Estatura : num 1.7 1.88 1.75 1.93 1.8 1.73 1.73 1.83 1.83 1.88 ...
## $ PesoKgs : num 72.1 83 68 76.2 69.8 ...
datos2 <- datosfifa %>%
select(X, Potential, Valor)
colnames(datos2) <- c("X","Potencial", "Valor")
kable(head(datos2, 10), caption = "Datos de valor y potencial")
X | Potencial | Valor |
---|---|---|
1 | 94 | 110500000 |
2 | 94 | 77000000 |
3 | 93 | 118500000 |
4 | 93 | 72000000 |
5 | 92 | 102000000 |
6 | 91 | 93000000 |
7 | 91 | 67000000 |
8 | 91 | 80000000 |
9 | 91 | 51000000 |
10 | 93 | 68000000 |
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?
r = cor(datos2$Potencial, datos2$Valor)
r
## [1] 0.5796077
Construir la dispersión de las variables
ggplot(data = datos2, aes(x = Potencial, y = Valor)) +
geom_point(colour = 'orange')
Construir el modelo de regresión lineal
modelo <- lm(data = datos2, formula = Valor~Potencial)
modelo
##
## Call:
## lm(formula = Valor ~ Potencial, data = datos2)
##
## Coefficients:
## (Intercept) Potencial
## -35442931 531208
\(r^{2}\)
¿Cuál es el valor y qué significa el coeficiente de determinación?
En estadística, el coeficiente de determinación, denominado R² y pronunciado R cuadrado, es un estadístico usado en el contexto de un modelo estadístico cuyo principal propósito es predecir futuros resultados o probar una hipótesis.
summary(modelo)
##
## Call:
## lm(formula = Valor ~ Potencial, data = datos2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10034592 -1935262 -285429 1094403 104540576
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -35442931 399023 -88.82 <2e-16 ***
## Potencial 531208 5574 95.30 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4585000 on 17953 degrees of freedom
## Multiple R-squared: 0.3359, Adjusted R-squared: 0.3359
## F-statistic: 9082 on 1 and 17953 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.33594505796206"
¿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)
## -35442931
## Potencial
## 531208.1
ggplot() +
geom_point(data = datos2, aes(x = Potencial, y = Valor), colour='orange') +
geom_point(aes(x= mean(datos2$Potencial), y = mean(datos2$Valor)), col = 'blue') +
geom_line(aes( x = datos2$Potencial, y = predict(modelo, datos2)), color = "red") +
xlab("Potencial") +
ylab("Valor") +
ggtitle("Linea de tendencia sobre Conjunto de Datos")
Predecir conforme a valores nuevos con la función predict() y verificar manualmente.
x <- c(150, 160, 170, 175, 185, 190)
prediccion <- predict(object = modelo, newdata = data.frame(Potencial = x))
prediccion
## 1 2 3 4 5 6
## 44238287 49550368 54862450 57518490 62830571 65486612
y = a + b * x
y
## [1] 44238287 49550368 54862450 57518490 62830571 65486612
En ese ejercicio donde se toman los datos de casos pasados, tenemos 10 variables x donde se tienen valores pontenciales de entre 94 y 91, con sus respectivos valores de entre 118500000 a 51000000
En el segundo conjunto de datos de 10 variables, tenemos las 10 variables que van desde 17946 hasta 17955, con valores potenciales de entre 61 hasta 70 y con sus respectivos valores de entre 60000 a 70000.
El valor de correlacion entre las variables es .5796077, tenemos la grafica donde observamos donde se va dando la dispersion.
Los valores de a y b en la ecuacion de minimos cuadrados es de -35442931 y 531208.1 respectivamente.
La correlación cuantifica como de relacionadas están dos variables, mientras que la regresión lineal consiste en generar una ecuación (modelo) que, basándose en la relación existente entre ambas variables, permita predecir el valor de una a partir de la otra.
El cálculo de la correlación entre dos variables es independiente del orden o asignación de cada variable a XX e YY, mide únicamente la relación entre ambas sin considerar dependencias. En el caso de la regresión lineal, el modelo varía según qué variable se considere dependiente de la otra (lo cual no implica causa-efecto).
A nivel experimental, la correlación se suele emplear cuando ninguna de las variables se ha controlado, simplemente se han medido ambas y se desea saber si están relacionadas. En el caso de estudios de regresión lineal, es más común que una de las variables se controle (tiempo, concentración de reactivo, temperatura…) y se mida la otra.
Por norma general, los estudios de correlación lineal preceden a la generación de modelos de regresión lineal. Primero se analiza si ambas variables están correlacionadas y, en caso de estarlo, se procede a generar el modelo de regresión.