Una tabla de frecuencia organiza los valores observados e indica cuántas veces aparece cada uno. Así convierte una lista extensa en un resumen fácil de comprobar e interpretar.
Una lista de datos sin organizar puede ocultar patrones sencillos. Si registramos cientos de navegadores, códigos de estado o cantidades de errores, necesitamos resumir cuántas veces aparece cada valor.
Una tabla de frecuencia presenta los valores o categorías de una variable junto con el número de observaciones que corresponde a cada uno.
Estas tablas son la base de muchos gráficos y permiten detectar categorías dominantes, valores poco frecuentes, errores de codificación y datos faltantes.
La frecuencia absoluta de un valor es la cantidad de veces que aparece en el conjunto de datos. Suele representarse con fi.
Si el estado “éxito” aparece 12 veces, su frecuencia absoluta es 12. La frecuencia siempre es un número entero mayor o igual que cero.
Consideremos el resultado de 20 solicitudes:
Al contar cada categoría obtenemos:
| Estado | Frecuencia absoluta (fi) |
|---|---|
| Éxito | 12 |
| Error | 5 |
| Redirección | 3 |
| Total | 20 |
La tabla conserva la cantidad de observaciones, pero presenta la información de forma más compacta.
Una tabla básica contiene:
Los encabezados deben ser precisos y las unidades deben aparecer cuando la variable las requiera.
Normalizar antes de contar evita crear categorías separadas para valores equivalentes como “Éxito”, “éxito” y “ exito ”.
En una variable nominal, cada fila representa una categoría sin orden natural. Por ejemplo, el navegador de 15 sesiones:
| Navegador | Frecuencia |
|---|---|
| Chrome | 8 |
| Firefox | 4 |
| Safari | 2 |
| Edge | 1 |
| Total | 15 |
Las filas pueden ordenarse por nombre o por frecuencia. El criterio elegido debe mantenerse y ser fácil de reconocer.
En una variable ordinal, las categorías deben conservar su orden conceptual aunque otra organización parezca más atractiva.
| Prioridad | Frecuencia |
|---|---|
| Baja | 6 |
| Media | 10 |
| Alta | 7 |
| Crítica | 2 |
| Total | 25 |
Ordenar por frecuencia rompería la secuencia baja–media–alta–crítica y dificultaría interpretar el nivel de prioridad.
Si una variable discreta tiene pocos valores posibles, puede mostrarse una fila para cada valor. Supongamos que registramos la cantidad de reintentos de 20 operaciones:
| Reintentos | Frecuencia |
|---|---|
| 0 | 11 |
| 1 | 5 |
| 2 | 3 |
| 3 | 1 |
| Total | 20 |
Los valores numéricos se ordenan de menor a mayor. Si un valor posible no aparece, puede incluirse con frecuencia cero cuando sea importante mostrar la continuidad de la secuencia.
Una variable continua o una variable discreta con muchos valores distintos puede producir una tabla demasiado extensa. En esos casos, los valores se agrupan en intervalos de clase.
Los intervalos deben cubrir todos los valores sin superponerse. Agrupar facilita el resumen, pero pierde detalle. En el próximo tema estudiaremos con mayor profundidad cómo construir una distribución de frecuencias.
Además del conteo, una tabla puede incorporar:
Estas columnas se desarrollarán en el tema 9. Por ahora, es importante comprender que todas se obtienen a partir de las frecuencias absolutas y del total de observaciones.
| Tipo de variable | Orden recomendado |
|---|---|
| Nominal | Alfabético, lógico o de mayor a menor frecuencia. |
| Ordinal | Orden natural de las categorías. |
| Cuantitativa discreta | Orden numérico creciente. |
| Cuantitativa agrupada | Orden creciente de los intervalos. |
Ordenar todas las tablas por frecuencia puede ocultar el orden natural de una variable.
Los datos faltantes no deben desaparecer de la tabla sin explicación. Pueden mostrarse como una categoría separada o excluirse del cálculo, indicando claramente la decisión.
Cuando se calculen porcentajes, debe aclararse si el denominador incluye las 100 observaciones o solamente las 96 válidas.
Antes de interpretar una tabla, conviene verificar:
Si se utilizan intervalos, también hay que comprobar que no existan espacios ni superposiciones entre ellos.
Podemos construir un conteo usando reduce():
const estados = [
"éxito", "éxito", "error", "éxito", "redirección",
"error", "éxito", "éxito"
];
const frecuencias = estados.reduce((tabla, estado) => {
tabla[estado] = (tabla[estado] ?? 0) + 1;
return tabla;
}, {});
const filas = Object.entries(frecuencias)
.sort((a, b) => b[1] - a[1]);
console.table(filas);
// ["éxito", 5]
// ["error", 2]
// ["redirección", 1]
El objeto utiliza cada categoría como clave y almacena su conteo. Luego, las filas se ordenan de mayor a menor frecuencia.
Para valores numéricos, conviene ordenar las claves de forma numérica:
const reintentos = [0, 1, 0, 2, 0, 1, 3, 0, 2, 0];
const conteo = new Map();
for (const valor of reintentos) {
conteo.set(valor, (conteo.get(valor) ?? 0) + 1);
}
const tabla = [...conteo.entries()]
.sort((a, b) => a[0] - b[0]);
const total = tabla.reduce((suma, fila) => suma + fila[1], 0);
console.table(tabla);
console.log(`Total: ${total}`);
El total calculado debe coincidir con reintentos.length. Esta comprobación ayuda a detectar errores durante la construcción.
Una tabla de frecuencia permite responder preguntas descriptivas concretas:
La tabla describe las observaciones incluidas. Por sí sola no explica por qué una categoría es frecuente ni demuestra una relación causal.
Las tablas de frecuencia convierten datos sin organizar en un resumen estructurado y verificable. Son un primer paso esencial para describir variables, construir gráficos y detectar problemas de calidad.
En el próximo tema estudiaremos la distribución de frecuencias y la agrupación de datos en intervalos.