No momento, você está visualizando Regressão Linear do zero: Entendendo o passo a passo

Regressão Linear do zero: Entendendo o passo a passo

  • Autor do post:
  • Tempo de leitura:1 minutos de leitura
  • Categoria do post:Dados

Como referenciar este texto: Regressão Linear do zero: Entendendo o passo a passo’. Rodrigo Terra. Publicado em: 23/04/2025. Link da postagem: https://www.makerzine.com.br/dados/regressao-linear-do-zero-entendendo-o-passo-a-passo/.

Conteúdos que você verá nesta postagem

A regressão linear é uma das ferramentas mais básicas (e poderosas!) da estatística e da ciência de dados. Neste texto, vamos construir uma regressão linear simples do zero, apenas com lógica matemática e programação, para entender como ela funciona por trás dos panos. Vamos usar o Python como aliado nesse processo.

O que é Regressão Linear?

A regressão linear é uma técnica que busca encontrar uma reta que melhor representa a relação entre duas variáveis. Por exemplo: será que existe uma relação entre o número de horas estudadas e a nota final de um estudante? A regressão linear tenta encontrar uma equação como:

y = a . x + b

Onde:

    • x é a variável independente (horas estudadas)
    • y é a variável dependente (nota)
    • a é o coeficiente angular (inclinação da reta)
    • b é o intercepto (onde a reta cruza o eixo y)

Criando um exemplo simples

Vamos usar um pequeno conjunto de dados fictício:

				
					# Dados simulados
x = [1, 2, 3, 4, 5]
y = [2, 4, 5, 4, 5]
				
			

Passo 1: Calculando os coeficientes da reta

Para encontrar os melhores valores de a e b, usamos as fórmulas:

Vamos implementá-las:

				
					n = len(x)
soma_x = sum(x)
soma_y = sum(y)
soma_xy = sum([x[i]*y[i] for i in range(n)])
soma_x2 = sum([xi**2 for xi in x])

a = (n * soma_xy - soma_x * soma_y) / (n * soma_x2 - soma_x**2)
b = (soma_y - a * soma_x) / n

				
			

Agora temos nossa reta!

Passo 2: Fazendo previsões

Vamos prever os valores de y com base na reta que encontramos:

				
					y_pred = [a * xi + b for xi in x]

				
			

Passo 3: Calculando o erro (MSE)

Vamos medir o erro com o erro quadrático médio (MSE):

				
					mse = sum([(y[i] - y_pred[i])**2 for i in range(n)]) / n
print(f"Erro quadrático médio: {mse:.2f}")

				
			

Usando nossos dados, o resultado apresentado foi:

Erro quadrático médio: 0.48

O Erro Quadrático Médio (MSE – Mean Squared Error) é uma métrica que indica o quão distantes, em média, as previsões do modelo estão dos valores reais.

 

Interpretação numérica

  • Esse valor significa que, em média, a diferença ao quadrado entre os valores previstos (y_pred) e os reais (y) foi de 0.48.

  • Como é uma média dos erros ao quadrado, valores mais altos indicam previsões mais imprecisas, e valores mais baixos indicam previsões mais próximas da realidade.

 

Como saber se 0.48 é bom ou ruim?

A interpretação depende da escala dos seus dados. Por exemplo:

  • Se seus valores de y variam entre 0 e 10, então um MSE de 0.48 é relativamente pequeno — mostra que o modelo está indo bem.

  • Mas se seus valores de y variam entre 0 e 1, então 0.48 é grande, e indica que o modelo está com bastante erro.

Passo 4: Visualizando o resultado

Por fim, vamos plotar os dados e a reta:

				
					import matplotlib.pyplot as plt

plt.scatter(x, y, label="Dados")
plt.plot(x, y_pred, color='red', label="Reta da regressão")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.title("Regressão Linear Simples")
plt.show()

				
			

Gráfico gerado:

Conclusão

Esse exercício mostra que é possível construir uma regressão linear com apenas lógica matemática e programação básica. Essa abordagem é ótima para ensinar os conceitos fundamentais por trás dos algoritmos que usamos em bibliotecas como scikit-learn ou statsmodels.

Se você acha que este conteúdo pode ser útil para alguém, compartilhe!

Ao divulgar os textos do MakerZine, você contribui para que todo o material continue acessível e gratuito para todas as pessoas.

Rodrigo Terra

Com formação inicial em Física, especialização em Ciências Educacionais com ênfase em Tecnologia Educacional e Docência, e graduação em Ciências de Dados, construí uma trajetória sólida que une educação, tecnologias ee inovação. Desde 2001, dedico-me ao campo educacional, e desde 2019, atuo também na área de ciência de dados, buscando sempre encontrar soluções focadas no desenvolvimento humano. Minha experiência combina um profundo conhecimento em educação com habilidades técnicas em dados e programação, permitindo-me criar soluções estratégicas e práticas. Com ampla vivência em análise de dados, definição de métricas e desenvolvimento de indicadores, acredito que a formação transdisciplinar é essencial para preparar indivíduos conscientes e capacitados para os desafios do mundo contemporâneo. Apaixonado por café e boas conversas, sou movido pela curiosidade e pela busca constante de novas ideias e perspectivas. Minha missão é contribuir para uma educação que inspire pensamento crítico, estimule a criatividade e promova a colaboração.

Deixe um comentário