La varianza, vista como cuadrados
Si te digo que la varianza es solo el promedio del tamaño de unos cuadrados, ¿me creerias? En unos minutos lo vas a ver con tus propios ojos y vas a poder mover los datos.
Idea central: la varianza no es una formula que hay que memorizar. Es el promedio del tamaño de unos cuadrados, uno por cada dato, donde el lado de cada cuadrado es la distancia entre ese dato y la media.
1 Empecemos con 5 muestras
Imagina que tienes 5 mediciones de pureza o ley de un material. Anotas:
La pregunta natural es: ¿los valores son consistentes o estan muy dispersos? La varianza responde eso midiendo cuanto se alejan los datos de su centro.
2 Primer paso: la media
Sumamos las 5 mediciones y dividimos entre 5:
3 Segundo paso: distancia a la media
Para cada muestra calculamos x - μ. Eso mide que tan lejos esta cada dato del centro:
| Muestra | x | x - μ |
|---|---|---|
| S1 | 2.10 | -0.50 |
| S2 | 2.40 | -0.20 |
| S3 | 2.60 | 0.00 |
| S4 | 2.90 | +0.30 |
| S5 | 3.00 | +0.40 |
Si sumamos estas distancias directamente, los negativos y positivos se cancelan. Por eso hacemos el siguiente truco.
4 El truco: convertir cada distancia en un cuadrado
Por cada distancia dibujamos un cuadrado. El lado es la distancia y el area es (x - μ)².
Porque eliminan el signo y castigan mas a los valores lejanos. Una distancia doble no pesa el doble: su area pesa cuatro veces.
5 Tercer paso: promediamos las areas
Ahora no solo queremos ver los cuadrados por separado. Queremos juntar sus areas y repartirlas entre los 5 datos. Esa imagen es la varianza.
= 0.54
varianza σ²
varianza σ²
El numero 0.108 esta en unidades cuadradas, por ejemplo (% de pureza)². Para volver a la unidad original tomamos raiz cuadrada:
6 Tu turno: arrastra los puntos y mira que pasa
Mueve cada muestra arriba o abajo. Los cuadrados, la linea de la media y las metricas se actualizan en vivo.
Sandbox interactivo
Arrastra los puntos naranjas verticalmente y observa como reacciona la varianza.
Arrastra los puntos naranjas hacia arriba o hacia abajo.
7 Variante 1: muestral vs poblacional (la corrección de Bessel)
Volvamos al ejemplo de las 5 muestras. Cuando dividís entre n = 5 estás asumiendo algo fuerte: "estas 5 son toda la población que existe". Si lo que tenés en realidad es una muestra de algo más grande (lo más común), tu fórmula subestima la verdadera varianza. Ahí entra una corrección pequeña pero importante: dividir entre n − 1 en lugar de n.
El razonamiento intuitivo: si te digo 4 de los 5 valores y te digo la media, vos podés deducir el 5to por simple aritmética. O sea: tener la media te "consume" un dato. Quedan solo n − 1 datos realmente libres. La corrección de Bessel reconoce eso.
Lectura: con 2 muestras la diferencia es enorme (la muestral es el doble de la poblacional). Con 20 muestras casi no se nota. Con 100 muestras es trivial. Por eso la corrección de Bessel importa cuando tenés pocos datos — que es exactamente el escenario donde más sesgo introduce no corregir.
numpy por defecto usa la poblacional (ddof=0). Si lo que querés es la muestral hay que pedirla explícitamente con ddof=1. pandas en cambio usa la muestral por defecto. Esa inconsistencia hace que dos personas calculen "la varianza" del mismo dataset y obtengan números distintos. Siempre lee la documentación de la librería que estés usando.
Escenario 1: caracterización de una veta nueva (pocas muestras)
Terminá un programa de exploración con 8 testigos de perforación en una zona desconocida del yacimiento. Querés estimar la variabilidad de la ley de cobre para decidir si vale la pena perforar más.
Si usás la varianza poblacional (dividir entre 8) vas a subestimar la variabilidad real del cuerpo mineralizado. Eso te puede llevar a un error caro: contratar un plan minero asumiendo leyes más estables de las que en realidad va a entregar la veta cuando entres en producción.
Aquí usá siempreddof=1 (muestral)
Escenario 2: control diario de planta concentradora (muchas muestras)
La sala de control registra 1440 mediciones por día de ley de concentrado (una por minuto). Querés saber qué tan estable estuvo el proceso ayer.
Con tantos datos, la diferencia entre dividir por n=1440 o n-1=1439 es invisible — afecta solo en el 4to decimal. Podés usar la fórmula que tu sistema te dé por defecto sin preocuparte.
Tip práctico para el día a día
Regla simple: si n < 30, usa siempre muestral (ddof=1). Si n > 100, da prácticamente lo mismo. Entre 30 y 100, fijá un estándar de equipo y documentálo en el reporte técnico para que no haya discusión cuando el auditor revise tus números.
8 Variante 2: alternativas robustas (MAD e IQR)
La varianza tiene una debilidad escondida: como eleva las distancias al cuadrado, los valores extremos pesan muchísimo. Una sola muestra atípica puede inflar la varianza y darte la falsa impresión de que tus datos son caóticos cuando en realidad casi todos son consistentes.
Hagámoslo concreto. Imaginá que tomás las mismas 5 muestras de antes (2.10, 2.40, 2.60, 2.90, 3.00) y un sensor te entrega una sexta lectura errónea: 10.0. Es claramente un outlier. Mirá lo que pasa con tres medidas distintas de dispersión:
MAD: el primo lineal de la varianza
En vez de elevar al cuadrado, ponés las distancias en valor absoluto. La fórmula:
El razonamiento: si la distancia es 10, en la varianza pesa 100; en el MAD pesa 10. Penalización lineal, no cuadrática. Eso significa que un outlier "lejano" no domina al resto.
IQR: el ancho del 50% central
Ordenás los datos, descartás el 25% más bajo y el 25% más alto, y mirás el ancho de lo que queda en el medio. Es la base del boxplot:
Como solo mira los percentiles 25 y 75, los valores extremos del 25% más bajo y el 25% más alto no influyen para nada en el IQR. Es el más robusto de los tres.
Varianza: cuando los outliers son importantes y los querés penalizar (control de calidad crítico, detección de anomalías donde lo raro es el dato que importa). MAD/IQR: cuando los outliers son ruido que tenés que ignorar (sensores con falla ocasional, datos crudos sin limpiar, encuestas con respuestas extrañas).
Outlier = ruido (usá MAD o IQR)
Sensor de pH en celda de flotación: el sensor lee cada 5 segundos, casi siempre alrededor de pH 10. Una vez por hora salta a pH 4 porque el electrodo se ensució y dio una lectura espuria.
Si calculás la varianza de las lecturas, esos saltos — que son falla del instrumento, no del proceso — te inflan el número. El operador va a creer que la celda está inestable cuando en realidad es el sensor el que falla.
Usa MAD o IQR — describen el comportamiento real de la celdaTiempo de ciclo de camiones mineros: 50 camiones operando, el tiempo de ciclo promedio es 35 minutos. Un camion se avería y queda parado 3 horas en la rampa. Si calculás varianza, ese camion solo distorsiona toda la flota.
Outlier = señal (usá varianza)
Detección de vetas ricas en muestreo: una serie de testigos da leyes entre 0.5% y 0.8% de Cu. De repente uno sale en 4.2%. Eso es exactamente lo que querés detectar: una zona anómala que puede ser una veta de alta ley.
Aquí el outlier no es ruido, es la información más valiosa. La varianza, que castiga fuerte ese valor, te ayuda a decir "esta zona se sale de lo normal, hay que investigarla".
Usa varianza — los outliers son justo lo que buscásTip práctico
Antes de elegir tu métrica, preguntáte: "¿mis outliers son fallas o son hallazgos?". Si son fallas, MAD/IQR. Si son hallazgos, varianza. Y si no estás seguro, reporta las tres — en minería la diferencia entre las tres medidas suele ser más informativa que cada una por separado.
9 Variante 3: cuando las escalas estorban (CV y Z-scores)
Imagina que tenés que comparar la dispersión de dos cosas con escalas distintas. Por ejemplo: las alturas de unas piezas medidas en centímetros y las mismas alturas medidas en metros. Las medidas son fisicamente equivalentes — solo cambia la unidad. Pero la varianza te va a dar números completamente distintos:
El razonamiento: la dispersión fí>sicamente es la misma. Lo único que cambió fue la unidad. La varianza no entendió eso (los números se ven distintos), pero el coeficiente de variación sí — porque divide entre la media, cancelando las unidades.
Coeficiente de variación (CV): un número sin unidades
Un CV de 0.1 significa "la dispersión es el 10% de la media". Podés comparar variables completamente distintas en igualdad de condiciones: la variabilidad del precio del cobre vs la del peso de tornillos vs la del tiempo de respuesta de un servidor — todas usando el mismo número limpio.
Z-scores: cuántas desviaciones estás lejos de la media
El Z-score reemplaza cada valor por "cuántas desviaciones está>ndar arriba o abajo de la media está". Fórmula:
Tras estandarizar, todas las variables tienen media 0 y desviación 1. Eso las pone en pie de igualdad. Es el paso 0 obligatorio antes de meter datos en muchos modelos de IA: regresión lineal, redes neuronales, PCA, k-means — todos asumen que las variables están en escalas comparables, y la estandarización se las garantiza.
Si entrenás una red neuronal con una variable que va de 0 a 1 y otra que va de 0 a 1,000,000, la red va a "creer" que la segunda variable es millones de veces más importante — cuando en realidad solo tiene una escala distinta. Estandarizar (z-score) o normalizar (min-max) elimina ese sesgo y hace que el optimizador converja mucho más rápido.
Comparar variabilidad de leyes entre yacimientos
Un yacimiento de cobre te da leyes promedio de 0.7% Cu con σ = 0.15%. Otro yacimiento de oro te da leyes promedio de 1.2 g/t Au con σ = 0.4 g/t. ¿Cuál es más variable?
No podés comparar las desviaciones directamente porque las unidades son distintas (% vs g/t). El CV resuelve esto:
- CV cobre = 0.15 / 0.7 = 0.214 (21.4% de variación relativa)
- CV oro = 0.4 / 1.2 = 0.333 (33.3% de variación relativa)
El yacimiento de oro es relativamente más variable, aunque su σ absoluta sea más alta. Eso impacta directamente al plan minero: con más CV te conviene un control de leyes más fino, más muestras de bloque y posiblemente un sistema de mezcla (blending) para suavizar.
Modelo predictivo de calidad de concentrado
Querés entrenar un modelo de IA que prediga la ley del concentrado en función de variables operacionales:
- pH celda: rango 9 a 11
- Flujo aire: rango 200 a 800 Nm³/h
- Presión hidrociclones: rango 60 a 90 kPa
- Tonelaje alimentación: rango 8000 a 15000 t/h
Si meterís estas variables crudas a la red, el tonelaje (con valores de miles) va a dominar el entrenamiento simplemente porque sus números son grandes — no porque sea más importante. Con z-score todas pasan a tener media 0 y desviación 1, en igualdad de condiciones. Ahi la red puede aprender cuál realmente importa.
Z-score = paso obligatorio antes de cualquier modelo de IA con variables mixtasTip práctico
Cuando entregues un reporte de variabilidad a gerencia, no entregues solo σ. Da también el CV. Un gerente que ve "σ = 0.15" no sabe si es mucho o poco; ve "CV = 21%" y entiende inmediatamente que la veta tiene una dispersión moderada.
+ Más parientes del concepto
La varianza tiene una familia extendida. Los principales:
Varianza ponderadaVer▾
Cuando algunos datos pesan más que otros (porque algunos sensores son más confiables, o algunas observaciones son más frecuentes). Cada distancia al cuadrado se multiplica por un peso wi antes de sumar, y se divide entre la suma de los pesos. Es la forma natural de la varianza cuando los datos no son homogéneos.
Varianza condicional (preview de la lección bayesiana)Ver▾
La varianza de X "dado que ya conozco Y". Suele ser más chica que la varianza incondicional — conocer Y te quita incertidumbre sobre X. Esta idea es el corazón de la inferencia bayesiana y de los procesos gaussianos.
Varianza explicada R2 (preview de regresión)Ver▾
Cuando ajustás un modelo de regresión a unos datos, una parte de la varianza original queda "explicada" por el modelo y otra queda como error residual. R2 es la fracción explicada: vale entre 0 (el modelo no aporta nada) y 1 (el modelo explica perfectamente la varianza). Se usa en cualquier regresión y en muchos métodos de selección de variables.
Desigualdad de Chebyshev (límite universal)Ver▾
Para cualquier distribución (no solo la normal), al menos 1 − 1/k2 de los datos cae dentro de k desviaciones estándar de la media. Es un límite muy conservador pero universal: aunque no sepas qué distribución tienen tus datos, Chebyshev te garantiza un mínimo. Para k=2 da 75%; para k=3 da 89%. Compará con el 95% y 99.7% de la normal — la normal es mucho más "compacta".
Ver el código en Python: cinco snippets, de lo más simple a lo más avanzado Click para abrir
Empezamos con la varianza pura sin librerías, y vamos sumando capas hasta llegar a la versión robusta y a la visualización con matplotlib.
1. La fórmula básica, sin librerías. Solo Python puro:
datos = [2.10, 2.40, 2.60, 2.90, 3.00] n = len(datos) media = sum(datos) / n varianza = sum((x - media) ** 2 for x in datos) / n desv_estandar = varianza ** 0.5 print("media:", round(media, 3)) print("varianza:", round(varianza, 4)) print("desviacion estandar:", round(desv_estandar, 4))
2. Versión con numpy. Mismo resultado, mucho más corto. Y aparece la diferencia muestral vs poblacional:
import numpy as np datos = np.array([2.10, 2.40, 2.60, 2.90, 3.00]) # ddof=0 (por defecto): poblacional, divide entre n var_pob = np.var(datos) # ddof=1: muestral, divide entre n-1 (correccion de Bessel) var_mues = np.var(datos, ddof=1) print("Varianza poblacional:", round(var_pob, 4)) print("Varianza muestral:", round(var_mues, 4)) print("Diferencia (%):", round(100 * (var_mues - var_pob) / var_pob, 2))
3. Comparación con alternativas robustas. Vemos qué pasa con un outlier:
import numpy as np from scipy.stats import iqr datos_limpios = np.array([2.10, 2.40, 2.60, 2.90, 3.00]) datos_con_outlier = np.append(datos_limpios, 10.0) def resumen(arr, etiqueta): print(etiqueta) print(" varianza:", round(np.var(arr), 3)) mad = np.median(np.abs(arr - np.median(arr))) print(" MAD:", round(mad, 3)) print(" IQR:", round(iqr(arr), 3)) resumen(datos_limpios, "Datos limpios:") print() resumen(datos_con_outlier, "Con outlier (10.0):") # La varianza explota; MAD e IQR casi no se mueven.
4. Estandarización (Z-scores) y CV. Adimensionalizamos:
import numpy as np # Dos series, escalas distintas, misma dispersion relativa en_cm = np.array([100, 102, 98, 101, 99]) en_metros = en_cm / 100.0 # Coeficiente de variacion cv_cm = np.std(en_cm) / np.mean(en_cm) cv_m = np.std(en_metros) / np.mean(en_metros) print("CV en cm:", round(cv_cm, 5)) print("CV en m: ", round(cv_m, 5)) # iguales: CV es adimensional # Z-scores z = (en_cm - en_cm.mean()) / en_cm.std() print("Z-scores:", np.round(z, 2)) print("Media de z:", round(z.mean(), 4), " std de z:", round(z.std(), 4))
5. La varianza dibujada como cuadrados (matplotlib). Es la versión código del sandbox de arriba:
import numpy as np import matplotlib.pyplot as plt datos = np.array([2.10, 2.40, 2.60, 2.90, 3.00]) mu = datos.mean() var = datos.var() fig, ax = plt.subplots(figsize=(9, 4.5)) for i, x in enumerate(datos): side = abs(x - mu) # cuadrado anclado en (i+1, min(x, mu)) con lado = distancia ax.add_patch(plt.Rectangle((i + 1.05, min(x, mu)), side, side, facecolor="orange", alpha=0.4, edgecolor="orange", linewidth=2)) ax.plot(i + 1, x, "o", color="navy", markersize=12, zorder=3) ax.text(i + 1, x + 0.05, f"S{i+1}", ha="center", fontsize=9) ax.axhline(mu, color="cyan", linestyle="--", linewidth=2, label=f"mu = {mu:.2f}") ax.set_xlim(0.5, 6); ax.set_ylim(1.5, 4) ax.set_xticks(range(1, 6)) ax.set_ylabel("valor") ax.set_title(f"Varianza visual: promedio del area = {var:.3f}") ax.legend(loc="upper left") ax.grid(True, alpha=0.3) plt.show()
10 Pregunta de chequeo
Si las 5 muestras tuvieran exactamente el mismo valor, ¿cuanto vale la varianza?
La varianza nos dice como se mueve una variable. Pero en datos reales casi siempre queremos saber como dos variables se mueven juntas. Esa puerta nos lleva a la covarianza y correlacion.
Registrate al boletin MathPlay
De la idea al laboratorio que funciona: datos, simulacion, visualizacion, IA y tecnologia aplicada a problemas reales de industria y mineria. Te escribo cuando hay algo nuevo que vale la pena compartir.
Sin calendario fijo. Sin spam.
Listo. Te escribo cuando haya algo nuevo.
