Los estadísticos de centralidad indican en torno a qué valor (centro) se distribuyen los datos. Son los siguientes:
Media.
Moda
Mediana
Cuando hablamos de la media o promedio, normalmente hablamos de la media aritmética, aunque existen otras que se analizarán a continuación.
Se obtiene sumando todos los datos y dividiéndolos entre el número total de datos:
\[ \overline{x}=\frac{\sum_{i=1}^n x_i}{n}\]
El valor medio de un vector o variable se obtiene manualmente o bien
mediante la función mean()
.
x <- c(0:10, 50)
sum(x)/length(x) # Manualmente
## [1] 8.75
mean(x) # Con función
## [1] 8.75
⚠️ EFECTO DE NAs:
El cálculo de muchos estadísticos resulta en NA
si
alguno de los valores de las variables del dataframe contiene NA. Por
eso, es conveniente incluir el argumento na.rm = TRUE
,
indicando que se ignoren los valores NA. Ejemplo:
borrame <- c(1, 2, NA, 4)
mean(borrame) # Devuelve NA
## [1] NA
mean(borrame, na.rm = TRUE) # Devuelve 2.33
## [1] 2.333333
La media aritmética tiene las siguientes propiedades:
Sólo puede calcularse para variables cuantitativas.
Se expresa en las mismas unidades que la variable original.
Aunque en su cálculo intervienen todos los valores de la variable
original, es sensible a los valores extremos. Para evitar la distorsión
ejercida por estos últimos en la media aritmética se utiliza la
media recortada (mean α-trimmed
), que
excluye un porcentaje (“α”) de todos los valores originales. Para ello
se añade el argumento trim
dentro de la función
mean()
; en el ejemplo a continuación se excluye el 10 % de
los datos del extremo superior y el 10% del extremo inferior.
mean(x, trim = 0.10)
## [1] 5.5
mean(x)
## [1] 8.75
Se borra a continuación el vector x
rm(x)
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DEL VALOR MEDIO:
airquality
calcula el valor de
la media aritmética de las variables Solar.R
y
Temp
.data("airquality")
promedio_Solar.R <- mean(airquality$Solar.R, na.rm = TRUE)
promedio_Temp <- mean(airquality$Temp, na.rm = TRUE)
Ozone
y Wind
suelen tener
una distribución que no suele ser simétrica, por lo que es conveniente
comparar el valor de la media aritmética con el de la media recortada,
en este caso, utilizando el 90% de los casos (es decir, eliminando el 5%
superior y el 5% inferior)promedio_ozono <- mean(airquality$Ozone, na.rm = TRUE, trim = 0.05)
promedio_wind <- mean(airquality$Wind, na.rm = TRUE, trim = 0.05)
alumnos_uc
, calcular la media
aritmética de las variables peso
y
altura
.promedio_peso <- mean(alumnos_uc$peso, na.rm = TRUE)
promedio_altura <- mean(alumnos_uc$altura, na.rm = TRUE)
Se utiliza cuando no todos los valores sobre los que se pretende obtener la media tienen la misma importancia. Su uso es frecuente para promediar porcentajes, tasas, números índices. etc., es decir, cuando la variable presenta variaciones acumulativas.
Se calcula multiplicando cada uno de los valores por su
peso o ponderación
, que es un valor que indica su
importancia con respecto al resto de valores.
Ventajas e inconvenientes de la media aritmética ponderada:
Cálculo complicado.
Los valores extremos tienen menor influencia que en la media aritmética.
Cuando en la variable existe un caso con un valor de 0 se anula.
✅ EJEMPLO:
Para calcular la nota final de una asignatura, se asigna al examen final un valor tres veces superior al resto de las notas.
notas <- c(4.5,6.8,7.4)
ponderaciones <- c(1,1,3)
¿Cuál será la la nota media ponderada de un estudiante que sacó 4,5 y
6,8 en las dos primeras pruebas y 7,4 en el examen final? El cálculo de
la media ponderada se puede realizar manualmente, o bien mediante la
función weighted mean()
.
sum(notas*ponderaciones)/sum(ponderaciones) # Cálculo manual
## [1] 6.7
weighted.mean(notas, ponderaciones) # Función `weighted.mean()`
## [1] 6.7
mean(notas) # Media aritmética
## [1] 6.233333
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DE LA MEDIA PONDERADA:
En una web los clientes de un hotel le han calificado de esta manera:
Concepto | Ponderación | Calificación |
---|---|---|
Satisfacción | 0.5 | 4.5 |
Limpieza | 0.3 | 4.0 |
Servicio al cliente | 0.1 | 5.0 |
Desayuno | 0.1 | 3.0 |
¿Cuál es la calificación del hotel?
ponderacion_hotel <- c(0.5,0.3,0.1,0.1)
calificacion_hotel <- c(4.5,4.0,5.0,3.0)
weighted.mean(calificacion_hotel, ponderacion_hotel)
Velocidad | Tiempo |
---|---|
100 km/h | 20% |
40 km/h | 15% |
130 km/h | 5% |
60 km/h | 35% |
15 km/h | 5% |
75 km/h | 20% |
velocidad <- c(100,40,130,60,15,75)
tiempo <- c(0.2,0.15,0.05,0.35,0.05,0.2)
weighted.mean(velocidad, tiempo)
rm(notas, ponderaciones)
La media geométrica sustituye a la aritmética para calcular el promedio del cambio experimentado por una variable durante un periodo periodo de análisis determinado. Es un estadístico que se aplica al estudio de fenómenos, como la inflacción o la evolución de precios, sometidos a incrementos/decrecimientos periódicos.
✅ EJEMPLO:
Durante 5 años, el tamaño de un ejample de abejas ha variado con tasas anuales de 14% (primer año), 26% (segundo año etc.), 16%, -38%, -6%. El número de abejas al comienzo del periodo de análisis era 5000. ¿Cuál ha sido el cambio promedio experimentado por el enjambre y cuántas abejas habrá al final del periodo de análisis?.
Si calculamos la media aritmética los resultados serían los siguientes:
abejas <- c(14, 26, 16, -38, -6) # Tasas de cambio anual en %
mean(abejas) # Media aritmética
## [1] 2.4
5000 + (0.024*5000)
## [1] 5120
De acuerdo con el resultado de la media aritmética, el enjambre habría crecido durante esos 5 años. Para comprobar esta afirmación, procedemos al cálculo de la media geométrica.
crec_relativo <- 1 + abejas/100
crec_relativo
## [1] 1.14 1.26 1.16 0.62 0.94
longitud <- length(crec_relativo)
media_geometrica <- (crec_relativo[1] *
crec_relativo[2] *
crec_relativo[3] *
crec_relativo[4] *
crec_relativo[5]) ^ (1/longitud)
round(media_geometrica,3) # Resultados redondeados en %
## [1] 0.994
media_geometrica *5000
## [1] 4970.735
El valor 0.994 es el porcentaje final de abejas respecto al número inicial, que equivale a 4970 abejas, es decir, se ha producido una reducción en el tamaño del enjambre.
La función geometric.mean()
implantada en el paquete
psych proporciona ese mismo porcentaje final.
# if (!require("psych")) install.packages("psych")
library("psych")
geometric.mean(crec_relativo)
## [1] 0.994147
geometric.mean(crec_relativo) * 5000
## [1] 4970.735
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DE LA MEDIA GEOMÉTRICA:
Departamento | Proporción |
---|---|
Producción | 32.6 |
Compras | 53.5 |
Marketing | 28.9 |
Recursos humanos | 48.2 |
Administración | 67.4 |
trabajadoras <- c(32.6, 53.5, 28.9, 48.2, 67.4)
geometric.mean(trabajadoras)
proporcion_mayores65 <- c(12, 16, 19, 8)
cambio_relativo_mas65 <- 1 + proporcion_mayores65/100
geometric.mean(cambio_relativo_mas65) * 7011379
Es la raíz n-ésima del producto de todos los números de un vector o variable. Es recomendada para promediar razones, interés compuesto y números índice.
No existe en R ninguna función que calcule la media geométrica ponderada, pero existe una función ex profeso para su cálculo. Para asegurarnos que la implementación es correcta, retomamos el ejemplo del enjambre de abejas de la sección anterior.
media.geometrica.ponderada <- function(vals, weights){prod(vals)^(1/sum(weights))}
En el ejemplo anterior se observaron durante 5 años las tasas de cambio de la población de abejas. Las tasas de variación anual fueron 1,14, 1,26, 1,16, 0,62, 0,94, que corresponden a x1, x2, … xn. Para reproducir el resultado anterior, establecemos todos los pesos w1, w2, … wn en 1.
round(media.geometrica.ponderada(crec_relativo, rep(1,5)),3)
## [1] 0.994
rm(list = ls())
Es un estadístico propiado para calcular promedios de la velocidad (km/h) o la densidad de población (pob(km2).
✅ EJEMPLO:
La distancia desde Torrelavega a Santander es 32 km. La velocidad media del vieaje de ida esta mañana ha sido de 105 km/h. A la vuelta, debido a la alta densidad de tráfico, la velocidad era de 60 km/h. ¿Cuál ha sido la velocidad media de todo el viaje?.
ida <- 105
vuelta <- 60
mean(c(ida,vuelta))
## [1] 82.5
El resultado de la media aritmética ignora el hecho que se condujo a 105 km/h durante menos tiempo que a 60 km/h (viaje de vuelta). Para calcular la media armónica podemos implementar una función.
media.armonica <- function(vals){length(vals) / sum(1/vals)}
media.armonica(c(ida,vuelta))
## [1] 76.36364
O utilizar la función harmonic.mean
del paquete
psych.
#library("psych")
harmonic.mean(c(ida, vuelta))
## [1] 76.36364
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DE LA MEDIA ARMÓNICA:
El Alvia Santander-Madrid recorre un trazado de unos 400 km. Hasta llegar a Reinosa la velocidad media es de 70 km/h; entre Reinosa y Palencia alcanza los 120km/h; cuando circula por la vía del AVE alcanza los 200 km/h. ¿Cuál es la velocidad promedio?.
media.armonica(c(70,120, 200))
harmonic.mean(c(70,120, 200))
Un ejemplo clásico del uso de la media armónica ponderada en Geografía es el cálculo de la densidad de la población (por ejemplo, de un país) a partir de la densidad según unidades administrativas más pequeñas (por ejemplo, estados, provincias, municipios), con diferente tamaño (población y sobre todo, superficie). El siguiente ejemplo ilustra el problema.
✅ EJEMPLO:
¿Cómo calcular la densidad media de la población urbana de las capitales de cada uno de los estados federados de Alemania?.
Para llevar a cabo este cálculo, primero es necesario cargar el fichero desde una página web.
ciudades <- read.csv('https://userpage.fu-berlin.de/soga/200/2010_data_sets/cities.csv')
ciudades
## name state area_km2 pop.size
## 1 Berlin Land Berlin 891.85 3415100
## 2 Bremen Freie Hansestadt Bremen 325.42 546450
## 3 Dresden Freistaat Sachsen 328.31 525100
## 4 D\xfcsseldorf Land Nordrhein-Westfalen 217.41 593682
## 5 Erfurt Freistaat Th\xfcringen 269.17 203480
## 6 Hamburg Freie und Hansestadt Hamburg 755.26 1751780
## 7 Hannover Land Niedersachsen 204.14 514130
## 8 Kiel Land Schleswig-Holstein 118.60 239860
## 9 Magdeburg Land Sachsen-Anhalt 200.97 229924
## 10 Mainz Land Rheinland-Pfalz 97.76 202750
## 11 M\xfcnchen Freistaat Bayern 310.71 1388300
## 12 Potsdam Land Brandenburg 187.27 159450
## 13 Saarbr\xfccken Saarland 167.07 176990
## 14 Schwerin Land Mecklenburg-Vorpommern 130.46 91260
## 15 Stuttgart Land Baden-W\xfcrttemberg 207.36 597939
## 16 Wiesbaden Land Hessen 203.90 272630
names(ciudades)[1:4] <- c("ciudad", "estado", "area", "poblacion")
media_armonica_ponderada <- function(vals, weights){
if (sum(weights) != 1){
weights = weights/sum(weights)
print('Las ponderaciones no suman 1. Se normaliza las ponderaciones...')
}
sum(weights)/sum(weights/vals)
}
ciudades$densidad <- ciudades$poblacion / ciudades$area
ciudades
## ciudad estado area poblacion densidad
## 1 Berlin Land Berlin 891.85 3415100 3829.2314
## 2 Bremen Freie Hansestadt Bremen 325.42 546450 1679.2146
## 3 Dresden Freistaat Sachsen 328.31 525100 1599.4030
## 4 D\xfcsseldorf Land Nordrhein-Westfalen 217.41 593682 2730.7024
## 5 Erfurt Freistaat Th\xfcringen 269.17 203480 755.9535
## 6 Hamburg Freie und Hansestadt Hamburg 755.26 1751780 2319.4397
## 7 Hannover Land Niedersachsen 204.14 514130 2518.5167
## 8 Kiel Land Schleswig-Holstein 118.60 239860 2022.4283
## 9 Magdeburg Land Sachsen-Anhalt 200.97 229924 1144.0713
## 10 Mainz Land Rheinland-Pfalz 97.76 202750 2073.9566
## 11 M\xfcnchen Freistaat Bayern 310.71 1388300 4468.1536
## 12 Potsdam Land Brandenburg 187.27 159450 851.4444
## 13 Saarbr\xfccken Saarland 167.07 176990 1059.3763
## 14 Schwerin Land Mecklenburg-Vorpommern 130.46 91260 699.5248
## 15 Stuttgart Land Baden-W\xfcrttemberg 207.36 597939 2883.5793
## 16 Wiesbaden Land Hessen 203.90 272630 1337.0770
ciudades$ponderacion <- ciudades$poblacion / sum(ciudades$poblacion)
ciudades
## ciudad estado area poblacion densidad
## 1 Berlin Land Berlin 891.85 3415100 3829.2314
## 2 Bremen Freie Hansestadt Bremen 325.42 546450 1679.2146
## 3 Dresden Freistaat Sachsen 328.31 525100 1599.4030
## 4 D\xfcsseldorf Land Nordrhein-Westfalen 217.41 593682 2730.7024
## 5 Erfurt Freistaat Th\xfcringen 269.17 203480 755.9535
## 6 Hamburg Freie und Hansestadt Hamburg 755.26 1751780 2319.4397
## 7 Hannover Land Niedersachsen 204.14 514130 2518.5167
## 8 Kiel Land Schleswig-Holstein 118.60 239860 2022.4283
## 9 Magdeburg Land Sachsen-Anhalt 200.97 229924 1144.0713
## 10 Mainz Land Rheinland-Pfalz 97.76 202750 2073.9566
## 11 M\xfcnchen Freistaat Bayern 310.71 1388300 4468.1536
## 12 Potsdam Land Brandenburg 187.27 159450 851.4444
## 13 Saarbr\xfccken Saarland 167.07 176990 1059.3763
## 14 Schwerin Land Mecklenburg-Vorpommern 130.46 91260 699.5248
## 15 Stuttgart Land Baden-W\xfcrttemberg 207.36 597939 2883.5793
## 16 Wiesbaden Land Hessen 203.90 272630 1337.0770
## ponderacion
## 1 0.313058464
## 2 0.050092471
## 3 0.048135340
## 4 0.054422177
## 5 0.018652788
## 6 0.160583748
## 7 0.047129732
## 8 0.021987703
## 9 0.021076880
## 10 0.018585870
## 11 0.127263935
## 12 0.014616606
## 13 0.016224479
## 14 0.008365704
## 15 0.054812411
## 16 0.024991693
sum(ciudades$ponderacion) # Comprobación: todas las ponderaciones suman 1
## [1] 1
media_armonica_ponderada(ciudades$densidad, ciudades$ponderacion)
## [1] 2363.438
La densidad media (ponderada) de las capitales de estado en Alemania es 2363 habitantes/km2. La media aritmética sería
mean(ciudades$densidad)
## [1] 1998.255
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DE LA MEDIA ARMÓNICA PONDERADA:
media_armonica_ponderada(c(70,120, 200), c(70/400, 127/400, 203/400))
comunidades_pib
y calcula, mediante
la media armónica, la densidad media de la población y el pib promedio
de España.comunidades <- read.csv('https://personales.unican.es/rasillad/docencia/G2040/TEMA_5/comunidades_pib.csv')
comunidades
comunidades$densidad <- comunidades$poblacion / comunidades$superficie_km2
comunidades$ponderacion <- comunidades$poblacion / sum(comunidades$poblacion)
sum(comunidades$ponderacion) # Comprobación: todas las ponderaciones suman 1
densidad <- media_armonica_ponderada(comunidades$densidad, comunidades$ponderacion)
pib <- media_armonica_ponderada(comunidades$pib, comunidades$ponderacion)
cuencas_aportacion
y calcula,
mediante la media armónica, la aportación media (m3/año) de agua sobre
la Península Ibérica.aportacion <- read.csv('https://personales.unican.es/rasillad/docencia/G2040/TEMA_5/cuencas_aportacion.csv')
aportacion
aportacion$ponderacion <- aportacion$superficie / sum(aportacion$superficie)
sum(aportacion$ponderacion) # Comprobación: todas las ponderaciones suman 1
media_armonica_ponderada(aportacion$a_anual, aportacion$ponderacion)
Es el valor más frecuente en un conjunto de valores, es decir, el que más veces se repite. Si dos puntuaciones adyacentes tienen la frecuencia máxima, se calcula como promedio de esas dos puntuaciones adyacentes; además, si dos o más puntuaciones tienen la misma frecuencia (máxima) hablaremos de una distribución bimodal o multimodal. Este último caso debe analizarse con precaución, ya que puede ser resultado de la mezcla de poblaciones o muestras.Si todas las puntuaciones de un grupo tienen la misma frecuencia no se podría calcular la moda. Se representa por \(Mo\).
Ventajas e inconvenientes:
Poco representativa, salvo cuando destaca mucho.
No intervienen todos los valores de la distribución.
Única medida de posición central que puede obtenerse en las variables de tipo cualitativo.
El vector sobre el que calcularemos la moda es el siguiente:
x <- c(1, 1, 1, 4, 4, 5, 5, 5, 7, 8, 9, 9, 9, 9)
R no dispone de una función en su paquete base que nos permita
calcular la moda. Existen, no obstante, algunos paquetes que sí permiten
calcular la moda. En este caso instalaremos el paquete
modeest y usaremos la función mlv()
con el
argumento method = "mfv"
, que devuelve el valor(es) más
frecuente en un vector numérico.
if (!require("modeest")) install.packages("modeest")
library(modeest)
mlv(x,
method = "mfv")
## [1] 9
Otra posibilidad para el cálculo de la moda sería requerir a R qué valor de una tabla tiene una frecuencia máxima.
as.numeric(names(which(table(x)==max(table(x)))))
## [1] 9
Es el valor que ocupa la posición central de la serie de números cuando los datos están ordenados de menor a mayor, y por lo tanto separa una distribución en dos partes iguales. Se representa por \(Me\) y se calcula de la siguiente manera:
median(x)
## [1] 5
rm(list=ls())
📝 ACTIVIDAD DE EVALUACIÓN CONTINUA: CÁLCULO DE LA ESTADÍSTICOS DE CENTRALIDAD:
A partir del dataframe airquality
, calcula el valor
de la media aritmética, la moda y la mediana correspondientes a las
variables Temp
, Ozone
, Solar.R
y
Wind
.
Importa el fichero zonas_verdes.Rdata
. A partir de
él, calcula los siguientes estadísticos de la(s) variable(s) que
consideres más apropiadas.
# Variable superficie
mean(zonas_verdes$superficie)
median(zonas_verdes$superficie)
mlv(zonas_verdes$parques, method = "mfv")
alumnos_uc.Rdata
.# Media y mediana de la variable superficie
mean(zonas_verdes$superficie)
median(zonas_verdes$superficie)
mlv(zonas_verdes$parques, method = "mfv")