Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

B6 · Mínimos cuadrados: ajustar modelos a medidas

Universidad de Burgos

Binder Open In Colab

Objetivos de aprendizaje

  • Plantear el ajuste de un modelo lineal a unas medidas como un sistema sobredeterminado y resolverlo con las ecuaciones normales ATA x=ATb\mathbf{A}^{\mathsf T}\mathbf{A}\,\mathbf{x} = \mathbf{A}^{\mathsf T}\mathbf{b}.

  • Interpretar los residuos de un ajuste: distinguir el ruido de un modelo inadecuado.

  • Estimar los parámetros de un modelo de electrodo a partir de medidas de impedancia con ruido.

  • Reconocer cuándo un ajuste necesita pesos, un cambio de escala o un modelo mejor.

Teoría: Volumen I, Anexo B (sistemas lineales) y Anexo A (impedancia compleja) (Miguel-Medina, 2026). Tiempo: ~2 h

Idea clave

En los cuadernos anteriores conocías los componentes y calculabas tensiones. En el laboratorio ocurre lo contrario: mides tensiones, corrientes o impedancias y quieres saber qué componentes las explican. Es el problema inverso.

Si el modelo es lineal en los parámetros desconocidos x\mathbf{x}, cada medida da una ecuación, y todas juntas forman un sistema A x=b\mathbf{A}\,\mathbf{x} = \mathbf{b}. Pero ahora hay más ecuaciones que incógnitas y, como las medidas tienen ruido, ninguna x\mathbf{x} las cumple todas. Se busca la que menos se equivoca: la que hace mínima la suma de los cuadrados de los residuos r=b−A x\mathbf{r} = \mathbf{b} - \mathbf{A}\,\mathbf{x}.

Esa x\mathbf{x} es la solución de un sistema cuadrado, de los que ya sabes resolver, llamado de ecuaciones normales:

ATA x=ATb\mathbf{A}^{\mathsf T}\mathbf{A}\,\mathbf{x} = \mathbf{A}^{\mathsf T}\mathbf{b}

Primer ajuste: medir una resistencia

Para medir una resistencia se hace pasar por ella una corriente conocida y se mide la tensión. Se repite con veinte corrientes distintas. El voltímetro tiene ruido y, además, un pequeño error de cero que no conocemos. El modelo es

V=R I+V0V = R\,I + V_0

con dos parámetros desconocidos: RR y V0V_0. Las «medidas» se generan aquí con valores que el ajuste no conoce.

<Figure size 704x440 with 1 Axes>

1. Predice

  1. Hay veinte ecuaciones y dos incógnitas. ¿Existe algún par (RR, V0V_0) que cumpla las veinte a la vez?

  2. Podrías calcular RR con solo dos medidas, la primera y la última. ¿Por qué no es buena idea?

  3. Después del ajuste, ¿cuánto esperas que valga la suma de los veinte residuos: cero, un valor positivo o depende del ruido?

Tu predicción:

2. Ejecuta y explora

2.1 Las ecuaciones normales

Cada medida es una fila: R Ik+V0⋅1=VkR\,I_k + V_0 \cdot 1 = V_k. La matriz A\mathbf{A} tiene una columna por parámetro.

Tamaño de A: (20, 2)
R  = 2173.5 Ω   (real: 2200.0 Ω)
V0 = 0.194 V   (real: 0.150 V)
¿Coincide con np.linalg.lstsq? True

np.linalg.lstsq resuelve el mismo problema por otro camino, numéricamente más robusto; más abajo verás por qué importa.

Lo que el modelo no explica son los residuos. Mirarlos es la parte más importante de cualquier ajuste.

<Figure size 704x616 with 2 Axes>
A^T · r = [2.78423118e-16 3.68594044e-14]
Desviación típica de los residuos: 0.227 V (ruido real: 0.3 V)

Tres observaciones:

  • Los residuos no tienen estructura: suben y bajan sin patrón. Es la firma de un modelo adecuado con medidas ruidosas.

  • ATr=0\mathbf{A}^{\mathsf T}\mathbf{r} = \mathbf{0}, salvo redondeo. Eso es exactamente lo que dicen las ecuaciones normales: el residuo es perpendicular a todas las columnas de A\mathbf{A}. La segunda columna es de unos, así que la suma de los residuos es cero.

  • La dispersión de los residuos estima el ruido del instrumento, que el ajuste tampoco conocía.

