Calcular covarianza y correlación así como visualizar la dispersión entre dos variables para su adecuada y correcta interpretración.
Se cargan o se construyen datos y se determinan covarianza, correlación y diagrama de dispersión
Se presentan ejercicios relacionados con datos de llamadas y ventas, daos de jugadores de FIFA, calificaciones de matemática e inglés y datos de ranking de universidades.
De estos conjuntos de datos se construye la covarianza y la correlación así como la gráfica de dispersión de las variables numéricas de interés.
Se hace la interpretación de cada ejercicio.
Se necesitan datos para calcular la covarianza, la correlación y mostrar el diagrama de dispersión.
La covarianza se establece como una medida descriptiva de la asociación entre dos variables \(x\) e \(y\). (Anderson, Sweeney, and Williams 2008a).
\[ S_{xy} = \frac{\sum(x_i - \bar{x}) \cdot (y_i - \bar{y})}{n - 1} \]
Se necesitan dos variable de interés:
Se requiere la media de la variable \(x\)
Se requiere la media de la variable \(y\)
Se necesita el número de observaciones del conjunto de datos. \(n\)
La covarianza muestral dividida entre el producto de las desviaciones estándar de cada variable de interés identifica la correlación entre dos variables
\[ r = \frac{S_{xy}}{S_x \cdot S_y} \]
El coeficiente de correlación del producto–momento de Pearson para datos muestrales (llamado coeficiente de correlación muestral) se calcula dividiendo la covarianza muestral entre el producto de la desviación estándar muestral de \(x\) por la desviación estándar muestral de \(y\).
De acuerdo a Hernández Sampiere [(hernándezsampieri2014?)](hernándezsampieri2014?), los valores del coeficiente de correlación de Pearson se interpreta de la siguiente manera:
El coeficiente de correlación va desde -1 hasta +1. Los valores cercanos a -1 o a +1 corresponden a una relación lineal fuerte. Entre más cercano a cero sea el valor de la correlación, más débil es la relación lineal(Anderson, Sweeney, and Williams 2008b).
Se requiere install.packages() para cada librería a utilizar
library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(DT)
library(mosaic)
library(PerformanceAnalytics) # Para coorelaciones gráficas
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")
Se tienen unos datos de interés de una tienda que tiene vendedores y hacen ventas; los vendedores hacen llamadas a prospectos y clientes y en razón de ello tal vez realizan cierta cantidad de ventas de cada uno de ellos.
Las variables de interés son llamadas que hacen los vendedores y la cantidad de ventas.
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
\[ S_{xy} = \frac{\sum(x_i - \bar{x}) \cdot (y_i - \bar{y})}{n - 1} \]
Se construye una tabla para determinar la covarianza manualmente.
tabla <- data.frame(x = llamadas, y = ventas, x.med = mean(llamadas), y.med=mean(ventas))
tabla <- cbind(tabla, xi.menos.x.med = tabla$x-mean(tabla$x))
tabla <- cbind(tabla, yi.menos.y.med = tabla$y-mean(tabla$y))
tabla <- cbind(tabla, prod = tabla$xi.menos.x.med * tabla$yi.menos.y.med)
tabla <- rbind(tabla, apply(tabla, 2, sum))
tabla[nrow(tabla), c(1:6)] <- '*'
kable(tabla)
| x | y | x.med | y.med | xi.menos.x.med | yi.menos.y.med | prod |
|---|---|---|---|---|---|---|
| 96 | 41 | 96 | 45 | 0 | -4 | 0 |
| 40 | 41 | 96 | 45 | -56 | -4 | 224 |
| 104 | 51 | 96 | 45 | 8 | 6 | 48 |
| 128 | 60 | 96 | 45 | 32 | 15 | 480 |
| 164 | 61 | 96 | 45 | 68 | 16 | 1088 |
| 76 | 29 | 96 | 45 | -20 | -16 | 320 |
| 72 | 39 | 96 | 45 | -24 | -6 | 144 |
| 80 | 50 | 96 | 45 | -16 | 5 | -80 |
| 36 | 28 | 96 | 45 | -60 | -17 | 1020 |
| 84 | 43 | 96 | 45 | -12 | -2 | 24 |
| 180 | 70 | 96 | 45 | 84 | 25 | 2100 |
| 132 | 56 | 96 | 45 | 36 | 11 | 396 |
| 120 | 45 | 96 | 45 | 24 | 0 | 0 |
| 44 | 31 | 96 | 45 | -52 | -14 | 728 |
| 84 | 30 | 96 | 45 | -12 | -15 | 180 |
| * | * | * | * | * | * | 6672 |
\[ S_{xy} = \frac{\sum(x_i - \bar{x}) \cdot (y_i - \bar{y})}{n - 1} \therefore \\ covarianza = S_{xy} = \frac{6672}{n-1} = \frac{6672}{14} = 476.5714 \]
n <- nrow(datos)
numerador <- sum((datos$llamadas - mean(datos$llamadas)) * (datos$ventas - mean(datos$ventas)))
# numerador ; sum(tabla$prod)
denominador <- n - 1
covarianza <- numerador / denominador
covarianza
## [1] 476.5714
El diagrama de dispersión es una gráfica que identifica la relación entre dos variables con respectos a sus medias.
Se observa el diagrama de dispersión de llamadas y ventas
f_diag.dispersion(datos = datos[,c(2,3)])
\[ correlación = r = \frac{covarianza}{S_x \cdot S_y} = \frac{476.5714}{42.7618\cdot12.88964}=\frac{476.5714}{551.1843}=0.8646318 \]
\[ S_{xy}\text{ es la covarianza muestral previamente calculada} \\ S_x \text{ es la desviación std. de la variable x} \\ S_y \text{ es la desviación std. de la variable y} \\ S_x\cdot S_y \text { es el producto de ambas desviaciones} \]
prod.dispersion = sd(datos$llamadas) * sd(datos$ventas)
prod.dispersion
## [1] 551.1843
r <- covarianza / prod.dispersion
r
## [1] 0.8646318
Se determina la covarianza y la correlación con funciones de los paquete base de R y R Studio. La función cov() determina la covarianza de un conjunto de datos de dos variables numéricas y cor() calcula la correlación; de manera natural la correlación que se genera con la función de cor() es la de Pearson.
Las variables cov y r identifican a la covarianza y la correlación de Pearson respectivamente y deben ser los mismos valores que aquellos que se calcularon manualemnte arriba.
covarianza <- cov(x = datos$llamadas, y = datos$ventas, )
r <- cor(x = datos$llamadas, y = datos$ventas)
covarianza; r
## [1] 476.5714
## [1] 0.8646318
Se visualiza la correlación entre dos variables de interés usando chart.Correlation de la librería PerformanceAnalytics.
chart.Correlation(datos[,2:3], histogram = TRUE)
Se cargan datos de la dirección de internet registro de Jugadores de FIFA
datos.bruto <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/datos/players_20.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
Son 18278 observaciones o registros y 104 variables.
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.
datos <- datos.bruto %>%
select(height_cm, weight_kg)
colnames(datos) <- c("altura", "peso")
head(datos, 10)
## altura peso
## 1 170 72
## 2 187 83
## 3 175 68
## 4 188 87
## 5 175 74
## 6 181 70
## 7 187 85
## 8 193 92
## 9 172 66
## 10 175 71
tail(datos, 10)
## altura peso
## 18269 178 70
## 18270 183 74
## 18271 177 70
## 18272 180 72
## 18273 188 84
## 18274 186 79
## 18275 177 66
## 18276 186 75
## 18277 185 74
## 18278 182 78
Se muestran los estadísticos descriptivos principales de datos
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
f_diag.dispersion(datos)
chart.Correlation(datos, histogram = TRUE)
r <- cor(x = datos$altura, y = datos$peso)
r
## [1] 0.7688164
La correlación de las variables peso y estatura o estatura y peso es de 0.7688 y se interpreta como positiva considerable.
Se describen otros ejercicios con datos de ejemplo que se identifican en el caso 22 y se utilizan para determinar la covarianza y la correlación entre dos variables.
Se construye un conjunto de datos de 100 alumnos con calificaciones de asignaturas de matemáticas e inglés y se hace diagrama de dispersión
matematicas <- sort(rnorm(n = 100, mean = 80, 5))
ingles <- sort(rnorm(n = 100, mean = 80, sd = 8))
datos <- data.frame(matematicas, ingles)
datatable(datos, caption = "Calificaciones")
Las variables de interés son calificaciones de matemáticas e inglés
summary(datos)
## matematicas ingles
## Min. :61.79 Min. :57.10
## 1st Qu.:76.51 1st Qu.:74.72
## Median :79.85 Median :79.93
## Mean :79.25 Mean :79.65
## 3rd Qu.:82.80 3rd Qu.:84.60
## Max. :89.69 Max. :97.85
f_diag.dispersion(datos)
cov(datos$matematicas, datos$ingles)
## [1] 37.96608
cor(datos)
## matematicas ingles
## matematicas 1.0000000 0.9889966
## ingles 0.9889966 1.0000000
chart.Correlation(datos, histogram = TRUE )
Existe una correlación muy muy fuerte entre calificaciones de matemáticas e inglés.
datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/datos/world%20ranking%20universities.csv", encoding = "UTF-8", stringsAsFactors = TRUE)
Se presentan los dos diagramas de dispersión de la relación de variables pares: entre publications y acceptance_num ; luego publications y rank.
Se construyen dos gráficas g1 y g2 y se presentan en el mismo renglón.
g1 <- f_diag.dispersion(select(datos, publications, acceptance_num))
g2 <- f_diag.dispersion(select(datos, publications, rank))
plot_grid(g1, g2)
Como se analizó en el caso 22 no observa visualmente una relación importante entre las variables pubications y acceptance_num pero si una relación negativa entre pubications y rank en el conjunto de datos de ranking de universidades.
publications y acceptance_num, quintando los valores NA
cov(x = datos$publications, y = datos$acceptance_num, use="complete.obs")
## [1] 94763.35
publications y rank quitando los registros con NA
cov(x = datos$publications, y = datos$rank, use="complete.obs")
## [1] -2789143
cor(x = datos$publications, y = datos$acceptance_num, use="complete.obs")
## [1] 0.1215602
cor(x = datos$publications, y = datos$rank, use="complete.obs")
## [1] -0.7706753
chart.Correlation(datos[,c('publications','acceptance_num', 'rank')], histogram = TRUE )
¿Que significa una covarianza?
Es una medida que se usa en la estadística para medir la relación lineal entre dos variables aleatorias, dicho en otras palabras, mide cómo varían al mismo tiempo dos variables en función a su valor.
¿Cómo se interpreta una una correlación?
La correlación es la medida que describe la relación entre dos variables, indica cómo se comportan, y está fijo siempre entre [-1, 1], de manera en la que puede medir en qué dirección qué fuerza existe en ese enlace.
¿Que relación existe entre un diagrama de dispersión y la correlación de Pearson?
Se usan para analizar la relación lineal entre dos variables; al analizar un diagrama de dispersión, se pueden hacer observaciones visuales sobre la relación entre las variables, como la dirección y la forma de la asociación. Esto está ligado al valor de la correlación de Pearson, siendo que su comportamiento puede describirse en su escala, si este coeficiente tiende a acercarse a cero, significa que no existe una relación entre esas dos variables, mientras que entre más cerca esté a 1 o -1, más fuerte será la relación entre esas dos variables.
¿Cuáles fueron las correlaciones en los diferentes ejercicios, fueron positivas o negativas y que significado tienen?
Para las llamadas y ventas, su correlación es de 0.86, siendo un valor bastante cercano a 1, significando que el número de ventas tiene una correlación muy considerable respecto al número de llamadas.
Para los jugadores de FIFA, su correlación es de 0.76, siendo un valor algo cercano a 1, significando que el peso de los jugadores tiene una correlación considerable respecto a su altura.
Para las calificaciones de alumnos, su correlación es de 0.96, siendo un valor muy cercano a 1, significando que las de inglés están fuertemente relacionadas con las calificaciones en matemáticas.
Para la aceptación de de las universidades, su correlación es de 0.12, un valor bastante cercano a 0, significando que no parece que haya una relación muy fuerte entre su aceptación y el número de publicaciones. Sin embargo, para el rakning y el número de publicaciones es de -0.77, siendo un valor algo cercano a -1, lo que significa que es una correlación negativa considerable, que significa que entre más publicaciones, existe una tendencia de que su ranking sea menor.