Media, Mediana y Moda

Las tres medidas de centralización más usadas en estadística: cuándo usar cada una, cómo calcularlas y cómo implementarlas en JavaScript.

Las medidas de centralización responden a la pregunta: ¿en torno a qué valor se agrupan los datos? Son el punto de partida de cualquier análisis descriptivo.


Media aritmética

La media es la suma de todos los valores dividida entre el número de elementos. Es la más conocida pero también la más sensible a los valores extremos.

function media(arr) {
  const suma = arr.reduce((acc, val) => acc + val, 0);
  return suma / arr.length;
}

const salarios = [1800, 1900, 2100, 2000, 1950, 15000]; // el 15000 distorsiona
console.log(media(salarios).toFixed(2)); // 4125.00 — no representa al grupo

Cuando hay valores atípicos (outliers), la media deja de ser representativa. Ahí entra la mediana.


Mediana

La mediana es el valor central cuando los datos están ordenados. Si hay un número par de elementos, es la media de los dos centrales.

function mediana(arr) {
  const ordenado = [...arr].sort((a, b) => a - b);
  const n = ordenado.length;
  const mid = Math.floor(n / 2);
  return n % 2 !== 0
    ? ordenado[mid]
    : (ordenado[mid - 1] + ordenado[mid]) / 2;
}

console.log(mediana(salarios)); // 1975 — mucho más representativo

La mediana divide el dataset en dos mitades iguales: el 50% de los valores está por debajo y el 50% por encima.


Moda

La moda es el valor que más veces aparece. Puede haber una sola moda, varias (distribución multimodal) o ninguna si todos los valores son distintos.

function moda(arr) {
  const conteo = {};
  for (const val of arr) {
    conteo[val] = (conteo[val] ?? 0) + 1;
  }

  const maxFrecuencia = Math.max(...Object.values(conteo));

  // Devolver todos los valores con la frecuencia máxima
  return Object.entries(conteo)
    .filter(([, freq]) => freq === maxFrecuencia)
    .map(([val]) => Number(val));
}

const notas = [7, 8, 6, 9, 7, 8, 8, 10, 6, 7];
console.log(moda(notas)); // [7, 8] — bimodal

Comparación: cuándo usar cada una

MedidaÚsala cuando…Evítala cuando…
MediaLos datos son simétricos y sin outliersHay valores extremos que distorsionan
MedianaHay outliers o distribución asimétricaEl dataset es muy pequeño (< 5 elementos)
ModaQuieres saber el valor más frecuente (ej. tallas)Los datos son continuos con pocos repetidos
const precios = [120, 125, 118, 130, 122, 119, 500]; // 500 es un outlier

console.log('Media:', media(precios).toFixed(2));   // 190.57 — distorsionada
console.log('Mediana:', mediana(precios));           // 122 — representativa
console.log('Moda:', moda(precios));                 // [] — todos distintos

Las tres juntas

function resumenCentral(arr) {
  return {
    media: media(arr),
    mediana: mediana(arr),
    moda: moda(arr),
    n: arr.length,
  };
}

const alturas = [162, 175, 180, 158, 171, 168, 183, 177, 165, 172, 175, 169];
console.table(resumenCentral(alturas));
// media:   171.25
// mediana: 171.5
// moda:    [175]
// n:       12

Cuando media ≈ mediana, los datos son aproximadamente simétricos. Si difieren mucho, hay asimetría o outliers.


En la siguiente lección aprendemos a visualizar estos datos con JavaScript: histogramas, gráficos de barras y cómo interpretar lo que vemos.