2.2 Hilo biomédico: los parámetros de un electrodo

La interfaz entre un electrodo y la piel se modela, a primera aproximación, como una resistencia RpR_p en paralelo con una capacidad CpC_p (cuaderno B4). No se pueden medir por separado con un polímetro: lo que se mide es la impedancia compleja ZZ del conjunto a varias frecuencias.

El modelo es lineal si se mira la admitancia Y=1/ZY = 1/Z:

Y=1Rp+jωCp⟹Re⁡(Y)=Gp,Im⁡(Y)=ω CpY = \frac{1}{R_p} + j\omega C_p \qquad\Longrightarrow\qquad \operatorname{Re}(Y) = G_p, \quad \operatorname{Im}(Y) = \omega\,C_p

Cada frecuencia da dos ecuaciones reales, y las incógnitas son Gp=1/RpG_p = 1/R_p y CpC_p. Generamos treinta medidas entre 1 Hz y 10 kHz con un error aleatorio del 2 %.

Rp = 42.57 kΩ   (real: 50.00 kΩ)
Cp = 98.86 nF   (real: 100.00 nF)

La capacidad sale con un error de alrededor del 1 %; la resistencia, con uno más de diez veces mayor. Antes de dar el resultado por malo, mira los residuos de las ecuaciones de la parte real, que son las que determinan RpR_p.

<Figure size 704x440 with 1 Axes>

Los residuos crecen con la frecuencia hasta ser mucho mayores que el propio valor que se busca, Gp=20G_p = 20 µS. La causa: el error de medida es del 2 % de la admitancia, y a alta frecuencia la admitancia es enorme porque domina el condensador. Mínimos cuadrados da el mismo peso a todas las ecuaciones, así que unas pocas medidas muy ruidosas deciden el resultado.

El remedio es decirle al ajuste cuánto fiarse de cada ecuación: dividir cada una por el tamaño esperado de su error. Aquí el error es proporcional a ∣Y∣|Y|, así que cada fila se multiplica por el peso 1/∣Yk∣1/|Y_k|.

Rp = 49.56 kΩ   (real: 50.00 kΩ)
Cp = 100.04 nF   (real: 100.00 nF)

Mínimos cuadrados minimiza exactamente lo que se le pide. Si las ecuaciones no tienen todas la misma fiabilidad, hay que decírselo.

2.3 Un modelo más realista: tres parámetros

Entre el electrodo y el amplificador hay además una resistencia en serie RsR_s (el gel, el tejido). El modelo completo es

Z=Rs+Rp1+jωτ,τ=RpCpZ = R_s + \frac{R_p}{1 + j\omega\tau}, \qquad \tau = R_p C_p

y ya no es lineal en los parámetros, ni en impedancia ni en admitancia. Pero se puede linealizar: multiplicando por 1+jωτ1 + j\omega\tau y reordenando,

Z=(Rs+Rp)⏟a+jω Rsτ⏟b−jωZ τ⏟cZ = \underbrace{(R_s + R_p)}_{a} + j\omega\,\underbrace{R_s\tau}_{b} - j\omega Z\,\underbrace{\tau}_{c}

