Motivación: aprovechar la información

Vamos a simular que medimos tiempos con un error de medición $\sigma = 1$:

Opción 1

Podriamos medir un solo periodo:

El error de 1 periodo es $\sigma_1 = \sqrt{2} \, \sigma$

Opción pares

Podriamos medir muchos periodos y calcular el promedio solamente de los pares (para que sean independientes):

cuyo error sería el error del promedio:

$$ \sigma_\bar{x} = \frac{\sigma_1}{\sqrt{N}} = \frac{\sqrt{2} \, \sigma}{\sqrt{N}} $$

Opción "todos" (falsa)

Pero, ¿por qué descartar datos? ¡Usemos todos!

Para calcular el error de este promedio, tendríamos que usar la fórmula completa de propagación.

Pero esto es equivalente a usar solo el primero y el último de los periodos (y la cantidad total):

$$ \begin{align} \bar{x} &= \frac{1}{N} \Big( T_1 + T_2 + \ldots + T_N \Big) \\ \text{reemplazando por los tiempos} \\ &= \frac{1}{N} \Big( (t_1 - t_0) + (t_2 - t_1) + \ldots + (t_N - t_{N-1}) \Big) \\ \text{simplificando} \\ &= \frac{t_N - t_0}{N} \end{align} $$

cuyo error se puede obtener más facilmente:

$$ \sigma_{extremos} = \frac{\sqrt{\sigma^2 + \sigma^2}}{N} = \frac{\sqrt{2} \, \sigma}{N} = \frac{\sigma_1}{N} $$

Opción todos (real)

¿Podemos aprovechar los puntos intermedios para algo?

Cuadrados mínimos

¿Cuándo podemos hacer un promedio?

Para el péndulo teniamos la siguiente relación entre la longitud $L$, el periodo $T$ y la aceleración de la gravedad $g$:

$$ g(T, L) = (2\pi)^2 \, \frac{L}{T^2} $$

o, despejando el periodo:

$$ T(L, g) = 2\pi \, \sqrt{\frac{L}{g}} $$

Para una constante

Si tenemos un set de mediciones $y_i = \{ y_1, y_2, \ldots, y_N \}$,

y queremos encontrar el valor $c$ "más cercano" a todos:

podemos usar el criterio de cuadrados mínimos:

$$ \begin{align} S(c) &= \sum_i (y_i - c)^2 \end{align} $$$$ \frac{S(c)}{dc} = 0 $$

y llegamos a que el valor que mínimiza $S(c)$ es $c = \bar{y} = \frac{1}{N} \sum_i y_i$, el promedio.

Para una lineal

$$ y(x) = A x $$

Hagamos la cuenta:

$$ \begin{align} S(A) &= \sum_i (y_i - Ax_i)^2 \\ \\ 0 &= \frac{d S(A)}{d A} \\ \text{reemplazamos} \\ &= \frac{d \sum_i (y_i - Ax_i)^2}{d A} \\ \text{distribuimos} \\ &= \sum_i \frac{d (y_i - Ax_i)^2}{d A} \\ \text{regla de la cadena} \\ &= \sum_i 2 \, (y_i - Ax_i) \, (-x) \\ \text{reagrupando} \\ &= -2 \Big( \sum_i x_i y_i - A \sum_i x_i^2 \Big) \\ \end{align} $$

Si despejamos $A$:

$$ \begin{align} A &= \frac{\sum_i x_i y_i}{\sum_i x_i^2} \\ \\ \sigma_A^2 &= \ldots (\text{propagando el error de }y_i) \end{align} $$

Pero, más facilmente, y sin hacer ninguna cuenta, pueden usar la función curve_fit, que importamos antes:

Cuadrados mínimos en general

En general, uno puede ajustar cualquier relación que quiera:

$$ y = f(x_i, p_0, p_1, \ldots, p_k) $$

donde $p_0, p_1, \ldots, p_N$ son los parametros a determinar.

Siempre se busca minimizar la diferencia entre el $y_i$ medido y la función evaluada en el $x_i$ correspondiente: $$ \begin{align} S(p_0, p_1, \ldots, p_k) &= \sum_i \Big( \; y_i - f(x_i, p_0, p_1, \ldots, p_k) \; \Big)^2 \end{align} $$

