Um guia completo para regressão linear em python


A regressão linear é um método que podemos usar para compreender a relação entre uma ou mais variáveis preditoras e uma variável de resposta.

Este tutorial explica como realizar regressão linear em Python.

Exemplo: regressão linear em Python

Suponha que queiramos saber se o número de horas gastas estudando e o número de exames práticos realizados afetam a nota que um aluno recebe em um determinado exame.

Para explorar esse relacionamento, podemos realizar as seguintes etapas em Python para realizar a regressão linear múltipla.

Passo 1: Insira os dados.

Primeiro, criaremos um DataFrame do pandas para armazenar nosso conjunto de dados:

 import pandas as pd

#create data
df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6, 5, 3, 4, 6, 2, 1, 2],
                   'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2, 4, 4, 4, 5, 1, 0, 1],
                   'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96, 90, 82, 85, 99, 83, 62, 76]})

#view data 
df

        hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
11 3 3 75
12 6 2 96
13 5 4 90
14 3 4 82
15 4 4 85
16 6 5 99
17 2 1 83
18 1 0 62
19 2 1 76

Etapa 2: execute a regressão linear.

A seguir, usaremos a função OLS() da biblioteca statsmodels para realizar uma regressão de mínimos quadrados ordinária, usando “horas” e “exames” como variáveis preditoras e “pontuação” como variável de resposta:

 import statsmodels.api as sm

#define response variable
y = df['score']

#define predictor variables
x = df[['hours', 'exams']]

#add constant to predictor variables
x = sm.add_constant(x)

#fit linear regression model
model = sm.OLS(y, x).fit()

#view model summary
print(model.summary())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: R-squared score: 0.734
Model: OLS Adj. R-squared: 0.703
Method: Least Squares F-statistic: 23.46
Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05
Time: 13:20:31 Log-Likelihood: -60.354
No. Observations: 20 AIC: 126.7
Df Residuals: 17 BIC: 129.7
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 67.6735 2.816 24.033 0.000 61.733 73.614
hours 5.5557 0.899 6.179 0.000 3.659 7.453
exams -0.6017 0.914 -0.658 0.519 -2.531 1.327
==================================================== ============================
Omnibus: 0.341 Durbin-Watson: 1.506
Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196
Skew: -0.216 Prob(JB): 0.907
Kurtosis: 2,782 Cond. No. 10.8
==================================================== ============================

Etapa 3: interprete os resultados.

Veja como interpretar os números mais relevantes no resultado:

R ao quadrado: 0,734 . Isso é chamado de coeficiente de determinação. Esta é a proporção da variância na variável resposta que pode ser explicada pelas variáveis preditoras. Neste exemplo, 73,4% da variação nas notas dos exames é explicada pela quantidade de horas estudadas e pela quantidade de exames preparatórios realizados.

Estatística F: 23,46 . Esta é a estatística F geral do modelo de regressão.

Prob (estatística F): 1.29e-05. Este é o valor p associado à estatística F geral. Isto nos diz se o modelo de regressão como um todo é estatisticamente significativo ou não. Por outras palavras, diz-nos se as duas variáveis preditoras combinadas têm uma associação estatisticamente significativa com a variável resposta. Nesse caso, o valor de p é inferior a 0,05, indicando que as variáveis preditoras “horas de estudo” e “exames preparatórios realizados” combinadas apresentam associação estatisticamente significativa com a nota do exame.

coef: Os coeficientes de cada variável preditora nos informam a mudança média esperada na variável de resposta, assumindo que a outra variável preditora permaneça constante. Por exemplo, para cada hora adicional gasta estudando, espera-se que a pontuação média do exame aumente em 5,56 , assumindo que os exames práticos realizados permaneçam constantes.

Aqui está outra maneira de ver isso: se o aluno A e o aluno B fizerem o mesmo número de exames preparatórios, mas o aluno A estudar uma hora a mais, então o aluno A deverá pontuar 5,56 pontos a mais do que o aluno B.

Interpretamos o coeficiente de interceptação como significando que a nota esperada no exame para um aluno que não estuda horas e não faz exames preparatórios é 67,67 .

P>|t|. Os valores p individuais nos dizem se cada variável preditora é estatisticamente significativa ou não. Podemos verificar que “horas” são estatisticamente significativas (p = 0,00) enquanto “exames”   (p = 0,52) não é estatisticamente significativo para α = 0,05. Como o termo “exames” não é estatisticamente significativo, podemos acabar decidindo retirá-lo do modelo.

Equação de regressão estimada: podemos usar os coeficientes do resultado do modelo para criar a seguinte equação de regressão estimada:

nota do exame = 67,67 + 5,56*(horas) – 0,60*(exames preparatórios)

Podemos usar esta equação de regressão estimada para calcular a pontuação esperada no exame de um aluno, com base no número de horas de estudo e no número de exames práticos que ele faz. Por exemplo, um aluno que estuda três horas e faz um exame preparatório deverá obter nota 83,75 :

Tenha em mente que, como os exames preparatórios anteriores não foram estatisticamente significativos (p = 0,52), podemos decidir removê-los, pois não proporcionam nenhuma melhoria ao modelo geral. Neste caso, poderíamos realizar uma regressão linear simples utilizando apenas as horas estudadas como variável preditora.

Etapa 4: Verifique as suposições do modelo.

Depois de realizar uma regressão linear, você pode querer verificar diversas suposições para garantir que os resultados do modelo de regressão sejam confiáveis. Essas suposições incluem:

Premissa nº 1: Existe uma relação linear entre as variáveis preditoras e a variável de resposta.

  • Verifique essa suposição gerando um gráfico de resíduos que exibe os valores ajustados em relação aos resíduos para um modelo de regressão.

Hipótese nº 2: Independência de resíduos.

Hipótese nº 3: Homocedasticidade dos resíduos.

Premissa nº 4: Normalidade dos resíduos.

Suposição nº 5: Verifique se não há multicolinearidade entre as variáveis preditoras.

  • Verifique esta hipótese calculando o valor VIF de cada variável preditora.

Se essas suposições forem atendidas, você poderá ter certeza de que os resultados do seu modelo de regressão linear múltipla são confiáveis.

Você pode encontrar o código Python completo usado neste tutorial aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *