Regressão linear: teoria e prática

Neste texto aprenderemos sobre regressões lineares, o que são, como funcionam e como podem ser usadas. Abordaremos de forma introdutória e objetiva o assunto e assumimos que o leitor possua algum conhecimento prévio sobre álgebra linear, cálculo diferencial e estatística.

Tomaremos como base o livro de Hyndman e Athanasopoulos (2021), que aborda o assunto de maneira prática e introdutória, focando em previsão. Se você precisar ou quiser se aprofundar, veja também Wooldridge (2020) para uma exposição mais detalhada. Este último costuma ser livro-texto de cursos de graduação, especialmente em disciplinas de econometria.

Para aprender mais e ter acesso a códigos confira o curso de Modelagem e Previsão usando Python ou comece do zero em análise de dados com a formação Do Zero à Análise de Dados com Python.

O modelo linear

Vamos começar entendendo o que é o modelo de regressão linear, suas aplicações e esclarecer algumas nomenclaturas utilizadas.

O que é?

Uma regressão linear é uma forma de modelar a relação entre variáveis utilizando uma função linear (combinação linear) relativamente simples e interpretável, expressa por meio de uma equação. A ideia básica da regressão linear é que tentamos explicar uma variável y assumindo uma relação linear com outra variável x.

Por exemplo, podemos tentar explicar as vendas mensais, y, de produtos/serviços de uma empresa com base no gasto mensal, x, em publicidade/propaganda.

Aplicações

Alguns exemplos de uso de regressões lineares são:

  • Previsão
  • Análise de relação entre variáveis
  • Análise de tendência
  • Análise de elasticidade

Nomenclaturas

A variável do lado esquerdo da equação costuma ser referida como y e pode ter vários nomes a depender do interlocutor: variável dependente, explicada, resposta, endógena.

As variáveis do lado direito da equação costumam ser referidas como x e também podem ter vários nomes: variável independente, explicativa, preditora, regressora, exógena, covariável.

Nesse texto usaremos a nomenclatura variável dependente e independente.

Regressão simples

No caso mais simples, a regressão linear relaciona uma variável dependente y e uma única variável independente x. Plotando estas variáveis em um gráfico de dispersão, imagine que o resultado seja esse:

Vamos tomar como exemplo que o y é o preço de imóveis e que o x é a área em metros quadrados. Dessa forma, queremos prever o preço de imóveis com base na área dos mesmos. Em outras palavras, queremos relacionar estas variáveis usando regressão linear, o que significa que queremos encontrar uma linha (reta) que, quando desenhada no gráfico, melhor relacione as variáveis.

Existem muitas possibilidades de linhas para representar a relação entre as variáveis. Das opções abaixo, qual seria a que melhor cumpre esse objetivo?

Seria a linha azul, verde, azul, nenhuma? Uma linha horizontal? Vertical?

É razoável dizer que a linha verde parece ser a reta que melhor relaciona os dados, pois ela é a reta que está menos distante da maioria das observações. E é exatamente isso, ilustrado didaticamente no gráfico acima, que o modelo de regressão linear tenta fazer ao relacionar as variáveis y e xencontrar uma reta que minimize a distância da mesma com os pontos de dados.

equação do modelos de regressão linear simples pode ser representada conforme abaixo:

Os coeficientes Beta_0 Beta_1 são o intercepto e a inclinação da reta, respectivamente, e podem ser entendidos como:

  • Beta_0 representa o valor esperado de y quando x=0;
  • Beta_1 representa a mudança média esperada em y resultante de um aumento de uma unidade em x.

O termo e é o erro do modelo, ou seja, a distância entre os valores observados e os valores estimados (e=y−(Beta_0+Beta_1x)), pode ser entendido como aquilo que o modelo não consegue explicar (existem muitos detalhes técnicos sobre esse termo que iremos omitir aqui).

Visualmente, estes termos correspondem aos elementos destacados neste gráfico:

No modelo linear, os parâmetros (também chamados de coeficientes) são desconhecidos e estimados a partir dos dados observados das variáveis. No exemplo, a reta tem uma inclinação positiva, o que reflete uma relação positiva entre as variáveis.

Regressão múltipla

A regressão linear múltipla é uma extensão natural do caso simples para quando há mais de uma variável independente no modelo. A representação geral desse modelo é:

Onde y é a variável a ser explicada pelas variáveis independentes x_1, x_2, ⋯, x_k. Vale dizer que o termo de erro e não significa um “equívoco”, mas apenas o desvio da “reta” de ajuste do modelo (nesse caso a representação gráfica teria múltiplas dimensões). Ele captura tudo que pode afetar y mas não está presente em x_k.

Na regressão múltipla, cada coeficiente Beta_1, Beta_2, ⋯, Beta_k do modelo mede o efeito de cada variável independente após levar em conta o efeito de todas as demais variáveis do modelo. Sendo assim, dizemos que cada coeficiente mede o efeito marginal das variáveis independentes. Ao analisá-los individualmente costumam-se utilizar a expressão ceteris paribus, que significa “tudo o mais constante”.

