Regressão Linear — Uma abordagem inferencial — PARTE 1

Entenda as relações entre variáveis e obtenha os coeficientes que reduzem a soma dos quadrados dos resíduos

Edson Junior
Data Hackers
18 min readMar 21, 2024

--

Fonte: https://www.linkedin.com/pulse/magic-linear-regression-model-bhagyashree-ghosh/

Sumário

→ Introdução
→ Introdução à regressão linear
→ O que é uma análise inferencial?
→ Racional para obtenção dos coeficientes da regressão
→ Como encontrar os coeficientes da regressão em Python?
→ Descrição das métricas de regressão
→ Conclusão
→ Referências

Introdução

Este artigo é o primeiro de dois artigos que tratam sobre o algoritmo da Regressão Linear, o mesmo que vamos tendo um certo contato inicial desde o ensino médio, nas aulas de matemática.

Existem duas abordagens principais na Regressão Linear:

  • Abordagem Inferencial: Onde se busca entender as relações entre as variáveis independentes e dependente
  • Abordagem Preditiva: utiliza o modelo para prever valores futuros da variável dependente

A análise preditiva é o que mais estamos acostumados a ver. Acredito que, pelo fato de ambos os casos utilizarem o mesmo modelo, acaba gerando muita confusão por aí. Porém, como podemos ver, as abordagens possuem objetivos distintos.

Este artigo focará na abordagem da inferência, trazendo o que é, juntamente com exemplos didáticos para facilitar o entendimento. Também será apresentado o racional por trás da obtenção dos coeficientes da regressão e como obtê-los utilizando Python, dentro de uma análise de inferência real.

Além disso, serão explicadas TODAS as métricas resultantes do modelo de regressão ajustado aos dados, isso para você não ficar mais confuso sobre aquele monte de números que aparece nos resultados.

Depois deste artigo, você nunca mais irá falar por aí “Nossa, como faço para saber a relação entre estas variáveis? O meu modelo está bom ou ruim?” Estas frases acabam por aqui!!

Introdução à regressão linear

A regressão linear é um dos modelos mais famosos tratando-se de machine learning e trata de modelar a relação entre uma variável dependente y e uma ou mais variáveis independentes X.

O grande objetivo envolvido é encontrar uma reta que melhor se ajuste aos dados, minimizando a soma dos erros quadráticos entre os valores observados e os valores previstos pela equação linear.

Exemplo intuitivo

Suponha que em uma escola são catalogadas as notas de 200 alunos que fizeram uma prova. Além da nota, foi registrado quantas horas cada um desses 20 alunos estudou. Com isso, é possível organizar o seguinte raciocínio em Python.

  1. Primeiro são importadas as bibliotecas
# BIBLIOTECAS
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

2. Em seguida são organizadas as notas dos alunos

# VALORES APRESENTADOS NOS EIXOS
x = np.linspace(1, 20, 200)
np.random.seed(5)
noise = np.random.normal(0, 1, size = len(x))
y = np.linspace(2, 9, len(x)) + noise

3. Com isso, é possível tentar entender qual o tipo de relação que a quantidade de horas teria com a nota final, obtendo o seguinte gráfico de dispersão:

# AJUSTANDO O TAMANHO DA FIGURA
plt.figure(figsize = (10,6))
# SCATTER PLOT
plt.scatter(x, y, color = 'red')
# LABELS
plt.xlabel('Horas Estudadas')
plt.ylabel('Nota')
plt.title('Nota em função das horas estudadas', fontweight = 'bold')
plt.show()
Fonte: Próprio autor

Pela imagem acima as duas variáveis possuem uma relação que pode ser modelada por uma regressão linear.

A regressão linear tentará encontrar uma reta que se encaixe o máximo possível nestes pontos indicados na figura. Ou seja, para cada reta é avaliado o erro quadrático médio (MSE, do inglês ‘Mean Squared Error’) e o menor valor deste erro indica a reta escolhida. A expressão que define o MSE é da seguinte forma:

Fonte Próprio autor

No gráfico a seguir, vemos diversas possíveis retas que podem ser testadas com o MSE.

Fonte: Próprio autor

