Objetivo

Construir diagramas de dispersión de dos variables

Marco teórico

La dispersión de datos significa un diagrama que identifica como el grado de distanciamiento de un conjunto de valores respecto a su valor medio.

A partir de dicho concepto se puede establecer dispersión de medidas tales como rango, varianza, desviación; ahora en estos temas se asociará la dispersión en términos de covarianza y coeficiente de correlación.

Un ejemplo de una dispersión sería asociar a través de punto que son coordenadas de valores de dos variables x,yx,y.

Desarrollo

Cargar librerías

library(ggplot2)
library(readr)
library(dplyr)
library(DT)

Cargar funciones

Se cargan funciones que se reutilizan en el caso

source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Agosto-Diciembre%202022/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")

Llamadas y ventas

Datos

Se trata de emular las ventas que hace una empresa en razón de la cantidad de llamadas que hacen vía teléfónica sus empleados. Se construyen dos vectores, el primero denota el número de llamadas que hace un vendedor vía telefónica para que le adquieran un producto, y la columna tres refleja las ventas de ese vendedor.

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)

Construir diagrama de dispersión

Se manda llamar función previamente programada en las para visualizar diagrama de dispersión

f_diag.dispersion(data.frame(llamadas, ventas))

Datos de FIFA

Datos

Se cargan datos de dirección de internet

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]

Son 18278 observaciones o registros y 104 variables.

Seleccionar las variables de interés

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")
datatable(datos, caption = "Jugadores FIFA")

Show 102550100 entries

Search:

Jugadores FIFA
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

Showing 1 to 10 of 18,278 entries

Previous12345…1,828Next

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

Dispersión de los datos

f_diag.dispersion(datos)

Otros datos de ejemplo

Se solicita al alumno identificar un archivo CSV con dos variables numéricas de interés, que se puedan importar o simular en R y construir un diagrama de dispersión con las dos variables de interés x,yx,y

Calificaciones de alumnos

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")

Show 102550100 entries

Search:

Calificaciones
matematicas ingles
1 69.0999242726851 65.7890489536718
2 71.2128411059482 66.0590182693559
3 72.5426105253865 68.2666334976237
4 72.6964990079356 68.2944046640898
5 74.0022086942838 68.3296395462023
6 74.0107818106966 69.6015035341572
7 74.1034512517697 70.0195073075431
8 74.4237296373309 70.2828061717173
9 74.6600022999624 70.3155538859875
10 74.7780508217249 70.3175651775731

Showing 1 to 10 of 100 entries

Previous12345…10Next

Variables de interés

Las variables de interés son calificaciones de matemáticas e inglés

Descripción de los datos con summary()

summary(datos)

##   matematicas        ingles     
##  Min.   :69.10   Min.   :65.79  
##  1st Qu.:76.52   1st Qu.:74.40  
##  Median :78.93   Median :79.94  
##  Mean   :79.74   Mean   :80.44  
##  3rd Qu.:82.20   3rd Qu.:85.42  
##  Max.   :91.38   Max.   :96.57

Diagrama de dispersión

f_diag.dispersion(datos)

Se observa que hay mucha relación entre calificaciones de matemática e inglés. Los datos fueron simulados y ordenados de menor a menor, buscando precisamente que las calificaciones bajas de matemáticas se parecieran a las calificaciones bajas de matemáticas y viceversa.

Datos de ranking de Universidades

Cargar datos

Es un conjunto de datos de las 300 mejores universades del mundo. El enlace de la descarga origen está en el portal de kaggle: https://www.kaggle.com/datasets/aneesayoub/world-universities-ranking-2022.

Aquí los datos preparados para este ejercicio

# Local
# datos_bruto <- read.csv("../datos/Top 300 universities of World.csv", encoding = "UTF-8", stringsAsFactors = TRUE)
# Con url
datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Agosto-Diciembre%202022/datos/world%20ranking%20universities.csv", encoding = "UTF-8", stringsAsFactors = TRUE)

Las variables del conjunto de datos. Son 300 observaciones y 13 variables de las cuales sólo interesan dos variables: publication y ranking.

  • publication y publications significan la cantidad en miles de publicaciones técnico científica que produce la universidad. Es decir, resultados de investigaciones.

  • acceptance_num es el valor numérico de aceptación de la univesidad, en un porcentaje de 0 a 100 pero en valor numérico y no %.

  • El ranking y/o rank en valor numérico es la jerarquía de la universidad, el ranking con valor 1 es la más alta jerarquía.

datatable(datos, caption = "Ranking Universidades")

Show 102550100 entries

Search:

Ranking Universidades
X name world_ranking region_ranking country_ranking region country city.state acceptance_rate publication website phone_no address rank publications acceptance_num
1 1 Aarhus University #150 of 14,131 #44 of 2,785 #2 of 27 Europe Italy Veneto 15% 89,633 www.au.dk +45 8942 1111 Nordre Ringgade 1 Aarhus, Central Denmark Region, 8000 Denmark 150 89633 15
2 2 Arizona State University - Tempe #61 of 14,131 #48 of 2,597 #45 of 2,496 Europe Spain Valencia 99,086 www.asu.edu 8552785080 University Drive and Mill Avenue Tempe, Arizona, 85287 United States 61 99086
3 3 Auburn University North America United States Wisconsin 57% 36,231 auburn.edu 3348444000 Samford Hall Auburn, Alabama, 36849 United States 36231 57
4 4 Australian National University #88 of 14,131 #5 of 59 #5 of 40 North America Canada Ontario 86% 97,754 www.anu.edu.au +61 (0)2 6125 5111 Ellery Crescent, Acton Canberra, Australian Capital Territory, 0200 Australia 88 97754 86
5 5 Autonomous University of Barcelona Europe Italy Emilia-Romagna 11% 74,922 www.uab.cat +34 935812222 Campus de Bellaterra, Edificio A Cerdanyola del Vallès, Catalonia, 08193 Spain 74922 11
6 6 Baylor College of Medicine Asia Japan Kyoto 55% 82,676 bcm.edu 7137984951 One Baylor Plaza Houston, Texas, 77030-3498 United States 82676 55
7 7 Boston College North America United States Pennsylvania 67% 25,757 bc.edu 6175528000 140 Commonwealth Avenue Chestnut Hill, Massachusetts, 02467 United States 25757 67
8 8 Boston University #49 of 14,131 #42 of 2,597 #39 of 2,496 Europe Greece Athens 107,676 bu.edu 6173532000 One Silber Way Boston, Massachusetts, 02215 United States 49 107676
9 9 Brigham Young University - Provo #193 of 14,131 #99 of 2,597 #88 of 2,496 Europe United Kingdom England 58% 36,150 www.byu.edu 8014224636 Main Campus Provo, Utah, 84602 United States 193 36150 58
10 10 Brown University #76 of 14,131 #55 of 2,597 #52 of 2,496 North America United States Virginia 80,596 www.brown.edu 4018631000 One Prospect Street Providence, Rhode Island, 02912 United States 76 80596

Showing 1 to 10 of 300 entries

Previous12345…30Next

La estructura de los datos

str(datos)

## 'data.frame':    300 obs. of  16 variables:
##  $ X              : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ name           : Factor w/ 300 levels "Aarhus University",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ world_ranking  : Factor w/ 200 levels "","#1 of 14,131",..: 59 159 1 188 1 1 1 145 106 175 ...
##  $ region_ranking : Factor w/ 200 levels "","#1 of 1,756",..: 101 108 1 115 1 1 1 96 200 126 ...
##  $ country_ranking: Factor w/ 198 levels "","#1 of 101",..: 59 118 1 128 1 1 1 102 193 134 ...
##  $ region         : Factor w/ 6 levels "Africa","Asia",..: 3 3 5 5 3 2 5 3 3 5 ...
##  $ country        : Factor w/ 34 levels "Argentina","Australia",..: 17 29 34 6 17 18 34 14 33 34 ...
##  $ city.state     : Factor w/ 153 levels "Aarhus","Adelaide",..: 141 140 150 99 38 64 102 7 39 144 ...
##  $ acceptance_rate: Factor w/ 87 levels "","1%","10%",..: 8 1 50 80 4 48 60 1 51 1 ...
##  $ publication    : Factor w/ 300 levels "100,167","100,238",..: 272 296 113 293 236 255 98 18 112 250 ...
##  $ website        : Factor w/ 295 levels "auburn.edu","bc.edu",..: 120 119 1 117 219 3 2 6 124 123 ...
##  $ phone_no       : Factor w/ 297 levels "","+1 (204) 474 8880",..: 96 285 209 137 39 265 256 253 273 212 ...
##  $ address        : Factor w/ 300 levels "1 Gwanak-ro, Gwanak-gu\n Seoul, Seoul, 151-742 \nSouth Korea",..: 205 275 247 167 152 213 30 217 195 215 ...
##  $ rank           : int  150 61 NA 88 NA NA NA 49 193 76 ...
##  $ publications   : int  89633 99086 36231 97754 74922 82676 25757 107676 36150 80596 ...
##  $ acceptance_num : int  15 NA 57 86 11 55 67 NA 58 NA ...

Variables de interés

Las variables de interés. Se seleccionan dos variables de interés: accepance_num, publications y el ranking y/o rank en valor numérico de la universidad

datos_a_visualizar <- datos %>%
    select(publications, acceptance_num)

Diagrama de dispersión

f_diag.dispersion(datos_a_visualizar)

## Warning: Removed 76 rows containing missing values (`geom_point()`).

## Warning: Removed 1 rows containing missing values (`geom_hline()`).

No se detecta una tendencia del nivel de aceptación de una universidad con el número de publicaciones en la misma.

¿Que relación visual existirá el número de publicaiones con el ranking de la universidad?

¿Será que a mayor publicaciones es mejor ranking?

datos_a_visualizar <- datos %>%
    select(publications, rank)

Diagrama de dispersión

f_diag.dispersion(datos_a_visualizar)

## Warning: Removed 101 rows containing missing values (`geom_point()`).

## Warning: Removed 1 rows containing missing values (`geom_hline()`).

Se observa una tendencia lineal hacia abajo, tal vez con una curva descediente, entre más publicaciones tenga la universidad, mejor ranking tiene, por ejemplo aquellas universidades que publican por encima de la media aritmética de 118153 artículos están en el top 100 del ranking a nivel mundial.

Interpretación

¿Qué es un diagrama de dispersión? es una herramienta utilizada cuando se desea realizar un análisis gráfico de datos bivariados, es decir, los que se refieren a dos conjuntos de datos. ¿Cómo se interpreta un diagrama de dispersión? podemos determinar las diferentes variables y su correlación. ¿Que representa cada diagrama de dispersión de cada ejercicios de este caso? El eje X representa la variable independiente, mientras que el eje Y representa la variable dependiente.