Regressão linear: teoria e prática

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.

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.

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

🔗

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:

Gráfico de dispersão de duas variáveis, ponto de partida da regressão linear

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?

Três retas de regressão possíveis sobre o mesmo gráfico de dispersão

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 x: encontrar uma reta que minimize a distância da mesma com os pontos de dados.

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

yt = β0 + β1 xt + εt

Os coeficientes β0 e β1 são o intercepto e a inclinação da reta, respectivamente, e podem ser entendidos como:

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

O termo ε é o erro do modelo, ou seja, a distância entre os valores observados e os valores estimados (ε = y − (β0 + β1 x)), 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:

Regressão linear com o intercepto, a inclinação e o erro destacados no 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 é:

yt = β0 + β1 x1,t + β2 x2,t + ⋯ + βk xk,t + εt

Onde y é a variável a ser explicada pelas variáveis independentes x1, x2, ⋯, xk. Vale dizer que o termo de erro ε 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 xk.

Na regressão múltipla, cada coeficiente β1, β2, ⋯, β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 ε 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:

εt = yt − β0 − β1 xt

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 quadrados dos resíduos (erros), ou seja, minimizando:

TΣt=1 εt2

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. Existem variações que partem do mesmo princípio, como os Mínimos Quadrados em 2 Estágios (TSLS).

Ao derivar esse problema de minimização em relação a β0 e β1, obtemos que:

β^1 =

Σ (xt − x̄)(yt − ȳ)
Σ (xt − x̄)2
β^0 = ȳ − β^1

Onde ȳ e é 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:

Preçot = β0 + β1 Áreat + εt

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

# Carrega pacotes
library(dplyr)
library(modeldata)
library(ggplot2)
library(splitTools)# Importa dados
dados <- dplyr::select(modeldata::ames, "Y" = "Sale_Price", "X" = "Lot_Area")# Gráfico de dispersão
ggplot2::ggplot(dados) +
ggplot2::aes(y = Y, x = X) +
ggplot2::geom_point()

Gráfico de dispersão entre preço de venda e tamanho do lote dos imóveis de Ames

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:

# Cria amostragens
set.seed(1984)
particoes <- splitTools::partition(
y = dados$Y,
p = c(treino = 0.7, teste = 0.3),
type = "basic"
)# Separa amostras
treino <- dados[particoes$treino, ]
teste <- dados[particoes$teste, ]# Reporta número de linhas
print(paste0("Treino: ", nrow(treino), " linhas"))
print(paste0("Teste: ", nrow(teste), " linhas"))