Suponha que, de todas as retas que passam pelos pontos do gráfico de dispersão, a que melhor representa os dados (ou seja, a que erra menos, a que possui menor MSE) seja a representada abaixo:

Fonte: Próprio autor

A equação de uma regressão linear simples pode ser representada a partir da expressão:

Fonte: Próprio autor

Neste caso, trata-se de uma regressão simples devido ao fato de ser utilizada uma única característica para realizar uma análise. Além disso, o exemplo indica uma regressão univariada, pois há apenas uma variável dependente envolvida.

Voltando ao exemplo, suponha que os coeficientes encontrados fossem:

Fonte: Próprio autor

Então a equação da reta que relaciona as horas estudadas com as notas dos alunos poderia ser expressa da seguinte forma:

Fonte: Próprio autor

O que a equação acima nos diz é que:

  • Se o aluno não estudasse nada (X1 = 0) ele tiraria cerca de 1.783 na prova
  • Cada hora de estudo adicional, corresponderia a um aumento de 0.368 na nota da prova

O que é uma análise inferencial?

Em uma regressão linear, uma inferência basicamente está relacionada à ideia de usar o modelo para tirar conclusões sobre a relação entre as variáveis independentes e a variável dependente.

Escrevendo com outras palavras: depois de ajustar um modelo de regressão linear aos dados, a inferência é o que nos permite interpretar os coeficientes encontrados do modelo e entender como as mudanças em uma variável independente (ou variável explicativa) estão associadas a mudanças na variável dependente (ou variável resposta), mantendo todas as outras variáveis constantes.

Exemplo intuitivo

Vamos considerar um exemplo simples. Suponha que você faça parte da companhia aérea AirData e esteja usando a regressão linear para entender a formação do preço da passagem aérea. Além do preço, você coleta dados de várias passagens, incluindo as seguintes variáveis:

  1. Distância percorrida (km)
  2. Antecedência da compra
  3. Classe da passagem
  4. Temporada (época do ano)
  5. Número de conexões

Os cinco primeiros registros de dados são mostrados de acordo com a tabela a seguir:

Fonte: Próprio autor

Apesar de no tópico anterior ser apresentada a forma da regressão em seu estado mais simples, em geral, a expressão completa da regressão linear é uma soma ponderada de todas as variáveis independentes, sendo os pesos cada um dos coeficientes. A forma geral pode ser definida da seguinte maneira:

Fonte: Próprio autor

Neste caso, trata-se de uma regressão múltipla, pois são utilizadas múltiplas características para realizar uma análise. Além disso, o exemplo indica uma regressão univariada, pois também há apenas uma variável dependente envolvida.

Para o caso das passagens aéreas, a expressão poderia ser ajustada para:

Fonte: Próprio autor

Repetindo: Cada coeficiente β indica o quanto o preço é esperado mudar, mantendo as outras variáveis constantes.

Por exemplo, β1​ mostra como o preço muda com uma unidade de aumento na distância do voo, assumindo que todas as outras variáveis permaneçam constantes. Se β5 = 500, quer dizer que o aumento de 1 conexão aumenta em 500 reais o valor da passagem.

Para estimar os coeficientes de um modelo, podemos usar duas abordagens distintas:

  • Método do gradiente descendente: Esta técnica busca otimizar os coeficientes gradualmente, através de um processo iterativo em que se busca reduzir o erro da previsão. Em cada iteração, tende a ajustar os coeficientes na direção que reduz o erro.
  • Solução de Forma Fechada: Esta é a forma mais utilizada e conhecida, as vezes também é chamada de “Forma Direta”. Ao contrário do gradiente descendente, trata-se de um método que calcula os coeficientes de maneira direta, encontrando os valores que minimizam a função de custo do modelo de uma só vez. Aqui já são aplicadas derivadas parciais em relação a cada uma das variáveis independentes X1​,X2​,…,Xn​ e estas são igualadas a zero para encontrar os coeficientes. Esse processo resulta em pontos onde a função de custo é mínima (ou máxima, dependendo do contexto), que são identificados por serem pontos onde a tangente à curva da função de custo é horizontal.

