En esta sección, se ofrecen estadísticas descriptivas para dos equipos de fútbol, donde se analizan los porcentajes de tatuajes presentes en los cuerpos de sus jugadores.
Vamos a realizar ejercicios para entender las medidas de tendencia central y dispersión.
Recuerda que estamos trabajando en markdown. Para ello se debe insertar trozos de codigo (chunks), con acento grave (back ticks)
Set working directory
setwd("/cloud/project/1. Jugadores_IQR")
Llamar base de datos. Varias formas:
##write.csv(equipos,file= "equipos.csv", row.names=FALSE)
##read.csv(file= "equipos.csv")
##read.csv(file.choose(), header=TRUE)
##equipos <- read.csv("equipos.csv")
##View(equipos)
setwd("/cloud/project/1. Jugadores_IQR")
equipos <- read.csv("equipos.csv")
Si no tienes los datos, incluyelos manualmente
jugadores1<- c(10.8, 14.1, 17.6, 19.3, 15.4, 15.3, 15, 17.8, 13.5, 12.1, 14.1)
jugadores2<- c(0.0, 24.1, 5.6, 14.1, 17.2, 8.7, 19.2, 14.1, 27.7, 15.0, 19.3)
Una vez incluidos los datos como vectores, podemos generar un dataset
equipos<-data.frame(jugadores1, jugadores2)
Podemos agregar una columna adicional con cbind
tipo<- c("arquero", "delantero", "central", "delantero", "defensa", "defensa", "central", "delantero", "carrilero", "central", "carrilero")
equipos <- cbind(equipos, tipo)
quitemos un momento la columna tipo para incorporarla de nuevo usando el dplyr
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
equipos <- equipos %>%
select (-tipo)
Adicionemos la columna con dplyr
equipos <- equipos %>%
mutate(tipo=tipo)
Muy Bien, ahora ya sabes utilizar los pipes de dpyl. Sigamos con las descriptivas.
Primero adjuntemos la base de datos, para dejar de utilizar el simbolo $.
attach(equipos)
## The following objects are masked _by_ .GlobalEnv:
##
## jugadores1, jugadores2, tipo
Veamos un resumen de los datos de tendencia central
summary(equipos)
## jugadores1 jugadores2 tipo
## Min. :10.8 Min. : 0.00 Length:11
## 1st Qu.:13.8 1st Qu.:11.40 Class :character
## Median :15.0 Median :15.00 Mode :character
## Mean :15.0 Mean :15.00
## 3rd Qu.:16.5 3rd Qu.:19.25
## Max. :19.3 Max. :27.70
summary(jugadores1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.8 13.8 15.0 15.0 16.5 19.3
summary(jugadores2)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 11.40 15.00 15.00 19.25 27.70
Podemos calcularlas también con los siguientes comandos
Media y mediana
mean(jugadores1)
## [1] 15
median(jugadores1)
## [1] 15
mean(jugadores2)
## [1] 15
median(jugadores2)
## [1] 15
Calculemos el Rango y ICR
rango1<- max(jugadores1)-min(jugadores1)
rango2<- max(jugadores2)-min(jugadores2)
range(jugadores1)
## [1] 10.8 19.3
range(jugadores2)
## [1] 0.0 27.7
cuartiles_1 <-quantile(jugadores1, c(0.25,0.75))
rango_intercuartilico_1 <- cuartiles_1[2] - cuartiles_1[1]
cat("Rango Intercuartílico:", rango_intercuartilico_1, "\n")
## Rango Intercuartílico: 2.7
cuartiles_2 <-quantile(jugadores2, c(0.25,0.75))
rango_intercuartilico_2 <- cuartiles_2[2] - cuartiles_2[1]
cat("Rango Intercuartílico:", rango_intercuartilico_2, "\n")
## Rango Intercuartílico: 7.85
# Alternativamente
IQR(jugadores1)
## [1] 2.7
IQR(jugadores2)
## [1] 7.85
Grafiquemos un gráfico de dispersion
plot(jugadores1, col= "blue")
plot(jugadores2, col= "lightgreen")
¿Qué nos dicen los histogramas?
hist(jugadores1, col= "blue")
hist(jugadores2, col= "lightgreen")
Diagrama de caja (boxplots). En cada diagrama de caja podemos ver el rango intercuartílico entre el quartile 3 y quartile 1 de la distribución de cada equipo.
boxplot(jugadores1, col="blue")
boxplot(jugadores2, col= "lightgreen")
Ahora hallemos la varianza
var(jugadores1)
## [1] 6.326
var(jugadores2)
## [1] 63.974
Ahora hallemos la desviación estándar
sd(jugadores1)
## [1] 2.515154
sd(jugadores2)
## [1] 7.998375
Podemos hallar ahora una medida de variabilidad conocida como el coeficiente de variacion, el cual es la division entre la desviacion estandar y la media (poblacional o muestral)
Realicemos una funcion para ello
coef_variacion <- function(x) {
desviacion_estandar <- sd(x)
media <- mean(x)
coef_var <- (desviacion_estandar / media) * 100
return(coef_var)
}
Aplicar la función a los vectores de datos
cv_jugadores1 <- coef_variacion(jugadores1)
cv_jugadores2 <- coef_variacion(jugadores2)
Imprimir los resultados de la funcion
cat("Coeficiente de variación para jugadores1:", cv_jugadores1, "%\n")
## Coeficiente de variación para jugadores1: 16.76769 %
cat("Coeficiente de variación para jugadores2:", cv_jugadores2, "%\n")
## Coeficiente de variación para jugadores2: 53.3225 %
# estandarizar una sola columna (variable), por ejemplo jugadores 1
stand_jugadores1 <- (equipos$jugadores1 - mean(equipos$jugadores1)) / sd(equipos$jugadores1)
stand_jugadores1
## [1] -1.6698778 -0.3578310 1.0337339 1.7096368 0.1590360 0.1192770
## [7] 0.0000000 1.1132519 -0.5963849 -1.1530109 -0.3578310
stand_jugadores2 <- (equipos$jugadores2 - mean(equipos$jugadores2)) / sd(equipos$jugadores2)
stand_jugadores2
## [1] -1.8753810 1.1377311 -1.1752387 -0.1125229 0.2750559 -0.7876600
## [7] 0.5251067 -0.1125229 1.5878226 0.0000000 0.5376092
equipos<- cbind(equipos, stand_jugadores1,stand_jugadores2)
equipos
# definir la funcion de normalizacion
min_max_norm <- function(x) {(x-min(x))/(max(x)-min(x))}
norm_equipos<- as.data.frame(lapply(equipos[1:2], min_max_norm))
norm_equipos
equipos <-cbind(equipos, norm_equipos)
equipos