Premissas

Quando usamos o modelo de regressão linear, implicitamente assumimos algumas premissas sobre a equação anterior. Aqui vamos destacar algumas delas:

Primeiro, assumimos que o modelo é uma aproximação razoável da realidade, ou seja, a relação entre a variável dependente e as variáveis independentes satisfazem essa equação linear.

Segundo, assumimos as seguintes premissas sobre o termo de erro e da regressão:

  • Erros têm média zero, caso contrário, os valores previstos de y serão sistematicamente tendenciosos;
  • Erros não são autocorrelacionados, caso contrário, as previsões serão ineficientes, pois haveria mais informações nos dados que poderiam ser exploradas;
  • Erros não têm relação com as variáveis independentes, caso contrário, haveria mais informações que deveriam ser incluídas na parte sistemática do modelo.

Também é útil ter os erros distribuídos normalmente com uma variância constante para produzir intervalos de previsão. Vale pontuar que as premissas podem variar conforme o método de estimação dos coeficientes.

O estimador de mínimos quadrados

Para estimar um modelo de regressão linear, geralmente só temos em mãos os dados observados, mas os coeficientes são desconhecidos. Precisamos estimá-los!

Uma maneira (provavelmente a mais utilizada) de estimar os coeficientes do modelo é minimizando o termo de erro. Usando a equação da regressão linear simples, o termo de erro pode ser representado como:

Ou seja, o termo de erro é a diferença entre os valores observados de y e a estimativa (“reta”) do modelo. Sendo assim, a técnica de mínimos quadrados ordinários possibilita encontrar valores para os coeficientes por uma forma eficaz, minimizando a soma dos quadrado dos resíduos (erros), ou seja, minimizando:

Isso é chamado de estimação de mínimos quadrados pois computa o menor valor da soma do quadrado dos resíduos, procedimento que pode ser feito por derivada. Costuma-se utilizar várias abreviações para esse método, como MQO, MMQ ou OLS.

Ao derivar esse problema de minimização em relação a Beta_0 e Beta_1, obtemos que:

Onde ybarra e xbarra é a média amostral de y e x, respectivamente. Veja que não é um bicho de sete cabeças, certo? Vamos fazer um exemplo numérico para facilitar o entendimento.

Exemplo prático: regressão para previsão de preço de imóveis

Agora que você entendeu o básico sobre o assunto, vamos fazer um exercício aplicado de regressão linear.

Conjunto de dados

Usaremos um conjunto de dados sobre imóveis, o conhecido Ames Housing Data, que possui 82 variáveis sobre 2930 imóveis na cidade de Ames, em Iowa (EUA). Entre as variáveis, existe o Preço de Venda (y) e o Tamanho do Lote em m² (x), sendo assim, nosso objetivo será prever y com base em x. Para mais informações sobre os dados veja De Cock (2011).

O modelo a ser estimado é este:

Abaixo importamos os dados e plotamos um gráfico de dispersão entre as variáveis:

Código

Separação de amostras

Agora vamos separar o conjunto de dados em duas amostras, de treino e de teste, usando amostragem aleatória simples com proporções 70%/30%, respectivamente. Abaixo reportamos a quantidade de linhas em cada caso:

Código
[1] "Treino: 2051 linhas"
Código
[1] "Teste: 879 linhas"

Pré-processamento de dados

Conforme pode ser observado no gráfico de dispersão acima, existem valores extremos nos dados. Vamos optar por aplicar a regra de corte do IQR, conforme Hyndman e Athanasopoulos (2021), para remover estes valores dos conjuntos de dados. Abaixo plotamos um gráfico de dispersão usando a amostra de treino após esse pré-processamento:

Código

Código
[1] "Treino: 1887 linhas"
Código

[1] "Teste: 792 linhas"

Estimação MQO “na mão”

Vamos focar em aprender primeiro a mecânica do método de mínimos quadrados ordinários, fazendo os cálculos “na mão”, com a ajuda de uma planilha eletrônica. Após aprender o fundamento do método, iremos expor os códigos, usando linguagem de programação, que fazem tudo automaticamente!

O procedimento abaixo é para finalidade didática, para entender o que o código faz. Se você já conhece o método é seguro pular essa etapa.

  1. Baixe os dados da amostra de treino em formato CSV por esse link.
  2. Faça o login na sua conta do Google, navegue até o Google Drive e faça o upload do arquivo CSV.
  3. Abra o arquivo de dados CSV no Google Planilhas (Sheets).
  4. Adicione, conforme a imagem, os nomes para novas colunas e, no final da tabela, linhas para Soma, Média e Beta 1 e Beta 0 para finalidade de calcular os termos das fórmulas acima (ocultamos várias linhas para caber na imagem).
  5. Comece calculando a média das colunas Y e X e armazene o resultado no final da tabela, conforme a imagem.
  6. Prossiga calculando cada valor de Y e X menos a média correspondente (o valor da média deve ser fixado na fórmula) e armazene o resultado nas colunas D (X - Xméd) e E (Y - Yméd), conforme a imagem.
  7. Na coluna da direita, F, multiplique os valores de D (X - Xméd) pelos valores de E (Y - Yméd), conforme a imagem.
  8. Na última coluna, G, calcule o quadrado da coluna D (X - Xméd), conforme a imagem.
  9. Prossiga calculando a soma das duas últimas colunas, F e G, e armazene o resultado no final da tabela, conforme a imagem.
  10. Por fim, podemos calcular os coeficientes começando pelo Beta 1, basta aplicar a fórmula acima, conforme a imagem.
  11. Finalize calculando o coeficiente Beta 0 aplicando a fórmula da imagem.