Racional para obtenção dos coeficientes da regressão

Ainda sobre a expressão geral da regressão linear apresentada anteriormente, podemos representá-la de forma matricial, da seguinte forma:

Fonte: Próprio autor

Considerando m registros e n variáveis independentes, temos:

Fonte: Próprio autor

Neste artigo, para encontrar os coeficientes beta, será utilizado o Método dos Mínimos Quadrados (através da Forma Direta). Este método tem como objetivo minimizar a Soma dos Quadrados dos Resíduos (SSR, do inglês Sum of Squares of Residuals). Como os resíduos (que significa toda a variação que modelo não conseguiu explicar) é dado por:

Fonte: Próprio autor

A SSR poderia ser escrita como:

Além disso, os valores previstos podem ser escritos como:

Fonte: Próprio autor

Neste caso, o vetor X_i é referente à i-ésima observação da matriz X, definida anteriormente. Ou seja:

Porém, para multiplicar o vetor linha X_i pelo vetor beta, é preciso transformar X_i em um vetor coluna, através da transposta, devido à regra de multiplicação de matrizes. Ou seja:

Logo, substituindo na expressão da SSR:

Fonte: Próprio autor

Em termos matriciais, para obter a SSR é necessário realizar a multiplicação do vetor de resíduos por ele mesmo, ou melhor, a multiplicação da transposta do vetor de resíduos por ele mesmo, de acordo com a expressão:

Fonte: Próprio autor

Como também o vetor de resíduos pode ser escritoda forma:

Fonte: Próprio autor

Substituindo em SSR, temos:

Fonte: Próprio autor

Como dito anteriormente, para encontrar os coeficientes da regressão é preciso minimizar a SSR, ou seja, é necessário realizar uma derivada parcial de SSR em relação a beta e igualando a zero.

Expandindo a expressão de SSR

Distribuindo os produtos de SSR chega-se em:

Fonte: Próprio autor

Simplificando a expressão de SSR

Os termos abaixo:

Fonte: Próprio autor

São ambos correspondentes à um escalar e, além disso, um é a transposta do outro. Como a transposta de um escalar é o próprio escalar, então trata-se do mesmo termo e, a soma dos dois pode ser excrita como o segundo termo multiplicado por 2:

Fonte: Próprio autor

Sendo assim,

Fonte: Próprio autor

Derivando a SSR em relação à beta

Como a SSR tem três termos, deriva-se cada um deles.

1 — Derivada do primeiro termo

Fonte: Próprio autor

A derivada do primeiro termo é zero, pois não há a presença de um elemento beta, então torna-se a derivada de uma constante (que sempre é zero).

2 — Derivada do segundo termo

Fonte: Próprio autor

Neste caso, a derivada de “beta multiplicado uma constante” é a própria constante.

3 — Derivada do terceiro termo

Fonte: Próprio autor

O termo que está sendo derivado pode ser reescrito da seguinte maneira:

Fonte: Próprio autor

Neste caso, deve-se considerar que:

  • Olhando para o lado direito da igualdade, a “transposta de X” multiplicada por “X” resulta em uma matriz simétrica, já que:
Fonte: Próprio autor

Quando uma matriz é igual a sua transposta, ela é simétrica.

  • Para facilitar, podemos fazer a seguinte consideração:
Fonte: Próprio autor

Assim, temos:

Fonte: Próprio autor

Pela regra do produto:

Fonte: Próprio autor

Como:

Fonte: Próprio autor

Então, substituindo:

Fonte: Próprio autor

Pelo fato de “A” ser uma matriz simétrica, então:

Fonte: Próprio autor

Desta forma,

Fonte: Próprio autor

Substituindo o valor de “A”, chega-se em:

Fonte: Próprio autor

Com isso, a derivada de SSR em relação à beta é:

Fonte: Próprio autor

Definindo os coeficientes

Conforme dito anteriormente, os coeficientes podem ser obtidos igualando a derivada de SSR a zero:

Fonte: Próprio autor

Dividindo por 2 ambos os lados da equação:

Fonte: Próprio autor

Sendo “X_t multiplicado por X” uma matriz invertível, pode-se multiplicar ambos os lados da equação pela inversa:

Fonte: Próprio autor

Sendo assim, consegue-se definir a equação normal (forma direta) da regressão linear:

Fonte: Próprio autor

Através dela, pode-se encontrar os coeficientes beta que melhor se ajustam aos dados.

Como encontrar os coeficientes da regressão em Python?

No tópico anterior foi apresentado como encontrar os coeficientes da regressão de forma manual.

No tópico atual, o objetivo é mostrar como obter estes coeficientes através do Python, durante uma análise. Para isso, será utilizado um dataset que tráz o custo de seguro saúde com base em algumas variáveis como: idade, gênero, IMC, número de filhos, fumante (sim ou não) e área de residência.

Desta forma, podemos importar as bibliotecas e carregar a base de dados à ser utilizada:

# Biblioteca para manipulação de bases de dados
import pandas as pd

# Biblioteca que permite a especificação de modelos estatísticos em Python
import statsmodels.formula.api as smf

# Importando a base de dados
df_insurance = pd.read_csv("insurance.csv")

# Mostrando as 5 primeiras linhas
df_insurance.head()

As cinco primeiras linhas dos dados são:

Fonte: Próprio autor

Em seguida, é utilizada a função ‘ols’ (Ordinary Least Squares — Mínimos Quadrados Ordinários) para ajustar um modelo de regressão linear aos dados. Sendo assim, são estimados os coeficientes (que minimizam a soma dos quadrados dos resíduos) entre as variáveis explicativas e a variável resposta.

Neste caso, foi escolhido estudar a relação entre as variáveis ‘age’(idade), ‘bmi’(IMC) e ‘children’(número de filhos) e a variável ‘charges’(custo), como apresentado a seguir:

# Chamando a função 'ols' e indicando as variáveis envolvidas na regressão 
results = smf.ols('charges ~ age + bmi + children', data = df_insurance).fit()

# Apresentando os resultados da regressão
print(results.summary())

Com isso, são obtidas diversas medidas de resultado para a regressão linear, como segue:

Fonte: Próprio autor

A imagem acima representa todas as características da regressão linear, que serão discutidas no tópico seguinte.

Descrição das métricas da Regressão

Aqui são descritas as métricas obtidas anteriormente, à respeito dos resultados da regressão ajustada aos dados.

coef (Coeficientes)

São os valores estimados dos coeficientes. Neste caso são:

Fonte: Próprio autor

Ou seja, se expressão da regressão linear for reescrita, será apresentada como:

Fonte: Próprio autor

Conclusões:

  1. O aumento de 1 ano na idade da pessoa ocasiona em um aumento de 239.9945 no valor do seguro
  2. Quando o IMC (bmi) aumenta em uma unidade, o valor do seguro aumenta em 332.0834
  3. Um filho a mais ocasiona em um aumento de 542.8647 no valor do seguro

std err (Erro Padrão)

É o erro padrão do coeficiente, medida de erro em torno coeficiente encontrado. Quanto menor o erro padrão, mais precisa é a estimativa do coeficiente obtido.

t (Estatística t)

Trata-se do coeficiente dividido pelo erro padrão. Esta estatística t está relacionada com as seguintes hipóteses:

Fonte: Próprio autor

Para a H0, não há relação significativa entre a variável independente (associada ao coeficiente em questão) e a variável dependente.

Consequentemente, para HA, há uma relação significativa entre a variável independente e a dependente.

P>|t| (p-valor)

O p-valor está diretamente relacionado à estatística t, indicando a probabilidade de obter uma estatística t tão extrema quando à observada, considerando que a H0 não pode ser rejeitada.

Se o p-valor for baixo (geralmente menor que 0.05) então rejeita-se a H0 definida anteriormente. Isso significa que há evidências suficientes de que a relação entre a variável associada ao coeficiente e a variável dependente é relevante, que a variável dependente aumenta/diminui conforme varia a variável explicativa.

Se o p-valor for alto (geralmente maior ou igual que 0.05) então não se pode rejeitar a H0, ou seja, não há evidências estatísticas suficientes de que há uma relação significativa entre a variável associada ao coeficiente e a variável dependente.

Teste de Hipótese: uma ferramenta poderosa para tomadas de decisão baseadas em evidências

No exemplo avalidado, como todos os p-valores são menores que 0.05, então todas as variáveis independentes são significativas para o modelo.

[0.025 0.075]

São os limites para um intervalo de confiança de 95% para o coeficiente avaliado. Na prática, esta métrica representa o intervalo em que o valor do coeficiente se situará, com uma confiança de 95%.

É interessante verificar se o intervalo de confiança inclui o zero, caso não inclua, é um outro indicativo de que a relação entre a variável associada ao coeficiente e a variável dependente seja significativa.

R-squared

Também chamado de R-quadrado ou Coeficiente de Determinação, esta é uma métrica que varia entre 0 e 1 e é utilizada para medir a qualidade do ajuste do modelo, descreve o quanto da variância da variável dependente é explicada pelas variáveis independentes.

R-quadrado = 1 (ou 100%): toda variação na variável dependente é totalmente explicada pelas variáveis independentes.

R-quadrado = 0 (ou 0%): nenhuma variação na variável dependente é explicada pelas variáveis independentes.

Sua expressão é dada por:

Fonte: Próprio autor

Adj. R-squared

No R-quadrado, quando adiciona-se uma nova variável independente o modelo consegue capturar uma maior variabilidade dos dados, o que gera resíduos menores e faz com que o SSR diminua.

Com o SSR diminuindo, o R-quadrado aumenta. Sendo assim, quando é adicionada uma nova variável independente no modelo, o R-quadrado aumenta. Isso gera uma falsa impressão de que o modelo é sempre melhor conforme o número de variáveis vai aumentando.

Para corrigir esta limitação, o R-quadrado é ajustado, sendo adicionado na expressão o número de variáveis independentes e o número de registros (observações), conforme é ilustrado a seguir:

Fonte: Próprio autor

F-statistic

A F-statistic é o resultado de um teste estatístico (chamado teste F), que tem duas situações como hipóteses:

Fonte: Próprio autor

Ou seja, o teste F é uma forma de testar a significância do modelo como um todo, pois ter um coeficiente igual a zero equivale ao fato de a variável independente associada não ter efeito no modelo.

Prob. F-statistic

A Prob. F-statistic é o p-valor associado ao teste F. Sendo assim, se p-valor for muito pequeno (geralmente menor que 0.05), rejeita-se a H0 e conclui-se que há elementos estatísticos suficientes que indicam a existência de pelo menos um coeficiente (exceto o intercepto) diferente de zero.

No caso do exemplo do seguro saúde, a Prob. F-statistic é muito menor que 0.05, ou seja, pelo menos uma variável independente é significativa para o modelo.

Log-Likelihood

Esta métrica está relacionada ao logarítmo da função de verossimilhança e basicamente informa o quanto que os dados observados poderiam ser obtidos com o modelo ajustado, ou seja, informa o ajuste do modelo aos dados.

Uma log-Likelihood muito grande (ou pouco negativa) mostra que o modelo se ajusta muito bem aos dados.

AIC/BIC

AIC (Critério de Informação de Akaike): Trata-se de um ajuste para modelos muito complexos, buscando equilibrar complexidade e ajuste dos dados, para evitar o overfitting.

BIC (Critério de Informação Bayesiano): Também trata-se de um ajusta para evitar modelos muito complexos, mas penaliza os parâmetros de um modo mais forte do que o AIC.

Na comparação entre diferentes modelos, é preferível valores mais baixos de AIC/BIC.

Omnibus

Esta medida refere-se ao teste de Omnibus, que verifica a normalidade dos resíduos para modelos de regressão. São avaliadas as seguintes hipóteses:

Fonte: Próprio autor

Prob (Omnibus)

Trata-se do p-valor associado ao teste de Omnibus. Caso o p-valor for menor que 0.05, então rejeita-se a H0 e conclui-se que não há evidências estatísticas suficientes de que os resíduos são representados por uma distribuição normal.

Skew (Assimetria)

Trata-se da assimetria da distribuição dos resíduos.

