UISH

Urban Intelligence Science Hub for City Network

Funciones de escalado

Para qué sirven las funciones de escalado

En el panel de Validación cada índice estadístico contribuye a una puntuación sintética mediante una media ponderada. El problema es que los índices no varían linealmente en significado: pasar de \(R=0{,}90\) a \(R=0{,}95\) es un salto de calidad mucho mayor que de \(0{,}50\) a \(0{,}55\). Una función de escalado remodela la «bondad» del índice antes de ponderarlo, de modo que la puntuación refleje mejor el mérito real.

El cálculo se hace en dos etapas:

  1. Bruto → bondad \([0,1]\): el índice se orienta y se normaliza (1 = óptimo).
  2. Bondad → bondad: la función de escalado \(g\) remodela el valor. Con extremos fijos \(g(0)=0\), \(g(1)=1\) el peso sigue siendo el techo de la contribución y la suma de los pesos sigue dando 100.

La función predeterminada es la lineal \(g(x)=x\): mientras no se asigne otra curva, la puntuación es idéntica a la «clásica».

La dependencia de los extremos

Qué curvas tienen sentido para un índice depende de su dominio teórico (mínimo, máximo) y del valor óptimo. Si un extremo está en el infinito no se puede «reescalar linealmente»: hace falta una función asintótica. De ahí las cuatro clases:

ClaseCuándoVariableÍndices típicos
finitoambos extremos finitos\(x\in[0,1]\) (bondad ya normalizada)R, R², Spearman, IOA, POD, CSI, FAR
colaun extremo en \(\infty\), el óptimo en el extremo finito\(u=|val-target|/s\)RMSE, MAE, CRMSE, NME, KGE, NSE, HSS
dos colasóptimo interior + al menos un extremo en \(\infty\)\(d=(val-target)/s\)MB, NMB, std_ratio
saturantemejor = \(+\infty\)\(u=val/s\)MI (información mutua)

La escala \(s\) de las asintóticas es el error «característico» respecto del cual juzgar el índice. Para los que están en unidades físicas (RMSE, CRMSE, MAE, MB) es la referencia RMSE/MAE elegida en el panel: la mediana observada de la estación en cuestión, o el valor límite de la OMS o de una de las dos directivas europeas. Para los índices porcentuales (NMB, NME, MFB, MFE) es el 100%; para los adimensionales (\(\sigma_m/\sigma_o\), KGE, NSE, HSS, información mutua) es 1. Así \(u=1\) significa «error igual a una escala característica».

La escala de la segunda etapa es la misma que normaliza la primera, y no es un detalle de conveniencia: si difirieran, cambiar la curva de lineal a asintótica cambiaría también el rasero, y las puntuaciones de las dos configuraciones ya no serían comparables. Cambiar la referencia, en cambio, desplaza el rasero de ambas etapas a la vez — y es el motivo por el que el selector actúa sobre toda la columna de las puntuaciones, no solo sobre la lineal.

Familias de funciones (interactivas)

La línea azul es la curva; la diagonal discontinua (donde la hay) es la referencia lineal. Arrastre los deslizadores para ver cómo cambia.

Dominio finito — \(x\in[0,1]\)
Lineal predeterminada

\( g(x)=x \)

Ninguna deformación: comportamiento clásico.

Potencia

\( g(x)=x^{\gamma} \)

\(\gamma>1\) premia solo la excelencia; \(\gamma<1\) valora el «salir del fondo».

Exponencial (énfasis)

\( g(x)=\dfrac{e^{kx}-1}{e^{k}-1} \)

Enfatiza la cima (\(k>0\)) o el fondo (\(k<0\)) de forma marcada.

Logarítmica

\( g(x)=\dfrac{\ln(1+kx)}{\ln(1+k)} \)

Rendimientos decrecientes: premia las primeras mejoras.

Logística (umbral)

\( g(x)=\dfrac{1}{1+e^{-k(x-x_0)}} \)

Curva en S en torno a un umbral \(x_0\): «bueno / no bueno».

Asintóticas de una cola — \(u=|val-target|/s\)
Racional

\( g(u)=\dfrac{1}{1+u} \)

Asíntota en 0, cola lenta: penaliza poco los valores atípicos.

Racional cuadrática

\( g(u)=\dfrac{1}{1+u^{2}} \)

Buen compromiso: \(u=1\Rightarrow 0{,}5\). Recomendada por defecto para los errores.

Exponencial

\( g(u)=e^{-u} \)

Cola rápida: penaliza con fuerza los errores grandes.

Hill

\( g(u)=\dfrac{1}{1+u^{n}} \)

Umbral suave ajustable con \(n\).

Tangente hiperbólica

\( g(u)=1-\tanh(u) \)

Decaimiento abrupto con asíntota en 0.

Exponencial estirada (Kohlrausch)

\( g(u)=e^{-u^{\beta}} \)

Generaliza la exponencial (\(\beta=1\)): \(\beta<1\) alarga la cola, \(\beta>1\) la acorta.

Saturante — \(u=val/s\)
Saturante

\( g(u)=\dfrac{u}{1+u} \)

Crece y satura en 1: para los índices en los que «más grande es mejor» (MI).

Asintóticas de dos colas — \(d=(val-target)/s\)
Gaussiana

\( g(d)=e^{-d^{2}} \)

Campana simétrica, suave cerca del óptimo.

Lorentziana

\( g(d)=\dfrac{1}{1+d^{2}} \)

Como la gaussiana pero con colas más «gruesas».

Secante hiperbólica al cuadrado

\( g(d)=1-\tanh^{2}(d) \)

Campana con colas exponenciales.

Tangente hiperbólica (con signo)

\( g(d)=\tanh(d) \)

Penalización asimétrica. La curva se dibuja en todo \([-1,1]\), pero en la puntuación la bondad vive en \([0,1]\): la rama negativa se anula. Sirve cuando una desviación en un sentido es tolerable y en el otro no (por ejemplo una subestimación que penalizar y una sobrestimación que ignorar), no para llevar un valor con signo a la media ponderada — que, al ser una media de bondades, un negativo la haría no interpretable.

Qué función para qué índice

Directrices (la lineal siempre se admite como predeterminada):

ÍndiceDominioFunciones adecuadasSugerida
R, R², Spearman, IOAfinitopotencia, logística, exponencialpotencia \(\gamma\approx2\) (premia los valores altos)
POD, CSIfinitopotencia, logísticalogística (umbral operativo)
FARfinitopotencia, logísticapotencia
RMSE, MAE, CRMSE, NMEcolaracional, racional², exponencial, Hill, \(1-\tanh\)racional² (\(u=1\Rightarrow0{,}5\))
KGE, NSE, HSScola (sobre \(1-val\))racional, exponencialracional²
MB, NMBdos colasgaussiana, lorentziana, sech²gaussiana
std_ratiodos colas (óptimo 1)gaussiana, lorentzianagaussiana
MIsaturantesaturante\(u/(1+u)\)

La curva elegida para cada par (contaminante×índice) se establece en el panel de Validación, en el panel de los pesos. El detalle técnico (tabla tbl_weight_func, analizador) está en la Panorámica técnica.

Keywords: funciones de escalado, pesos, índices estadísticos, puntuación, validación

Moreno Comelli, Ugo Cortesi, Valentina Colcelli & Alessandra Langella, CNR-IFAC, 2022-2026


Code & Design by CNR-IFAC - Core by PortLab