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
Antes se cargan las librerías a utilizar
Se requiere install.packages() para cada librería a utilizar
library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(PerformanceAnalytics) # Para coorelaciones gráficas
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Enero%20Junio%202022/funciones/f.diagramas.graficos.r", encoding = "UTF-8")
Se necesitan datos para calcular la covarianza, la correlación y mostrar el diagrama de dispersión.
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
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.
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)])
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\).
\[ 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
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)
De acuerdo a Hernández Sampiere (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 cargan datos de la dirección de internet
#datos.bruto <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Enero%20Junio%202022/datos/players_20.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
#str(datos.bruto)
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)
#tail(datos, 10)
Se muestran los estadísticos descriptivos principales de datos
#summary(datos)
#f_diag.dispersion(datos)
#chart.Correlation(datos, histogram = TRUE)
#r <- cor(x = datos$altura, y = datos$peso)
#r
La correlación de las variables peso y estatura o estatura y peso es de 0.8646 y se interpreta como positiva considerable.
Se pide al alumno importar y utilizar los datos de ejemplo del ejercicio del caso 22 para determinar la covarianza y la correlación entre dos variables.
datos.csv = read.csv("C:/Users/fvg88/Documents/Trabajos en R/datos/Libro12.csv",stringsAsFactors = TRUE,encoding = "UFT-8")
datos.csv
## ï..Edades Estatura
## 1 10 150
## 2 6 140
## 3 8 130
## 4 9 120
## 5 12 150
## 6 15 160
## 7 11 175
## 8 9 140
datos <- datos.csv %>%
select(ï..Edades,Estatura)
colnames(datos) <- c("ï..Edades","Estatura")
head(datos, 10)
## ï..Edades Estatura
## 1 10 150
## 2 6 140
## 3 8 130
## 4 9 120
## 5 12 150
## 6 15 160
## 7 11 175
## 8 9 140
f_diag.dispersion(datos)
cov(datos.csv$ï..Edades,datos.csv$Estatura)
## [1] 27.85714
cor(datos.csv$ï..Edades,datos.csv$Estatura)
## [1] 0.5940885
chart.Correlation(datos,histogram = TRUE)
Con la covarianza podemos observar como se comporta una variable con respecto a la otra. Es decir como se comporta la variable x conforme la variable y.