(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo calcular la desviación estándar ponderada en DAX: paso a paso

João Barros 06 de October de 2026 3 min de lectura

Calcular la desviación estándar ponderada en DAX permite evaluar la dispersión de una variable cuando cada observación tiene un peso distinto — por ejemplo, precios con volúmenes de venta diferentes o valoraciones con distintos números de respuestas. Utilizar pesos hace la medida más representativa: una observación con gran volumen debe influir más en la media y la dispersión que una observación con un peso insignificante. Esta técnica evita sesgos causados por tratar todas las observaciones como igualmente relevantes.

Prerequisitos

  • Power BI Desktop u otra herramienta que soporte DAX.
  • Tabla de hechos con columnas: Value (valor a analizar) y Weight (peso, p. ej.: cantidad o ventas). Ejemplo mínimo: 6–10 filas de muestra para probar.
  • Tabla de fechas o contexto temporal opcional para aplicar filtros por mes/año.

Recomendaciones prácticas: garantiza que los pesos son no negativos (los pesos negativos requieren interpretación estadística específica) y que no existan muchos valores en blanco. Si la tabla tiene millones de filas, prueba en una muestra antes de aplicar la lógica al conjunto de datos completo.

Paso 1: Entender la fórmula de la desviación estándar ponderada

Antes de escribir DAX, comprende la fórmula matemática. Para observaciones xi con pesos wi, la media ponderada es:

weighted_mean = (Σ wi * xi) / (Σ wi)

La varianza ponderada (poblacional) se define normalmente como:

weighted_variance = (Σ wi * (xi - weighted_mean)^2) / (Σ wi)

Si necesitas una corrección muestral (equivalente a n-1), ajusta el denominador — por ejemplo, (Σ wi - 1) — pero esto puede ser controvertido cuando los pesos no son recuentos enteros. En análisis de negocio muchos informes usan la versión poblacional porque los pesos representan totales observados (p. ej.: unidades vendidas) y no muestras aleatorias.

Paso 2: Crear la medida de la media ponderada

Crea primero la media ponderada porque es necesaria para la varianza. Suponiendo la tabla Sales con Value y Weight, la medida es:

Weighted Mean =
VAR SumWeights = SUM(Sales[Weight])
VAR SumWeightedValues = SUMX(Sales, Sales[Value] * Sales[Weight])
RETURN
DIVIDE(SumWeightedValues, SumWeights)

Ejemplo concreto: si tienes tres filas con (Value, Weight) = (10,1), (20,2), (30,3), entonces SumWeightedValues = 10*1 + 20*2 + 30*3 = 140 y SumWeights = 6, resultando en Weighted Mean = 23.3333. Usa DIVIDE para evitar errores si SumWeights es cero.

Paso 3: Calcular la varianza ponderada

Con la media ponderada disponible, calcula la varianza haciendo SUMX de las diferencias al cuadrado ponderadas por Weight y divide por la suma de los pesos. La medida poblacional en DAX es:

Weighted Variance =
VAR Mean = [Weighted Mean]
VAR SumWeights = SUM(Sales[Weight])
VAR SumWeightedSq =
    SUMX(
        Sales,
        Sales[Weight] * (Sales[Value] - Mean) * (Sales[Value] - Mean)
    )
RETURN
IF(SumWeights = 0, BLANK(), DIVIDE(SumWeightedSq, SumWeights))

Volviendo al ejemplo: las diferencias al cuadrado ponderadas serían ≈ 177.78, 22.22 y 133.33; suma ≈ 333.33; dividiendo por 6 obtienes variance ≈ 55.5556.

Paso 4: Crear la medida de la desviación estándar ponderada

La medida de la desviación estándar es la raíz cuadrada de la varianza ponderada. En DAX:

Weighted StdDev =
VAR Var = [Weighted Variance]
RETURN
IF(ISBLANK(Var), BLANK(), SQRT(Var))

En el ejemplo, SQRT(55.5556) ≈ 7.4536. Este valor indica la dispersión media de las observaciones cuando cada una se pondera por su respectivo peso.

Paso 5: Ajuste para muestra (opcional)

Si necesitas una corrección muestral, puedes usar:

Weighted Variance Sample =
VAR Mean = [Weighted Mean]
VAR SumWeights = SUM(Sales[Weight])
VAR SumWeightedSq =
    SUMX(Sales, Sales[Weight] * (Sales[Value] - Mean) * (Sales[Value] - Mean))
RETURN
IF(SumWeights <= 1, BLANK(), DIVIDE(SumWeightedSq, SumWeights - 1))

Este enfoque funciona bien cuando los pesos representan recuentos enteros. Si los pesos son ponderaciones continuas, considera la interpretación estadística antes de restar 1. En conjuntos de datos grandes, la diferencia entre usar Σ wi o Σ wi - 1 suele ser pequeña.

Verificar el resultado

Para validar las medidas: 1) crea una tabla visual con Value, Weight y las medidas [Weighted Mean] y [Weighted StdDev]; 2) calcula manualmente para un pequeño conjunto (como el ejemplo de tres filas arriba) o utiliza Excel/Python para duplicar el cálculo (en Python: numpy.average con weights y cálculo manual de la varianza); 3) prueba filtros/contextos (por producto, por mes) y verifica si las medidas responden correctamente.

Consejo práctico: copia 10–20 filas a un archivo Excel y calcula la media y desviación con fórmulas manuales para comparar. Si obtienes divergencias, confirma si existen pesos nulos, valores en blanco o filas duplicadas introducidas por las relaciones entre tablas.

Conclusión

Con estas medidas tienes una forma robusta de calcular la desviación estándar ponderada en DAX, adecuada a varios escenarios de negocio. Siguientes pasos sensatos: probar el rendimiento en tablas grandes (SUMX es un iterador — para millones de filas considera hacer agregaciones precalculadas), documentar la interpretación de los pesos y decidir entre versión poblacional o muestral. Verifica siempre divisiones por cero y prueba con filtros variados para garantizar el comportamiento esperado en los informes.