INTRODUCCIÓN

Los estadísticos de centralidad indican en torno a qué valor (centro) se distribuyen los datos. Son los siguientes:

LA MEDIA

Cuando hablamos de la media o promedio, normalmente hablamos de la media aritmética, aunque existen otras que se analizarán a continuación.

Media aritmética.

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:

  1. A partir del dataframe 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)
  1. Las variables 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)
  1. A partir del dataframe 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)

Media aritmética ponderada

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.

Fórmula de la media aritmética ponderada
Fórmula de la media aritmética ponderada

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)
  1. Para un anuncio sobre una nueva montaña rusa, el publicista quiere saber cuál es el promedio de su velocidad de viaje.
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)

Media geométrica

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.

Fórmula de la media aritmética ponderada
Fórmula de la media aritmética ponderada

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.

  • Paso 1: transformar los porcentajes en tasas de cambio relativo.
crec_relativo <- 1 + abejas/100             
crec_relativo
## [1] 1.14 1.26 1.16 0.62 0.94
  • Paso 2: cálculo manual
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:

  1. Una empresa quiere conocer cuántas mujeres trabajan por término medio en los distintos departamentos. Para ello, se recoge el porcentaje de mujeres en los cinco principales.
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)
  1. A lo largo de las últimas décadas se observa un envejecimiento progresivo de la población de España. En el censo de 1991 los mayores de 65 años aumentaron un 12% con respecto al de 1981; en el de 2001, un 16% con respecto al censo anterior, un 19% en el de 2011 y un 8% en el de 2021. Si la población de mayores de 65 años en 1991 era de 7.011.379, ¿cuál será la población de mayores de 65 años en 2021 (sin contar los decesos)?
proporcion_mayores65 <- c(12, 16, 19, 8)
cambio_relativo_mas65 <- 1 + proporcion_mayores65/100             
geometric.mean(cambio_relativo_mas65) * 7011379

Media geométrica ponderada

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

Media armónica

Es un estadístico propiado para calcular promedios de la velocidad (km/h) o la densidad de población (pob(km2).

Fórmula de la media armónica
Fórmula de la media armónica

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

Media armónica ponderada

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")        
  • PASO 1: Creamos una función ad-hoc
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)
}
  • PASO 2: Creación de una nueva variable (columna) en la que se calcula la densidad de habitantes (habitantes/area en \(km^2\))
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
  • PASO 3: cálculo del peso (ponderación) de cada ciudad, según su población
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
  • PASO 4: cálculo de la media armónica ponderada y comparación con la media aritmética.
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:

  1. A partir de los datos del recorrido del Alvia Santander-Madrid, téngase en cuenta que la distancia entre Santander y Reinosa son 70 km; Reinosa y Palencia distan 127 km y de Palencia a Madrid la distancia es de unos 103 km. Calcúlese la velocidad media mediante la media armónica ponderada
media_armonica_ponderada(c(70,120, 200), c(70/400, 127/400, 203/400))
  1. Importa el fichero 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)
  1. Importa el fichero 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)

LA MODA

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:

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

LA MEDIANA

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:

  1. 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.Ry Wind.

  2. 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")
  1. Realiza las mismas operaciones del punto 2 en el dataframe alumnos_uc.Rdata.
# Media y mediana de la variable superficie
mean(zonas_verdes$superficie)
median(zonas_verdes$superficie)

mlv(zonas_verdes$parques, method = "mfv")