Recién vimos cuando $ f(x, A) = A x $.

El promedio es un caso particular, donde la función no depende de $x$: $ f(x, C) = C $

Para una recta

Para un polinomio de orden N

Si queremos ajustar un polinomio de orden $N$:

$$ y(x) = a_0 + a_1 x + a_2 x^2 + \ldots + a_N x^N = \sum_{i=0}^N a_i x^i $$

podemos usar la función np.polyfit:

Sobreajuste

Residuos

¿Cómo podemos evaluar si un modelo es "correcto"?

O, mejor dicho, ¿cómo podemos evaluar si un modelo es incorrecto?

Veamos el caso del péndulo. Imaginemos que medimos el periodo en función de la longitud:

Pero proponemos un modelo incorrecto. En lugar de $T(L) \propto \sqrt{L}$, decimos $T(L) \propto L$

Una de las cosas quese mira es que las mediciones (azul) queden distribuidas aleatoriamente por arriba y por debajo del modelo (naranja), sin ningun patrón.

Una forma más cómoda de verlo es calculando los residuos $ r_i = y_i - f(x_i, A) $, que son la diferencia entre las mediciones y el modelo.

En este caso, $r_i = y_i - A x_i$

Lo que se quiere ver al mirar los residuos es que esten distribuidos aleatoriamente alrededor del 0.

También se dice que los residuos no tengan estructura.

Pongamos todo junto en un gráfico.

Comentarios:

Estimando el error de las mediciones $y_i$

Para una constante

Si recuerdan de la clase anterior, la desviación estandar era la "desviación promedio de los datos $y_i$". A partir del método de cuadrados mínimos:

$$ S(c) = \sum_i (y_i - c)^2 $$

se encontraba el valor óptimo:

$$ c_{min} = \bar{y} $$

y evaluando la suma de cuadrados mínimos en este valor óptimo y dividiendo por $N$, se podia llegar a la varianza, o el cuadrado de la desviación estandar:

$$ \sigma^2 = \frac{1}{N} \, S(\bar{y}) = \frac{1}{N} \sum_i^N (y_i - \bar{y})^2 = \frac{1}{N} \sum_i^N r_i^2 $$

que no es otra cosa que el promedio del cuadrado de los residuos.

Para una lineal

Análogamente, podemos hacerlo para una función lineal:

$$ S(c) = \sum_i (y_i - A x_i)^2 $$$$ c_{min} = \bar{y} $$$$ \sigma^2 = \frac{1}{N} \, S(\bar{y}) = \frac{1}{N} \sum_i^N (y_i - \bar{y})^2 = \frac{1}{N} \sum_i^N r_i^2 $$

En general

O en general:

$$ S(c) = \sum_i \Big(y_i - f(x_i, p_0, \ldots) \Big)^2 $$$$ \sigma^2 = \frac{1}{N} \, S\Big(p_0^{min}, \ldots \Big) = \frac{1}{N} \sum_i^N r_i^2 $$

¡Pero ojo! Esto es solo válido si el modelo (la función $f$) es la "correcta". Es decir, si no es la incorrecta, si los residuos no tienen estructura.

Ejercicios y preguntas

Ejemplo en Colab

Genere un set de datos para que prueben realizar un ajuste.

En este Colab está el código de ejemplo: https://colab.research.google.com/drive/1kiqQuIhcEv9Cfab1BpUKfLCAoIdp196T

Si no quieren usar Colab, pueden bajar los datos desde aquí en formato .zip: http://users.df.uba.ar/maurosilber/docencia/labo1/20210908/datos.zip

Para rehacer con sus datos del periodo del péndulo

  1. Chequear si era valido promediar periodos. ¿Cómo?
  2. Ajustar el tiempo en función del número de periodo para obtener un mejor valor del periodo del péndulo.
  3. Calcular la aceleración de la gravedad $g$ con este nuevo valor, y contestar a cuántos $\sigma$ quedó del valor esperado: $g=9.81 \frac{m}{s^2}$.