Introdução ao Ajuste de Curvas

Calibração: - Sensor de temperatura: \(n\) amostras e gráfico de dispersão:

Padrão sugere que uma reta (modelo) pode ser adequada para a relação:

\[V = \theta_1 T + \theta_0 + e\]

\(V\): Tensão medida; \(T\): Temperatura; \(\theta_i\): Parâmetros do modelo; \(e\): Erro aleatório.

Modelo - Sistema de equações

Equação do modelo linear: \(y = V\) (variável dependente) e \(x = T\) (variável independente).

\[y = \theta_1 x + \theta_0 + e\]

Aplicando os dados ao modelo:

\[\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} = \begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ \vdots & \vdots \\ x_n & 1 \end{bmatrix} \begin{bmatrix} \theta_1 \\ \theta_0 \end{bmatrix} + \begin{bmatrix} e_1 \\ e_2 \\ \vdots \\ e_n \end{bmatrix}\]

\[\huge\longrightarrow\]

\[\mathbf{y} = \mathbf{A} \boldsymbol{\theta} + \mathbf{e}\]

Forma Vetorial-matricial

Nesta notação vetorial-matricial, o modelo pode ser interpretado da seguinte forma:

\[\mathbf{y} = \mathbf{A} \boldsymbol{\theta} + \mathbf{e}\]

  • \(\mathbf{y} \in \mathbb{R}^{n \times 1}\): vetor de saídas observadas: \(\mathbf{y} = [y_1, y_2, \dots, y_n]^T\).

  • \(\mathbf{A} \in \mathbb{R}^{n \times 2}\): matriz de regressores, cada coluna é um termo do modelo.

\[\mathbf{A} = \begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ \vdots & \vdots \\ x_n & 1 \end{bmatrix}\]

  • \(\boldsymbol{\theta} \in \mathbb{R}^{2 \times 1}\): vetor de parâmetros \(\boldsymbol{\theta} = [\theta_1, \theta_0]^T\) a serem estimados.

  • \(\mathbf{e} \in \mathbb{R}^{n \times 1}\): vetor de erros aleatórios. \(\mathbf{e} = [e_1, e_2, \dots, e_n]^T\)

Estimar parâmetros que minimizam o erro

A partir de \(\mathbf{y} = \mathbf{A} \boldsymbol{\theta} + \mathbf{e}\), o erro é: \[\mathbf{e} = \mathbf{y} - \mathbf{A} \boldsymbol{\theta}\]

Cada escolha de \(\boldsymbol{\theta}\) gera um vetor de erros diferente:

Para comparar escolhas, agregamos \(\mathbf{e}\) em um único número: a função de custo \(J(\boldsymbol{\theta})\).

Problema de otimização: \[\min_{\boldsymbol{\theta}} J(\boldsymbol{\theta})\]

Erro Residual

Erros são a distância vertical entre os pontos medidos e a reta do modelo.

O erro residual para cada amostra \(i\) é a diferença entre o valor medido e o predito \(\hat{y}_i\) pelo modelo:

\[e_i = y_i - \hat{y}_i\]

Função de Custo

É necessário agregar os erros individuais \(e_i\) em um único valor. A soma simples

\[J(\boldsymbol{\theta}) = \sum_{i=1}^{n} e_i\]

não serve — erros positivos e negativos se cancelam. Por isso, usamos a soma dos quadrados:

\[J(\boldsymbol{\theta}) = \sum_{i=1}^{n} e_i^2 = \sum_{i=1}^{n} [y_i - \hat{y}_i]^2 = \sum_{i=1}^{n} [y_i - (\theta_1 x_i + \theta_0)]^2\]

Abordagem matricial

Minimizar \(J(\boldsymbol{\theta}) = \mathbf{e}^T \mathbf{e} = (\mathbf{y} - \mathbf{A} \boldsymbol{\theta})^T(\mathbf{y} - \mathbf{A} \boldsymbol{\theta})\) equivale a zerar o gradiente em relação a \(\boldsymbol{\theta}\):

\[\frac{\partial J}{\partial \boldsymbol{\theta}} = -2\mathbf{A}^T(\mathbf{y} - \mathbf{A}\boldsymbol{\theta}) = \mathbf{0}\]

O que resulta nas equações normais:

\[\mathbf{A}^T \mathbf{A}\, \boldsymbol{\theta} = \mathbf{A}^T \mathbf{y}\]

Se o produto \(\mathbf{A}^T \mathbf{A}\) for inversível:

\[\boldsymbol{\theta} = (\mathbf{A}^T \mathbf{A})^{-1} \mathbf{A}^T \mathbf{y}\]

Solução Python dos Mínimos Quadrados

Em python os dados podem ser gerados como:

import numpy as np

# Dados Gerados:
np.random.seed(12)
x = np.array([15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70])
y = 0.05 * x + 0.5 + np.random.normal(0, 0.1, len(x))
n = len(x)

A matriz de regressores \(\mathbf{A}\) é construída como:

# Matriz de regressão: n linhas e 2 colunas
A = np.column_stack((np.ones(n), x))
print(A)
[[ 1. 15.]
 [ 1. 20.]
 [ 1. 25.]
 [ 1. 30.]
 [ 1. 35.]
 [ 1. 40.]
 [ 1. 45.]
 [ 1. 50.]
 [ 1. 55.]
 [ 1. 60.]
 [ 1. 65.]
 [ 1. 70.]]

Estimação de parâmetros por mínimos quadrados:

# Estimativa via Equação Normal: theta = (A'A)^-1 A'y
theta = np.linalg.inv(A.T @ A) @ A.T @ y

print(f"Intercepto (theta0): {theta[0]:.4f}")
print(f"Inclinação (theta1): {theta[1]:.4f}")
Intercepto (theta0): 0.4278
Inclinação (theta1): 0.0516

O grafico comparativo:


Prof. Dr. Raphael Teixeira

Universidade Federal do Pará