Regressão Linear Com Python

This page is based on exercises and explanations proposed in Google’s machine learning crash course that can be found on the following link: https://developers.google.com/machine-learning/crash-course/linear-regression. This post aims to provide a different approach, focusing more on mathematics explanations and providing my personal view os those topics.

Essa pagina é baseada em alguns dos exercícios e explicações fornecidos no crash course sobre aprendizado de máquina do Google que posso de encontrado no seguinte link: https://developers.google.com/machine-learning/crash-course/linear-regression. Esse post busca fornecer uma abordagem diferente, focando em explicações matemáticas e fornecer minha visão pessoal sobre os tópicos.


A regressão linear é uma das técnicas estatísticas mais utilizadas para modelar a relação entre uma variável dependente \(y\) e uma variável independente \(x\). A ideia central da regressão linear é encontrar a linha reta que melhor se ajusta aos dados, minimizando a diferença entre os valores observados e os valores preditos. A forma mais simples de regressão linear é expressa pela equação:

\(y=a+bx\)

Aqui, \(y\) é a variável dependente que queremos prever, \(x\) é a variável independente, \(b\) é o coeficiente angular da linha (a inclinação), e \(a\) é o intercepto, que representa o valor de \(y\) quando \(x=0\).

Calculando os Coeficientes \(a\) e \(b\)

Para encontrar os valores de \(a\) e \(b\), podemos seguir os seguintes passos:

1. Calcular o coeficiente angular \(b\):

O coeficiente angular \(b\) é determinado pela fórmula:


\(b = \frac{r \cdot s_y}{s_x}\)

\(r = \frac{\sum_{i=1}^{n} (x_i – \overline{x})(y_i – \overline{y})}{\sqrt{\sum_{i=1}^{n} (x_i – \overline{x})^2} \sqrt{\sum_{i=1}^{n} (y_i – \overline{y})^2}}\)

Onde:

  • \(r\) é o coeficiente de correlação entre \(x\) e \(y\), nesse caso usamos o coeficiente de correlação de Pearson (https://en.wikipedia.org/wiki/Pearson_correlation_coefficient)
  • \(s_{y}\) é o desvio padrão da variável \(y\).
  • \(s_{x}\) é o desvio padrão da variável \(x\).

2. Calcular o intercepto \(a\):

O coeficiente \(a\) é determinado usando a média das variáveis \(x\) e \(y\):

\(a=\overline{y} – b\overline{x}\)

Para testarmos isso vamos construir um script em Python para testarmos, vamos começar primeiro com alguns dados:

notas = [92, 85, 78, 95, 88, 81, 73, 89, 76, 82, 70, 94, 79, 87, 67, 84, 72, 90, 75, 69] 
faltas = [2, 3, 5, 1, 4, 6, 7, 2, 6, 5, 8, 1, 5, 3, 9, 4, 7, 3, 6, 8]

Com esses dados podemos usar algumas bibliotecas Python para calcular os coeficientes da regressão linear, nesse casa vamos usar numpy, scipy e matplotlib:

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt 

# Dados
notas = np.array([92, 85, 78, 95, 88, 81, 73, 89, 76, 82, 70, 94, 79, 87, 67, 84, 72, 90, 75, 69])
faltas = np.array([2, 3, 5, 1, 4, 6, 7, 2, 6, 5, 8, 1, 5, 3, 9, 4, 7, 3, 6, 8])

# Calcular o coeficiente de correlação de Pearson
coef_pearson, _ = stats.pearsonr(notas, faltas)
print(f'Coeficiente de Correlação de Pearson: {coef_pearson:.2f}')  

# Ajustar a regressão linear
slope, intercept, r_value, p_value, std_err = stats.linregress(faltas, notas)  

# Imprimir os parâmetros da regressão
print(f'Slope: {slope:.2f}')
print(f'Intercept: {intercept:.2f}')  

# Gerar valores de predição
faltas_pred = np.linspace(min(faltas), max(faltas), 100)
notas_pred = slope * faltas_pred + intercept  

# Plotar os dados e a linha de regressão
plt.scatter(faltas, notas, color='blue', label='Dados')
plt.plot(faltas_pred, notas_pred, color='red', label='Linha de Regressão')
plt.xlabel('Faltas')
plt.ylabel('Notas')
plt.title('Regressão Linear entre Notas e Faltas')
plt.legend()
plt.grid(True)
plt.show()

One response to “Regressão Linear Com Python”

Leave a Reply

Your email address will not be published. Required fields are marked *