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!
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%.
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
Por que no final você não fez o gráfico da Regressão Linear?
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
Mario, precisava normalizar a variavel data[y]?
Conteúdo excelente. Parabéns!!
Boa Mario, ✔👏👏👏
👏👏 conteúdo excelente