A regressão linear é uma das técnicas estatísticas mais simples e amplamente utilizadas em Data Science, especialmente útil para prever um valor quantitativo. Os modelos de regressão linear tentam prever uma variável dependente (também chamada de variável de resposta) com base em uma ou mais variáveis independentes (ou preditores), assumindo que a relação entre as variáveis é linear.
No caso mais simples, com uma única variável preditora, a relação entre a variável dependente ( y ) e a variável independente ( x ) pode ser expressa como:
Onde:
-
$( \beta_0 )$ é o intercepto, -
$( \beta_1 )$ é o coeficiente da variável independente ( x ), -
$( \epsilon )$ é o termo de erro, que capta todas as outras influências sobre ( y ) que não são explicadas por ( x ).
Quando há mais de uma variável independente, a equação se expande para:
Aqui, cada
- Economia: Previsão de indicadores econômicos como PIB, inflação, etc.
- Biologia: Modelagem de crescimento populacional ou relações dose-resposta.
- Marketing: Previsão de vendas baseada em gastos com publicidade.
- Finanças: Estimativa de riscos ou retornos esperados de ativos.
Para avaliar o desempenho de um modelo de regressão linear, as métricas mais comuns são:
- Erro Quadrático Médio (MSE):
onde
- Raiz do Erro Quadrático Médio (RMSE):
fornece uma medida da magnitude do erro em termos das unidades originais da variável de saída.
- Coeficiente de Determinação ( R^2 ):
Onde:
- ( y_i ) são os valores observados,
- ( f_i ) são os valores previstos pelo modelo,
- ( \bar{y} ) é a média dos valores observados.
O
Para ilustrar a regressão linear em Python, vamos usar a biblioteca scikit-learn
para prever preços de casas com base em características como área, número de quartos, etc.
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import pandas as pd
# Supondo que temos um DataFrame `df` com as colunas 'preco', 'area', 'quartos'
X = df[['area', 'quartos']] # Variáveis independentes
y = df['preco'] # Variável dependente
# Dividir os dados em conjuntos de treino e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Criar e treinar o modelo
modelo = LinearRegression()
modelo.fit(X_train, y_train)
# Previsões
y_pred = modelo.predict(X_test)
# Avaliação do modelo
mse = mean_squared_error(y_test, y_pred)
rmse = mse**0.5
r2 = r2_score(y_test, y_pred)
print("MSE:", mse)
print("RMSE:", rmse)
print("R^2:", r2)