La impedancia medida aparece también a la derecha, multiplicando a una incógnita. No importa: es un dato. El sistema es lineal en aa, bb y cc, y de ellos se despejan Rs=b/cR_s = b/c, Rp=a−RsR_p = a - R_s y Cp=c/RpC_p = c/R_p. Separando parte real e imaginaria (Z=Z′+jZ′′Z = Z' + jZ''):

Z′=a+ωZ′′ cZ′′=ω b−ωZ′ cZ' = a + \omega Z''\,c \qquad\qquad Z'' = \omega\,b - \omega Z'\,c

Antes de resolver, una comprobación heredada del cuaderno B5: el número de condición.

Número de condición de A:      1.3e+08
Número de condición de A^T·A:  1.8e+16
Inverso de la precisión de la máquina: 4.5e+15

Tamaño de las columnas: [6.32455532e+00 9.40940414e+05 4.74721625e+08]
Número de condición de A escalada:     31.1

Las ecuaciones normales elevan al cuadrado el número de condición: κ(ATA)=κ(A)2\kappa(\mathbf{A}^{\mathsf T}\mathbf{A}) = \kappa(\mathbf{A})^2. Aquí el resultado roza el límite de la doble precisión, donde ya no queda ninguna cifra fiable. Por eso las bibliotecas numéricas no resuelven las ecuaciones normales, sino que trabajan directamente con A\mathbf{A}.

El mal condicionamiento viene de las unidades: una columna vale 1, otra es del orden de 105 y la tercera, de 109. Dividir cada columna por su tamaño (equivale a cambiar las unidades de las incógnitas) lo arregla sin cambiar el problema. La función de ajuste hace las dos cosas: escala y usa lstsq.

Rs = 501.2 Ω     (real: 500.0 Ω)
Rp = 47.52 kΩ   (real: 50.00 kΩ)
Cp = 96.71 nF   (real: 100.00 nF)

RsR_s sale muy bien; RpR_p y CpC_p quedan algo por debajo de su valor real. Si es casualidad o no, lo verás en el apartado 2.4.

La forma habitual de representar una impedancia en bioimpedancia es el diagrama de Nyquist: la parte imaginaria cambiada de signo frente a la parte real, con un punto por frecuencia. Una resistencia en paralelo con un condensador dibuja un semicírculo; la resistencia en serie lo desplaza hacia la derecha.

<Figure size 704x440 with 1 Axes>

2.4 ¿Cuánto me puedo fiar del resultado?

Un ajuste da un número, no su incertidumbre. La herramienta de B5 la proporciona: repetimos el experimento quinientas veces, cada una con un ruido distinto, y miramos cómo se reparten las estimaciones.

Ruido 1%: Rp = 49.25 ± 0.40 kΩ   (real: 50.00 kΩ)
Ruido 2%: Rp = 47.32 ± 1.30 kΩ   (real: 50.00 kΩ)
<Figure size 704x440 with 1 Axes>

Las estimaciones no solo se dispersan: se agrupan por debajo del valor real, y más cuanto mayor es el ruido. El estimador está sesgado. Es el precio del truco de la linealización: la impedancia medida, con su ruido, está también dentro de la matriz A\mathbf{A}, y mínimos cuadrados supone que el ruido solo está en b\mathbf{b}.

Medir más frecuencias reduce la dispersión, pero no el sesgo. Por eso el ajuste lineal se usa a menudo como punto de partida de un ajuste no lineal, que trabaja con el modelo sin transformar.

2.5 Cuando el modelo no es el adecuado

Los tejidos y los electrodos reales no dibujan un semicírculo perfecto, sino un arco achatado. El modelo de Cole Cole & Cole, 1941 lo describe con un parámetro más, α\alpha:

Z=R∞+R0−R∞1+(jωτ)αZ = R_\infty + \frac{R_0 - R_\infty}{1 + (j\omega\tau)^{\alpha}}

Con α=1\alpha = 1 es exactamente nuestro modelo (R∞=RsR_\infty = R_s, R0=Rs+RpR_0 = R_s + R_p). Generamos medidas con α=0,8\alpha = 0{,}8 y con muy poco ruido, y las ajustamos con el modelo de tres parámetros, que supone α=1\alpha = 1.

<Figure size 990x418 with 2 Axes>
Rp ajustada: 31.7 kΩ (real: 50.0 kΩ)

Compara estos residuos con los del apartado 2.1. Aquí tienen estructura: describen una curva suave y cambian de signo de forma ordenada. No es ruido: es la parte de las medidas que el modelo no puede reproducir. Ningún número de medidas adicionales lo arreglaría; hace falta un modelo mejor.

Leer los residuos es la manera de distinguir los dos problemas: residuos sin estructura indican ruido; residuos con estructura, un modelo inadecuado. El modelo de Cole no es lineal en α\alpha, así que ajustarlo requiere mínimos cuadrados no lineales, que es el reto de los ejercicios.

3. Explica

  1. En las ecuaciones normales, ATr=0\mathbf{A}^{\mathsf T}\mathbf{r} = \mathbf{0}. ¿Qué significa geométricamente? ¿Por qué garantiza que la suma de los residuos del primer ajuste sea cero?

  2. En el apartado 2.2, antes de usar pesos, CpC_p salía bien y RpR_p no. ¿Por qué el mismo ruido afecta tan distinto a los dos parámetros?

  3. Cada parámetro del modelo de tres elementos se «ve» en una zona de frecuencias. ¿Dónde se ve RsR_s, dónde Rs+RpR_s + R_p y dónde CpC_p? Repite el ajuste midiendo solo hasta 1 kHz y explica qué parámetro empeora.

  4. Escalar las columnas de A\mathbf{A} reduce el número de condición de 108 a unas decenas sin cambiar la solución. ¿Qué relación tiene con el circuito mal condicionado del cuaderno B5?

  5. El histograma del apartado 2.4 muestra dispersión y sesgo. ¿Cuál de los dos se reduce promediando muchas medidas? ¿Cuál no, y por qué?

  6. Un compañero ajusta unas medidas reales de bioimpedancia con el modelo de tres parámetros y obtiene residuos pequeños pero en forma de onda. ¿Qué le dirías?

4. Ejercicios

  • Básico. Ajusta las medidas del primer apartado con el modelo V=R IV = R\,I, sin error de cero. Ahora A\mathbf{A} tiene una sola columna: escribe a mano la solución de las ecuaciones normales y comprueba que coincide con la de lstsq. ¿Cómo cambian RR y los residuos? ¿Siguen sumando cero?

  • Aplicación. La curva de calibración de un sensor se ajusta a menudo con un polinomio. Genera veinte puntos de y=1+2t−0,5 t2y = 1 + 2t - 0{,}5\,t^2 con tt entre 0 y 10 y un poco de ruido, y ajústalos con polinomios de grado 2, 5 y 10 construyendo tú la matriz (columnas 1,t,t2,…1, t, t^2, \dots).

    1. Calcula el número de condición de A\mathbf{A} y de ATA\mathbf{A}^{\mathsf T}\mathbf{A} en cada caso.

    2. Compara la solución de las ecuaciones normales con la de lstsq. ¿A partir de qué grado dejan de coincidir?

    3. Repite con tt reescalado al intervalo [−1,1][-1, 1]. ¿Qué cambia?

  • Reto biomédico. Ajusta el modelo de Cole completo a las medidas Z_cole.

    1. Escribe una función que devuelva el vector de residuos (parte real y parte imaginaria) para unos parámetros (Rs,Rp,Cp,α)(R_s, R_p, C_p, \alpha).

    2. Minimízala con scipy.optimize.least_squares, usando como punto de partida el resultado del ajuste lineal y α=1\alpha = 1.

    3. Compara los parámetros con los reales y representa los nuevos residuos. ¿Tienen estructura?

    4. La bioimpedancia se usa para estimar la composición corporal: R0R_0 se relaciona con el agua extracelular y R∞R_\infty, con el agua total. ¿Por qué interesa extrapolar esos dos valores con un modelo en lugar de medirlos directamente a frecuencia cero y a frecuencia infinita?

Resumen

  • Más medidas que incógnitas y ruido: no hay solución exacta. Mínimos cuadrados elige la que minimiza ∥b−Ax∥2\lVert \mathbf{b} - \mathbf{A}\mathbf{x} \rVert^2, y cumple ATA x=ATb\mathbf{A}^{\mathsf T}\mathbf{A}\,\mathbf{x} = \mathbf{A}^{\mathsf T}\mathbf{b}.

  • Las ecuaciones normales elevan al cuadrado el número de condición: en la práctica se escalan las columnas y se usa np.linalg.lstsq.

  • Si las ecuaciones no son igual de fiables, hay que ponderarlas; si el ruido está también dentro de A\mathbf{A}, el resultado está sesgado.

  • Los residuos son el diagnóstico: sin estructura, ruido; con estructura, un modelo inadecuado.

Con este cuaderno termina el Bloque B. Has recorrido el camino completo: del circuito a la matriz, de la matriz al simulador, y de las medidas de vuelta al modelo.

References
  1. Miguel-Medina, T. (2026). Electrónica en Ingeniería Biomédica — Volumen I. Autopublicación. 10.5281/zenodo.22913382
  2. Cole, K. S., & Cole, R. H. (1941). Dispersion and absorption in dielectrics I. Alternating current characteristics. The Journal of Chemical Physics, 9(4), 341–351. 10.1063/1.1750906