Leccion · Modulo 1 · Estadistica para IA

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.

Mate MathPlay · Leccion 1.1 · Estadistica para modelos

5 minutosInteractivoVisualCon Python

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:

S1 2.10S2 2.40S3 2.60S4 2.90S5 3.00

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:

μ = (2.10 + 2.40 + 2.60 + 2.90 + 3.00) / 5 = 2.60
3.53.02.52.0 μ=2.60 2.10S1 2.40S2 2.60S3 2.90S4 3.00S5

3 Segundo paso: distancia a la media

Para cada muestra calculamos x - μ. Eso mide que tan lejos esta cada dato del centro:

Muestraxx - μ
S12.10-0.50
S22.40-0.20
S32.600.00
S42.90+0.30
S53.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 - μ)².

μ 0.25S1 0.04S2 S3(0) 0.09S4 0.16S5
¿Por que cuadrados?

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.25 + 0.04 + 0.00 + 0.09 + 0.16
= 0.54
÷ 5
0.108
area promedio
varianza σ²
0.25
S1
+
0.04
S2
+
0
S3
+
0.09
S4
+
0.16
S5
÷ 5 =
0.108
area promedio
varianza σ²
Sumar cuadrados y dividirlos entre la cantidad de datos.
σ2 = (0.25 + 0.04 + 0.00 + 0.09 + 0.16) / 5 = 0.108

El numero 0.108 esta en unidades cuadradas, por ejemplo (% de pureza)². Para volver a la unidad original tomamos raiz cuadrada:

σ = √0.108 ≈ 0.329

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.

Media (μ)
2.60
unidad
Varianza (σ2)
0.108
unidad²
Desv. estandar (σ)
0.329
unidad

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.

σ2poblacional = Σ(x − μ)2 / n       s2muestral = Σ(x − μ)2 / (n − 1)

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.

La diferencia entre dividir por n y por n-1 se achica al crecer n 0 0.5 1.0 1.5 2.0x factor 1.0x = no hay diferencia poblacional (n) muestral (n-1) n = 2 2.00x mas n = 5 1.25x mas n = 20 1.05x mas n = 100 1.01x mas

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.

El detalle que confunde

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.

Caso aplicado · muestreo de testigos

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á siempre ddof=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.

Aquí da lo mismo — ganá tiempo no discutiendo cuál

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:

Sin outlier (5 muestras limpias) Con outlier (sumamos un 10.0) Varianza 0.108 10.79 — explota 100x MAD 0.30 0.45 (apenas crece) IQR 0.50 0.62 (crece poco) La varianza reaccionó explosivamente al outlier. MAD e IQR apenas se inmutaron — siguen describiendo la masa central de datos.

MAD: el primo lineal de la varianza

En vez de elevar al cuadrado, ponés las distancias en valor absoluto. La fórmula:

MAD = mediana(|x − mediana(x)|)

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:

mín Q1 (25%) mediana Q3 (75%) máx IQR = Q3 − Q1

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.

Cuándo elegir cada una

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

Caso aplicado · cuándo el outlier es ruido y cuándo es la señal

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 celda

Tiempo 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ás

Tip 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:

Mismas piezas en cm Mismas piezas en metros 98 100 102 Varianza = 2.5 cm² CV = 0.0157 ← igual que el otro 0.98 1.00 1.02 Varianza = 0.00025 m² CV = 0.0157 ← igual que el otro

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

CV = σ / μ

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:

z = (x − μ) / σ
Antes (valores originales) Después (Z-scores) 98 μ=100 102 media = 100, std = 1.58 -1.26 z=0 +1.26 media = 0, std = 1 (siempre)

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.

Por qué importa para IA

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.

Caso aplicado · comparar dispersión entre variables incompatibles

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.

CV es la métrica para comparar dispersión entre cosas con escalas distintas

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 mixtas

Tip 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:

01_varianza_basica.pyPYTHON
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:

02_varianza_numpy.pyPYTHON
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:

03_varianza_robusta.pyPYTHON
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:

04_estandarizacion.pyPYTHON
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:

05_varianza_visual.pyPYTHON
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?

Proxima leccion

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.

LinkedIn WhatsApp

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.

CB
Mg. Ing. Cesar Bobadilla
Ingeniero consultor & docente · Peru

Desarrollo tecnologia aplicada a industria y mineria, y enseno a convertir datos, prototipos e inteligencia artificial en decisiones utiles. MathPlay conecta matematica, programacion, visualizacion y casos reales de operacion.

Donde publico
← Volver al moduloSiguiente: covarianza y correlacion →Mate MathPlay