Viu só? Nem doeu e agora você sabe fazer uma regressão linear “no braço” (nem todo mundo sabe)!

Se deu tudo certo você chegou a estes valores:

O chapéu significa que é o coeficiente estimado, pois o coeficiente “verdadeiro” é desconhecido. Dessa forma, este é o simples modelo estimado para o preço dos imóveis em Ames, Iowa:

Se você resolver essa equação substituindo Tamanho do Lote em m2 pelos dados da planilha, é possível obter a reta de ajuste do modelo, conforme o gráfico:

Estimação MQO no R

Agora vamos exemplificar no R a estimação de uma regressão linear simples usando o exemplo acima. Tudo que você precisa fazer é:

  1. Abrir seu ambiente de programação (RStudio);
  2. Carregar pacotes e os dados;
  3. Estimar o modelo com a função lm() do pacote {stats}.

A função lm() é muito útil pois permite expressarmos o modelo como uma fórmula, ou seja, passamos para o seu primeiro argumento, chamado formula, a expressão tal como o modelo proposto acima, ou seja: y ~ x.

No lado direito da fórmula é o nome da variável dependente e no lado esquerdo, separado pelo til ~, é o nome da variável independente. Além disso, devemos dizer onde os dados estão (em qual objeto) no argumento data. Aqui está o código:

Código

A função lm() estima o modelo da fórmula computando o Beta_0 e o Beta_1, sendo que o Beta_0 é automaticamente adicionado, mesmo que não esteja explicitamente declarado na fórmula. Para detalhes e outras informações verifique a documentação (execute ?lm no Console).

Para ver os valores dos coeficientes estimados utilize o sumário do objeto:

Código

Call:
lm(formula = Y ~ X, data = treino)

Residuals:
    Min      1Q  Median      3Q     Max 
-191832  -38373  -11002   35593  185467 

Coefficients:
               Estimate  Std. Error t value            Pr(>|t|)    
(Intercept) 110172.2442   3965.4968   27.78 <0.0000000000000002 ***
X                6.4975      0.4149   15.66 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 56770 on 1885 degrees of freedom
Multiple R-squared:  0.1151,    Adjusted R-squared:  0.1146 
F-statistic: 245.2 on 1 and 1885 DF,  p-value: < 0.00000000000000022

E são os mesmos valores que calculamos de forma manual anteriormente!

Para finalizar, abaixo utilizamos este modelo estimado para produzir previsões para a amostra de teste e calculamos a métrica de acurácia RMSE para ambas as amostras:

Código
[1] "RMSE de treino: 56738.8266780813"
Código
[1] "RMSE de teste: 49921.7191925989"

Esse modelo está “bom”? Para fins de previsão, errar a precificação de um imóvel em ~50 mil dólares pode ser muito custoso. Há bastante margem para melhorar o modelo, como adicionando mais variáveis independentes, por exemplo, mas vamos encerrar por aqui por brevidade.

Conclusão

Como estimar uma regressão linear sem linguagem de programação? Nesse texto introduzimos esse modelo fundamental de ciência de dados, abrindo as fórmulas e ajustando uma regressão “na mão”, para que o código pronto não seja uma caixa preta. Usamos como exemplo o problema da precificação de imóveis, com aplicações em R e Python.

Referências

De Cock, D. (2011). Ames, Iowa: Alternative to the Boston housing data as an end of semester regression project. Journal of Statistics Education, 19(3).

Hyndman, R. J., & Athanasopoulos, G. (2021) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3. Accessed on 2022-04-01.

Wooldridge, J. M. (2020). Introductory Econometrics: A Modern Approach. Cengage learning.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Transfer Learning: mostrando porque o Python está na ponta do desenvolvimento

A aprendizagem por transferência (transfer learning) é o reuso de um modelo pré-treinado em um novo problema. Portanto, sua utilização torna-se um avanço enorme para a previsão de diferentes tipos de variáveis, principalmente para aquelas ordenadas no tempo. Mostramos nesta postagem o uso do Transfer Learning com o Python para o caso de Séries Temporais.

Criando Tabelas com o Python: mostrando o poder da linguagem sobre o Excel

Nos dias atuais, pessoas que trabalham com dados estão constantemente confrontados com um dilema: criar uma tabela não tão genial no Excel ou manter em um formato ainda pior, como um dataframe, mas mantendo a flexibilidade de obtenção dos dados. Podemos resolver esse grande problema, unindo a flexibilidade e beleza ao usar a biblioteca great_tables do Python.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.