Realizar cálculos para determinar medidas de localización y tendencia central como la media, mediana, moda con un conjunto de datos de personas
Con un conjunto de datos de personas y con variables de interés como la edad, peso y estatura, determinar medidas de localización y tendencia central, se pide mostrar los datos, identificar las medidas visualizar gráficamente e interpretar las medidas.
library(readr)
library(ggplot2) # Previamente install.packages("ggplot2")
library(resumeRdesc) # Previamente install.packages(“remotes”); remotes::install_github("osoramirez/resumeRdesc", force = TRUE)
set.seed(12345)
n <- 100 # Total de observaciones
edades <- sample(10:90, n, replace = TRUE)
pesos <- sample(40:120, n, replace = TRUE)
estaturas <- sample(140:210, n, replace = TRUE) /100
personas <- data.frame(edades, pesos, estaturas)
names(personas) <- c("edad", "peso", "estatura")
personas
## edad peso estatura
## 1 23 115 2.04
## 2 60 47 1.46
## 3 89 117 1.75
## 4 33 57 1.56
## 5 67 59 1.72
## 6 84 60 1.88
## 7 11 86 1.93
## 8 84 116 1.60
## 9 47 50 2.06
## 10 19 90 1.46
## 11 90 110 1.93
## 12 41 83 1.54
## 13 49 63 1.60
## 14 48 102 1.46
## 15 47 101 2.04
## 16 39 111 1.97
## 17 10 95 1.86
## 18 85 76 1.57
## 19 81 50 1.69
## 20 21 48 1.98
## 21 12 75 1.97
## 22 18 49 2.09
## 23 23 110 1.63
## 24 22 97 1.63
## 25 73 116 1.92
## 26 29 85 1.73
## 27 25 40 1.46
## 28 89 89 1.78
## 29 71 94 1.92
## 30 69 100 1.73
## 31 41 108 1.72
## 32 34 52 1.48
## 33 45 86 1.71
## 34 84 118 1.44
## 35 47 86 1.61
## 36 18 118 1.91
## 37 14 98 2.07
## 38 88 101 1.82
## 39 26 72 1.95
## 40 26 101 1.78
## 41 46 108 1.97
## 42 67 53 1.41
## 43 76 114 1.76
## 44 22 106 1.49
## 45 76 70 2.05
## 46 58 47 2.00
## 47 83 85 1.58
## 48 65 99 1.72
## 49 43 101 1.87
## 50 53 105 1.55
## 51 44 40 1.63
## 52 60 113 1.97
## 53 64 77 1.49
## 54 32 116 1.53
## 55 35 95 1.65
## 56 64 54 1.80
## 57 16 49 1.83
## 58 24 120 1.70
## 59 55 43 1.48
## 60 21 79 1.98
## 61 14 73 1.92
## 62 77 106 1.59
## 63 20 102 1.98
## 64 58 106 1.90
## 65 76 98 1.96
## 66 83 84 1.49
## 67 24 96 1.45
## 68 16 112 1.80
## 69 51 51 1.71
## 70 64 70 1.95
## 71 13 79 1.88
## 72 13 47 1.62
## 73 41 63 1.72
## 74 66 102 1.49
## 75 74 48 1.62
## 76 57 71 2.02
## 77 82 54 2.01
## 78 64 81 1.47
## 79 26 105 1.46
## 80 12 59 1.40
## 81 27 70 1.78
## 82 78 108 2.05
## 83 83 65 2.04
## 84 16 62 2.04
## 85 83 98 1.72
## 86 29 59 1.89
## 87 21 67 1.51
## 88 77 55 1.73
## 89 44 70 1.57
## 90 15 105 1.66
## 91 32 111 1.84
## 92 77 76 1.44
## 93 68 105 1.80
## 94 39 82 1.66
## 95 59 60 2.07
## 96 40 75 1.80
## 97 34 43 1.64
## 98 57 59 1.99
## 99 34 45 1.99
## 100 37 66 1.92
media <- sum(personas$peso) / n
media
## [1] 81.93
media <- mean(personas$peso)
media
## [1] 81.93
La variable de interés es peso
Se determina el valor la posición de enmedio del total de los datos ordenados
Si el número de observaciones es impar, la mediana es el valor de la posición de enmedio exactamente 51 cuando n sea = 101
Si el número de observaciones es par, la mediana es valor promedio que está en las posiciones de las dos observaciones de enmedio. promedio.de.las.posiciones( 50 y 51 ) de la variable edad cuando n = 100
Se utiliza la variable mediana.edad
Opción 1:
mediana.edad <- median(personas$peso)
mediana.edad
## [1] 83.5
sort(personas$peso)
## [1] 40 40 43 43 45 47 47 47 48 48 49 49 50 50 51 52 53 54
## [19] 54 55 57 59 59 59 59 60 60 62 63 63 65 66 67 70 70 70
## [37] 70 71 72 73 75 75 76 76 77 79 79 81 82 83 84 85 85 86
## [55] 86 86 89 90 94 95 95 96 97 98 98 98 99 100 101 101 101 101
## [73] 102 102 102 105 105 105 105 106 106 106 108 108 108 110 110 111 111 112
## [91] 113 114 115 116 116 116 117 118 118 120
posicion <- round((n / 2))
posicion
## [1] 50
mediana.edad <- (sort(personas$peso)[posicion] + sort(personas$peso)[posicion + 1]) / 2
mediana.edad
## [1] 83.5
La variable de interés es peso
Por medio de la función table() determinar las frecuencia de cada valor de peso
Ordenar las frecuencias descendente para identificar de mejor manera las frecuencias de cada valor de peso y dejar el resultado en la misma variable (Vector) frecuencia
El valor de la posición 1 es la de mayor frecuencia si es que se ordenó descendentemente
Opción 1
frecuencia <- table(personas$peso)
frecuencia <- sort(frecuencia, decreasing = TRUE)
frecuencia
##
## 59 70 101 105 47 86 98 102 106 108 116 40 43 48 49 50 54 60 63 75
## 4 4 4 4 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2
## 76 79 85 95 110 111 118 45 51 52 53 55 57 62 65 66 67 71 72 73
## 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1
## 77 81 82 83 84 89 90 94 96 97 99 100 112 113 114 115 117 120
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
moda <- frecuencia[1]
cat("La moda es : ", names(frecuencia[1]), " con ", frecuencia[1], " ocasiones")
## La moda es : 59 con 4 ocasiones
cat("Que sucede si hay varias modas: ", "Entonces se dice que es bimodal si hay 2 o multimodal si hay mas de 2")
## Que sucede si hay varias modas: Entonces se dice que es bimodal si hay 2 o multimodal si hay mas de 2
# library(resumeRdesc)
moda <- Mode(personas$peso)
moda
## [1] 59 70 101 105
ggplot(data = personas, aes(x = peso)) +
geom_bar()
ggplot(aes(x = peso), data = personas) +
geom_histogram(color = 'green',
fill = 'green',
alpha = 0.2) +
labs(title = "Histograma de Peso") +
geom_vline(aes(xintercept = median(peso),
color = "mediana"),
linetype = "dashed",
size = 1) +
geom_vline(aes(xintercept = mean(peso),
color = "media"),
linetype = "dashed",
size = 1) +
geom_vline(
aes(xintercept = moda[1],
color = "moda"),
linetype = "dashed",
size = 1
)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Si una distribución está sesgada a la derecha, la media se corre a la derecha; si una distribución está sesgada a la izquierda, la media se corre a la izquierda. La mediana no es afectada por estos valores extremos porque los valores numéricos de las mediciones no se usan en este cálculo. Cuando una distribución es simétrica, la media y la mediana son iguales. (Mendenhal, Beaver & Beaver (2015). Introducción a la probabilidad y estadística