Construir diagramas de dispersión de dos variables
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 , y\).
La tabla 2 identifica valores de dos variables. La primer columna son los vendedores, la segunda columna 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.
library(ggplot2)
library(readr)
library(dplyr)
Se cargan funciones que se reutilizan en el caso
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/Enero%20Junio%202022/funciones/f.diagramas.graficos.r", encoding = "UTF-8")
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)
Se manda llamar función previamente programada en las para visualizar diagrama de dispersión
f_diag.dispersion(data.frame(llamadas, ventas))
Se cargan datos de 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)
## '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 "�. Blănaru","�. Fara",..: 9773 3210 12708 7904 4505 8745 11813 16600 9783 11648 ...
## $ long_name : Factor w/ 18218 levels "A. Benjamin Chiamuloira Paes",..: 9904 3292 12557 7429 4443 9253 10682 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.
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)
Se solicita al alumno identificar un archivo CSV con dos variables numéricas de interés, que se puedan importar a R y construir un diagrama de dispersión con las dos variables de interés \(x, y\)
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")
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(Potential, Valor)
colnames(datos2) <- c("potencial", "valor")
head(datos2, 10)
## 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
tail(datos2, 10)
## potencial valor
## 17946 61 60000
## 17947 70 60000
## 17948 69 70000
## 17949 62 60000
## 17950 68 60000
## 17951 65 60000
## 17952 63 60000
## 17953 67 60000
## 17954 66 60000
## 17955 66 60000
summary(datos2)
## potencial valor
## Min. :48.00 Min. : 10000
## 1st Qu.:67.00 1st Qu.: 325000
## Median :71.00 Median : 700000
## Mean :71.32 Mean : 2444530
## 3rd Qu.:75.00 3rd Qu.: 2100000
## Max. :95.00 Max. :118500000
f_diag.dispersion(datos2)
¿Qué es un diagrama de dispersión?
El Diagrama de Dispersión tiene el propósito de controlar mejor el proceso y mejorarlo, resulta indispensable conocer como se comportan algunas variables o características de calidad entre si, esto es, descubrir si el comportamiento de unas depende del comportamiento de otras, o no, y en qué grado.
El 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. El resultado del análisis puede mostrar que existe una relación entre una variable y la otra.
¿Cómo se interpreta un diagrama de dispersión?
Cuando miramos a un diagrama de dispersión, podemos determinar las diferentes variables y su correlación. En la situación mencionada, la primera ilustra una relación negativa, ya que un variable aumenta y la otra disminuye. La segunda ilustra una relación positiva, ya que una variable aumenta y la otra también.
¿Que estadísticos se pueden asociar con un diagrama de dispersión?
Varianza, relación estándar, covarianza, media y rango.