Como Realizar Regressão Linear usando Statsmodels e Scikit-learn em Python

Posted by


A regressão linear é uma técnica estatística usada para entender a relação entre uma variável dependente e uma ou mais variáveis independentes. Ela é usada para prever valores futuros com base em dados históricos e é uma das técnicas mais simples e amplamente utilizadas em análise quantitativa.

Neste tutorial, vamos aprender como fazer regressão linear em Python usando as bibliotecas Statsmodels e Scikit-learn. Statsmodels é uma biblioteca de estatísticas que fornece uma ampla gama de métodos estatísticos e modelos, incluindo o modelo de regressão linear. Scikit-learn é uma biblioteca popular de aprendizado de máquina que inclui implementações eficientes de diversos algoritmos de regressão, incluindo regressão linear.

Passo 1: Instalando as Bibliotecas

Antes de começarmos, é importante garantir que você tenha as bibliotecas Statsmodels e Scikit-learn instaladas em seu ambiente Python. Você pode instalá-las utilizando o pip:

pip install statsmodels
pip install scikit-learn

Passo 2: Importando as Bibliotecas

Após instalar as bibliotecas, você pode começar importando-as em seu projeto. Aqui está como você pode fazer isso:

import numpy as np
import statsmodels.api as sm
from sklearn.linear_model import LinearRegression

Passo 3: Preparando os Dados

Antes de realizar a regressão linear, você precisa preparar seus dados. Vamos considerar um exemplo simples com dados aleatórios para ilustrar o processo. Suponha que você tenha um conjunto de dados com uma variável independente X e uma variável dependente Y. Aqui está como você pode criar esses dados:

np.random.seed(0)
X = 2 * np.random.rand(100, 1)
Y = 6 + 3 * X + np.random.randn(100, 1)

Passo 4: Ajustando o Modelo Usando Statsmodels

Agora que você tem seus dados preparados, você pode ajustar um modelo de regressão linear usando Statsmodels. Aqui está como você pode fazer isso:

X = sm.add_constant(X)
model = sm.OLS(Y, X).fit()
predictions = model.predict(X)

Neste código, primeiro adicionamos uma coluna de uns à matriz X, que representa o coeficiente de interceptação. Em seguida, criamos um modelo de regressão linear usando OLS (Mínimos Quadrados Ordinários) e ajustamos o modelo aos dados. Por fim, usamos o modelo para fazer previsões.

Passo 5: Ajustando o Modelo Usando Scikit-learn

Você também pode ajustar um modelo de regressão linear usando Scikit-learn. Aqui está como você pode fazer isso:

model = LinearRegression()
model.fit(X, Y)
predictions = model.predict(X)

Neste código, criamos um objeto LinearRegression e ajustamos o modelo aos dados usando o método fit. Em seguida, usamos o modelo para fazer previsões.

Passo 6: Avaliando o Modelo

Após ajustar o modelo, é importante avaliar sua performance. Você pode usar métricas como o coeficiente de determinação (R²) e o erro quadrático médio (MSE) para avaliar o desempenho do modelo. Aqui está como você pode calcular essas métricas:

from sklearn.metrics import r2_score, mean_squared_error

print("R²: ", r2_score(Y, predictions))
print("MSE: ", mean_squared_error(Y, predictions))

Estas são métricas comuns para avaliar modelos de regressão linear. R² mede a proporção da variabilidade da variável dependente explicada pelo modelo, enquanto MSE mede a média dos quadrados dos erros residuais.

Espero que este tutorial tenha sido útil para entender como fazer regressão linear em Python usando Statsmodels e Scikit-learn. A regressão linear é uma técnica poderosa que pode ser usada para fazer previsões com base em dados históricos e entender a relação entre variáveis. Experimente com seus próprios conjuntos de dados e explore as diferentes opções e funcionalidades dessas bibliotecas!

0 0 votes
Article Rating
8 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@ruidinis75
1 month ago

Para evitar viés devia se ter adicionado constante à variável X: X = sm.add_constant(data.drop([y], axis=1)) e não teria o R2 de 90%.

@TheOtroco
1 month ago

Muito bom!! Como usuário de R que tá aprendendo python percebo que fazer uma regressão linear no R é muito mais prático, kkkk

@thiagoribs295
1 month ago

Por que no final você não fez o gráfico da Regressão Linear?

@guimaraesalysson
1 month ago

Faltou adicionar o intercept no OLS com sm.add_constant(x ou x_normalized). Mas adicionar uma coluna de ums também funciona mesmo kkk

@JoaoLucas-fb4bp
1 month ago

Mario, precisava normalizar a variavel data[y]?

@maiconreis9276
1 month ago

Conteúdo excelente. Parabéns!!

@OceanAlves23
1 month ago

Boa Mario, ✔👏👏👏

@brndnaxr
1 month ago

👏👏 conteúdo excelente