Assimetria = 0: Um valor zero indica que a distribuição é simétrica

Assimetria > 0: Um valor positivo indica que a distribuição é assimétrica à direita, com uma cauda mais alongada à direita.

Assimetria < 0: Um valor negativo indica que a distribuição é assimétrica à esquerda, com uma cauda mais alongada à esquerda.

Como indicado nos gráficos à seguir:

Fonte: Próprio autor

Kurtosis (Curtose)

Trata-se do grau de achatamento da distribuição dos resíduos.

Curtose = 0: Um valor zero indica que a distribuição possui a forma de um sino.

Curtose > 0: Um valor positivo indica que a distribuição possui um pico mais acentuado, com caudas mais grossas.

Curtose < 0: Um valor negativo indica que a distribuição possui um pico mais achatado, com caudas mais leves.

Como indicado nos gráficos à seguir:

Fonte: Próprio autor

Durbin-Watson

Este também é um teste estatístico, mas está voltado à identificação de autocorrelação nos resíduos da regressão.

Lembrando que, em uma autocorrelação, é verificado a relação entre os valores de uma mesma variável, como em uma série temporal, por exemplo, na qual é possível verificar se valores posteriores estão correlacionados com valores anteriores.

O valor do teste pode ser determinado da seguinte forma:

Fonte: Próprio autor

Para este teste, o valor d varia entre 0 e 4, sendo:

d = 2: Quando o valor é próximo de 2, então não há autocorrelação entre os resíduos.

d > 2: Para d significativamente maior que 2, é indicado que há uma autocorrelação negativa entre os resíduos

d < 2: Para d significativamente menor que 2, é indicado que há uma autocorrelação positiva entre os resíduos

Jarque-Bera (JB)

Este é um outro teste que verifica a normalidade dos resíduos, mas neste caso, acaba levando em consideração também parâmetros como assimetria e curtose. Possui as seguintes hipóteses:

Fonte: Próprio autor

Prob(JB)

Assim como o Prob(Omnibus), o Prob(JB) refere-se ao p-valor, mas neste caso, associado ao teste Jarque-Bera.

Caso o p-valor for menor que 0.05, então rejeita-se a H0 e conclui-se que não há evidências estatísticas suficientes de que os resíduos são representados por uma distribuição normal.

Cond. No.

Também conhecida por “Número de Condição”, esta métrica avalia a multicolinearidade em um modelo de regressão, ou seja, o quão fortemente as variáveis independentes estão associadas entre si.

Desta forma, um valor baixo indica a ausência de multicolinearidade e, valores próximos ou maiores a 100 merecem uma investigação mais profunda se há variáveis multicolineares.

Conclusão

Neste artigo foi dado um grande passo no entendimento de uma análise inferencial em uma regressão linear.

Primeiramente os conceitos de previsão e inferência foram logo separados e devidamente identificados.

Lembrando: Na inferência queremos entender as relações entre as variáveis.

Em seguida, o algoritmo da regressão linear foi devidamente ilustrado, com exemplo prático.

A apresentação da inferência foi melhor detalhada, com mais detalhes e, foi introduzido todo o racional MATEMÁTICO por trás da obtenção dos coeficientes da regressão, através da equação normal.

Como nem tudo é teoria, foi trabalhado um exemplo prático de previsão de seguro saúde e, com base nos resultados obtidos, TODAS as métricas de resultado foram explicadas!!

LOGO MAIS SAI A PARTE 2 DESTE ARTIGO, QUE SERÁ TÃO BOA QUANTO A PRIMEIRA.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Ainda não me segue no Medium? Aproveite e me siga para ficar sabendo toda vez que sair um artigo novo do forninho!!

LinkedIn: https://www.linkedin.com/in/edson-junior/

GitHub: https://github.com/ejunior029

Referências

  1. Clube de Assinaturas — André Yukio
  2. Formação Completa em Ciência de Dados — Anwar Hermuche
  3. P.E.D (Preparatório para Entrevistas em Dados) — Por Professora Renata Biaggi
  4. Canal do YouTube da Profª Fernanda Maciel
  5. Interpretação das estatísticas da regressão — Minitab

--

--