[1] "Treino: 2051 linhas"
[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. Tratamos esse tipo de limpeza em detalhe no guia de Pré-processamento: lidando com valores extremos e valores ausentes. Abaixo plotamos um gráfico de dispersão usando a amostra de treino após esse pré-processamento:

# Função para computar regra de corte IQR
regra_iqr <- function(x, side) {
if (side == "lower") {
lower <- quantile(x = x, probs = 0.25, na.rm = TRUE) - 1.5 * IQR(x = x, na.rm = TRUE)
return(lower)
} else if (side == "upper") {
upper <- quantile(x = x, probs = 0.75, na.rm = TRUE) + 1.5 * IQR(x = x, na.rm = TRUE)
return(upper)
} else stop("side tem que ser lower ou upper")
}# Filtra dados
treino <- treino |>
dplyr::filter(
!Y < regra_iqr(Y, "lower") & !Y > regra_iqr(Y, "upper"),
!X < regra_iqr(X, "lower") & !X > regra_iqr(X, "upper")
)
teste <- teste |>
dplyr::filter(
!Y < regra_iqr(Y, "lower") & !Y > regra_iqr(Y, "upper"),
!X < regra_iqr(X, "lower") & !X > regra_iqr(X, "upper")
)# Gráfico de dispersão
ggplot2::ggplot(treino) +
ggplot2::aes(y = Y, x = X) +
ggplot2::geom_point()

Gráfico de dispersão da amostra de treino após a remoção de valores extremos pela regra do IQR
[1] "Treino: 1887 linhas"
[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).
    Planilha do Google Sheets com as colunas Y, X, (Xi − Xméd), (Yi − Yméd) e as linhas de Soma, Média, Beta 1 e Beta 0
  5. Comece calculando a média das colunas Y e X e armazene o resultado no final da tabela, conforme a imagem.
    Cálculo da média das colunas Y e X na planilha, armazenado na linha Média
  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.
    Colunas D e E da planilha com os desvios de X e de Y em relação às suas médias
  7. Na coluna da direita, F, multiplique os valores de D (X − Xméd) pelos valores de E (Y − Yméd), conforme a imagem.
    Coluna F da planilha com o produto dos desvios de X e de Y
  8. Na última coluna, G, calcule o quadrado da coluna D (X − Xméd), conforme a imagem.
    Coluna G da planilha com o quadrado dos desvios de X em relação à média
  9. Prossiga calculando a soma das duas últimas colunas, F e G, e armazene o resultado no final da tabela, conforme a imagem.
    Soma das colunas F e G na planilha, os dois termos da fórmula do Beta 1
  10. Por fim, podemos calcular os coeficientes começando pelo Beta 1, basta aplicar a fórmula acima, conforme a imagem.
    Cálculo do coeficiente Beta 1 na planilha, dividindo a soma da coluna F pela soma da coluna G
  11. Finalize calculando o coeficiente Beta 0 aplicando a fórmula da imagem.
    Cálculo do coeficiente Beta 0 na planilha, com o resultado de 110.172,244

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:

β^1 =

121.621.436.111,731
18.718.154.712,417

= 6,498
β^0 = 168.799,616 − 6,498 × 9.023,049 = 110.172,244

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:

Preçot = 110.172,244 + 6,498 × Áreat

📩 Quem lê o dado decide melhor

Inflação, juros e atividade não se leem no olho, se leem com método. No Boletim AM mostramos, todo dia, a estatística, a econometria e a IA por trás da leitura de conjuntura. Com a fonte, com a ressalva e com o código quando ele importa.

Receber o Boletim AM →

Veja a aula completa em vídeo

Nesta aula, percorremos o mesmo caminho deste texto com o código rodando na tela, da teoria do modelo linear até a estimação no R.

O modelo linear, o estimador de mínimos quadrados e a estimação aplicada ao preço de imóveis.

Estimação MQO no R

Agora que entendemos a mecânica do método, podemos deixar o trabalho pesado com o computador. No R, a função lm() estima o modelo com uma linha, recebendo a fórmula Y ~ X e o conjunto de dados:

# Estima modelo
modelo <- lm(formula = Y ~ X, data = treino)# Reporta resultados
summary(modelo)
Call:
lm(formula = Y ~ X, data = treino)Residuals:
Min 1Q Median 3Q Max
-191832 -38373 -11002 35593 185467Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.102e+05 3.965e+03 27.78 <2e-16 ***
X 6.497e+00 4.149e-01 15.66 <2e-16 ***
---
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: < 2.2e-16

Repare que os coeficientes estimados pela função são os mesmos que calculamos na planilha: o intercepto em 1,102 × 105, ou seja, 110.172, e a inclinação em 6,497. A diferença na última casa decimal vem apenas do arredondamento da planilha.

Com o modelo estimado, podemos prever a amostra de teste e medir o erro pela raiz do erro quadrático médio (RMSE), que expressa o erro médio na mesma unidade da variável dependente, em dólares:

# Previsão para a amostra de teste
previsao <- predict(modelo, newdata = teste)# Acurácia pelo RMSE
erro_treino <- treino$Y - modelo$fitted.values
erro_teste <- teste$Y - previsao
rmse_treino <- sqrt(mean(erro_treino^2, na.rm = TRUE))
rmse_teste <- sqrt(mean(erro_teste^2, na.rm = TRUE))# Imprime valores
print(paste0("RMSE de treino: ", rmse_treino))
print(paste0("RMSE de teste: ", rmse_teste))

[1] "RMSE de treino: 56738.8266780813"
[1] "RMSE de teste: 49921.7191925989"

O R² de 0,1151 indica que o tamanho do lote explica cerca de 11,5% da variação do preço de venda. É um valor baixo, e isso faz sentido: o preço de um imóvel depende de muitas outras características além da área do terreno, como localização, ano de construção e qualidade do acabamento. O caminho natural, a partir daqui, é a regressão múltipla.

Vale notar que o erro de teste ficou abaixo do erro de treino neste exercício. O comportamento usual é o oposto, e a relação entre o ajuste dentro da amostra e o desempenho fora dela é o que se estuda no dilema de viés e variância em modelos preditivos.

Considerações finais

A regressão linear é o ponto de partida de boa parte da econometria e do aprendizado de máquina. Entender a mecânica do estimador de mínimos quadrados, como fizemos aqui na planilha e no R, é o que permite ler criticamente um resultado em vez de apenas rodar uma função.

O mesmo caminho percorrido neste exercício, que consiste em importar, separar amostras, tratar e estimar, se aplica a boa parte dos problemas de modelagem. O que muda é a aplicação:

  • Economista: estimar elasticidades e relações entre variáveis macroeconômicas, com o cuidado de interpretar cada coeficiente ceteris paribus.
  • Analista de dados: construir o modelo de referência (baseline) contra o qual qualquer método mais sofisticado precisa provar que vale a pena.
  • Analista de mercado: relacionar preços, volumes e indicadores, e medir o erro fora da amostra antes de confiar na previsão.
  • Estudante e pesquisador: dominar o método que é pré-requisito para praticamente toda a econometria aplicada.

Aprender a linguagem é o que abre a porta para todas essas frentes.

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.

Wooldridge, J. M. (2020). Introductory Econometrics: A Modern Approach. 7th edition. Cengage Learning.

Aprenda a construir a análise completa

O AM Black é a assinatura anual com acesso a todas as formações da Análise Macro: da regressão linear à modelagem econométrica aplicada, em R e em Python, pelo mesmo caminho percorrido aqui.

Conheça o AM Black →

Leia também:

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp