Logo Regressão Linear

Tutorial Transformação Digital nº11

Autor
Afiliação

Fundação João Pinheiro

Resumo

Neste tutorial são abordados alguns conceitos sobre regressão linear, incluindo regressão linear simples e múltipla e análise, utilizando a linguagem e ambiente de computação estatística R. São apresentados alguns exemplos práticos com os respectivos códigos na linguagem R.

Contato: transformacao.digital@fjp.mg.gov.br

1 Introdução

A regressão linear é um método estatístico usado para entender a relação entre uma variável dependente (ou resposta) e uma ou mais variáveis independentes (ou preditoras). O objetivo é encontrar uma equação que descreva essa relação, de forma que, dado um valor das variáveis independentes, possamos prever o valor da variável dependente.

Tipicamente usada quando o desfecho (ou variável dependente) é numérico ou contínuo, pois a relação entre a variável dependente e as variáveis independentes é modelada por uma linha reta. Isso significa que a variável dependente pode assumir uma infinidade de valores dentro de um intervalo, como a temperatura, a altura, o preço, a quantidade de vendas, entre outros.

Em uma regressão linear simples, onde há apenas uma variável independente, a relação é representada por uma linha reta. A equação dessa linha é geralmente expressa como:

y=a+bx

Onde:

  • y = é a variável dependente,

  • x = é a variável independente,

  • a = é o intercepto (onde a linha cruza o eixo y),

  • b = é o coeficiente de inclinação, que mostra a mudança em y para uma unidade de mudança em x.

Quando há mais de uma variável independente, a regressão linear múltipla é usada, estendendo essa fórmula para incluir múltiplos coeficientes.

Exemplo:
Suponha que o custo de atos públicos (Y) em Alphaville seja determinado pelo número de participantes (x), da seguinte forma: Y = valor_fixo + custo_variável * x. Utilizando regressão linear, analisamos essa relação.

O gráfico demonstra a tendência de aumento de custos com o crescimento do público.

# Define o espelho do CRAN (escolha um próximo a você)
options(repos = c(CRAN = "https://cran.rstudio.com/")) # Ou outro espelho

# Carregar pacotes necessários}

library(ggplot2)

# Criar dados de exemplo
set.seed(123)
x <- 1:100
y <- 2 * x + rnorm(100, mean = 0, sd = 10)

# Ajustar modelo de regressão linear
modelo <- lm(y ~ x)

# Criar gráfico de dispersão com linha de regressão
ggplot(data = data.frame(x, y), aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(title = "Regressão Linear Simples", x = "Número de Participantes", y = "Custo variável")

2 Interpretação e Aplicações

A reta de regressão é uma ferramenta poderosa que nos permite:

Modelar a Relação entre Variáveis: Representar a dependência de uma variável quantitativa (desfecho ou variável resposta) em relação a outra variável (explicativa ou preditora), que pode ser quantitativa ou qualitativa, por meio de uma equação linear. Essa equação descreve a relação matemática entre as variáveis.

Predizer Valores: Estimar valores para a variável resposta (Y) a partir de valores especificados da variável preditora (x), mesmo que esses valores de x não tenham sido observados diretamente nos dados originais. Importante: A predição é mais confiável dentro da faixa de valores de x observados nos dados utilizados para construir o modelo. Extrapolar para valores muito fora dessa faixa pode levar a resultados imprecisos.

Avaliar a Qualidade do Ajuste: O coeficiente de determinação (R²) mede a proporção da variabilidade na variável resposta que é explicada pelo modelo de regressão. R² varia de 0 a 1, onde valores mais próximos de 1 indicam um melhor ajuste. Por exemplo, um R² de 0,71 significa que 71% da variação nos dados é explicada pela reta de regressão

3 Requisitos:

Para garantir a validade das inferências feitas a partir de um modelo de regressão linear, algumas suposições importantes devem ser atendidas:

  1. Homocedasticidade: A variância da variável resposta (y) deve ser constante para todos os valores da variável preditora (x). Em outras palavras, a dispersão dos pontos em torno da reta de regressão deve ser similar ao longo de toda a reta.
  2. Linearidade: A relação entre as variáveis deve ser linear. O gráfico de dispersão dos dados deve mostrar uma tendência linear, e não uma relação curvilínea ou outra forma não-linear.
  3. Independência: As observações devem ser independentes umas das outras. Isso significa que o valor de y para uma observação não deve ser influenciado pelo valor de y para outras observações.
  4. Normalidade (aproximada) dos Resíduos: Os resíduos (a diferença entre os valores observados de y e os valores preditos pelo modelo) devem seguir uma distribuição aproximadamente normal. Essa suposição é importante para a validade dos testes estatísticos associados à regressão.
  5. Mensuração sem Erro da Variável Preditora (X): Idealmente, a variável preditora deve ser medida sem erro. Na prática, algum erro de mensuração é comum, mas erros grandes podem afetar a precisão do modelo.

Os gráficos são os seguintes:

  1. Homocedasticidade e Linearidade: Gráfico de resíduos vs preditos
Os pontos devem ficar aleatoriamente distribuídos em torno de uma linha horizontal paralela ao eixo x na altura do resíduo zero
  1. Homocedasticidade (somente); Gráfico de \(\sqrt(abs( resíduo ) )\) vs valor pedito:

    Os pontos devem ficar aleatoriamente distribuídos em torno de uma linha horizontal paralela ao eixo x mas não do valor zero

  2. Normalidade: gráfico de probabilidade dos resíduos. Os pontos deve ficar distribuídos ao longo da reta y = x

  3. Detecção de pontos atípicos: distância de Cook: valores grandes são identificados como outliers.

3.1 Tratamento inicial

Para começar, é necessário colocar sua base no R. Pode ser criada diretamente ou lida através do comando read. E a seguir classifica as variáveis do estudo conforme necessidade.

# df<-read.table("base_de_dados.txt",h=T) #Caso tenha uma base de dados a ser inserida

# is.numeric(x) #verifica se a variável está como númerica
# is.factor(z) #verifica se a variável está como categórica

# x <- as.numeric(x)  #classifica variável como númerica
# z <- as.factor(z)  # Converte para categórico

No nosso caso, estamos atuando apenas com variáveis numéricas. Mas o script apresentado oferece as demais opções.

3.2 Gráfico de Dispersão

Primeiro passo na análise de regressão é visualizar a relação entre as duas variáveis através de um gráfico de dispersão.

O gráfico ajuda a identificar qualquer padrão linear entre as variáveis.

# Criar gráfico de dispersão com linha de regressão
ggplot(data = data.frame(x, y), aes(x = x, y = y)) +
  geom_point() +
  geom_smooth(method = "lm", col = "blue") +
  labs(title = "Relação de custo variável por participante", x = "Número de Participantes", y = "Custo variável")

3.3 Correlação

Agora vamos calcular a correlação entre ambos.

A correlação nos dá uma medida da força e direção da relação entre as duas variáveis. O valor varia de -1 (correlação negativa perfeita) a +1 (correlação positiva perfeita). Um valor próximo de 0 indica que não há correlação linear significativa.

Para testar estatisticamente a hipótese de que a correlação é diferente de zero, podemos usar o teste de correlação:

O teste de correlação nos fornecerá o valor-p, que nos ajuda a avaliar se a correlação observada é estatisticamente significativa.

# Calculando a correlação entre custo variável e participante
cor(x, y)
[1] 0.9882186
# Realizando o teste de correlação
cor.test(x, y)

    Pearson's product-moment correlation

data:  x and y
t = 63.92, df = 98, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.9825096 0.9920716
sample estimates:
      cor 
0.9882186 

4 Regressão Linear Simples

Agora, vamos ajustar o modelo de regressão linear simples para modelar a relação entre altura e idade. O modelo de regressão linear simples assume que a relação entre as variáveis é linear.

# Ajustando o modelo de regressão linear simples
mod1 <- lm(y ~ x)

# Exibindo o resumo do modelo
summary(mod1)

Call:
lm(formula = y ~ x)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.5356  -5.5236  -0.3462   6.4850  20.9487 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.36404    1.84287  -0.198    0.844    
x            2.02511    0.03168  63.920   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 9.145 on 98 degrees of freedom
Multiple R-squared:  0.9766,    Adjusted R-squared:  0.9763 
F-statistic:  4086 on 1 and 98 DF,  p-value: < 2.2e-16

O sumário do modelo nos fornece informações sobre os coeficientes da regressão, seus erros padrão, os valores t e os valores-p. A partir dos coeficientes, podemos obter a equação da reta de regressão.

Além disso, podemos calcular os intervalos de confiança para os coeficientes do modelo. O default do R calcula como 95% de certeza.

# Calculando os intervalos de confiança para os coeficientes
confint(mod1)
                2.5 %   97.5 %
(Intercept) -4.021162 3.293085
x            1.962239 2.087983

4.1 Gráficos para Verificação da Adequação do Ajuste

Agora, vamos verificar a adequação do modelo ajustado através de gráficos dos resíduos. A suposição de homocedasticidade e a análise de normalidade dos resíduos são fundamentais para validar o modelo de regressão linear.

Serão gerados 4 gráficos com este trecho.

  1. Gráfico 1: Resíduos vs. Valores Ajustados

    O que é mostrado:

    Este gráfico exibe os resíduos do modelo (diferença entre os valores observados e os valores ajustados) no eixo y, e os valores ajustados (preditos pelo modelo) no eixo x.

    Como interpretar:

    Bom ajuste: Resíduos dispersos de maneira aleatória em torno de zero, sem formar padrões visíveis.

    Problema de homocedasticidade: Padrões como “funil”, onde os resíduos são maiores para valores ajustados mais altos ou baixos.

  2. Gráfico 2: Normal Q-Q (Quantis-Quantis)

    O que é mostrado:

    Este gráfico compara os resíduos do modelo com a distribuição normal. Os quantis dos resíduos (valores ordenados) são plotados contra os quantis de uma distribuição normal padrão.

    Bom ajuste: Os pontos devem seguir aproximadamente a linha reta, o que indica que os resíduos têm distribuição normal.

    Problema de normalidade: Se os pontos se afastam da linha reta, especialmente nas extremidades (caudas), isso pode indicar não-normalidade dos resíduos, sugerindo que outras distribuições podem ser mais adequadas.

  3. Gráfico 3: Resíduos vs. Leverage

O que é mostrado:

Este gráfico mostra os resíduos (no eixo y) contra a leverage (no eixo x). Leverage é uma medida de quanto um ponto de dados influencia o modelo de regressão.

Como interpretar:

Bom ajuste: Não há pontos com alto leverage que distorçam o modelo, e os resíduos são pequenos para todos os pontos.

Problema de pontos influentes: Se houver pontos isolados com resíduos grandes e leverage alto (geralmente destacados no gráfico com círculos ou símbolos diferentes), isso indica que esses pontos podem estar influenciando muito o modelo.
  1. Gráfico 4: Resíduos Padronizados vs. Valores Ajustados

    O que é mostrado:

    Este gráfico mostra os resíduos padronizados (resíduos divididos pela estimativa de erro padrão) em função dos valores ajustados. Isso ajuda a verificar a variação nos resíduos de forma padronizada.

    Como interpretar:

    Bom ajuste: Os resíduos padronizados devem estar espalhados aleatoriamente em torno de zero, sem formar padrões evidentes.

    Problemas possíveis: Se os resíduos tiverem padrões ou se houver muitos resíduos padronizados fora da faixa de -3 a +3, isso pode indicar problemas no modelo, como outliers ou heterocedasticidade.

par(mfrow=c(2,2))
plot(mod1, which=c(1:4), add.smooth=T,pch=20)

4.2 Teste de Normalidade dos Resíduos:

Além das observações dos gráficos, podemos realizar análises estatísticas sobre nosso estudo.

Vamos agora verificar se os resíduos seguem uma distribuição normal usando o teste de normalidade de Shapiro-Wilk.

O teste de Shapiro-Wilk nos ajuda a verificar a hipótese de que os resíduos seguem uma distribuição normal. Se o valor-p for pequeno (geralmente menor que 0,05), rejeitamos a hipótese de normalidade dos resíduos.

# Teste de normalidade dos resíduos
shapiro.test(mod1$resid)

    Shapiro-Wilk normality test

data:  mod1$resid
W = 0.99343, p-value = 0.9124

4.3 Teste de Homocedasticidade

A homocedasticidade é a suposição de que a variância dos resíduos é constante para todos os valores de idade. Para testar essa suposição, podemos fazer um teste simples.

Este teste nos ajuda a avaliar se a variância dos resíduos é constante ao longo dos valores ajustados. O valor-p nos informa se devemos ou não rejeitar a hipótese de homocedasticidade.

# Teste de variância não-constante (homocedasticidade)
summary(lm(abs(residuals(mod1)) ~ fitted(mod1)))

Call:
lm(formula = abs(residuals(mod1)) ~ fitted(mod1))

Residuals:
   Min     1Q Median     3Q    Max 
-7.136 -4.013 -1.394  3.606 17.319 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   7.434830   1.091833   6.809 7.92e-10 ***
fitted(mod1) -0.001497   0.009294  -0.161    0.872    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.433 on 98 degrees of freedom
Multiple R-squared:  0.0002647, Adjusted R-squared:  -0.009937 
F-statistic: 0.02595 on 1 and 98 DF,  p-value: 0.8724

5 Regressão Linear Simples Múltipla

5.1 O que é Regressão Linear Múltipla?

A regressão linear múltipla é uma extensão da regressão linear simples que permite modelar a relação entre uma variável dependente e várias variáveis independentes (como idade, x1, x2, etc.). Essa abordagem é útil quando acreditamos que mais de uma variável pode influenciar a variável de resposta.

A fórmula geral para um modelo de regressão linear múltipla é:

y=β0​+β1​x1​+β2​x2​+ϵ

Onde:

  • y é a variável dependente (PIO),

  • x1 e x2 são as variáveis independentes,

  • β0 é o intercepto,

  • β1 e β2​ são os coeficientes das variáveis independentes,

  • ϵ é o erro (resíduo).

5.2 Ajustando o Modelo de Regressão Linear Múltipla

Vamos ajustar um modelo de regressão linear múltipla, incluindo duas variáveis independentes (x1 e x2), além de idade (se já disponível no seu conjunto de dados).

O resumo do modelo nos fornece:

  • Coeficientes das variáveis independentes: Indica o efeito de cada variável explicativa na variável dependente.

  • Valor p: Para testar se o coeficiente de cada variável é estatisticamente significativo. Se o valor p for menor que 0,05, a variável é significativa.

  • R² ajustado: A proporção da variação da variável dependente explicada pelas variáveis independentes.

# Ajustando o modelo de regressão linear simples
mod1 <- lm(y ~ x)

# Exibindo o resumo do modelo
summary(mod1)

Call:
lm(formula = y ~ x)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.5356  -5.5236  -0.3462   6.4850  20.9487 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.36404    1.84287  -0.198    0.844    
x            2.02511    0.03168  63.920   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 9.145 on 98 degrees of freedom
Multiple R-squared:  0.9766,    Adjusted R-squared:  0.9763 
F-statistic:  4086 on 1 and 98 DF,  p-value: < 2.2e-16

5.3 Verificando a Adequação do Ajuste no Modelo Múltiplo

Para verificar a adequação do modelo, geramos gráficos de diagnóstico. Esses gráficos ajudam a avaliar a normalidade dos resíduos, a homocedasticidade, a presença de outliers e o leverage dos pontos, como já visto.

# Gerando os gráficos de diagnóstico para o modelo de regressão múltipla
par(mfrow = c(2, 2))
plot(modelo)

5.3.1 Interpretação do Modelo de Regressão Linear Múltipla

Após ajustar o modelo, podemos usar o summary(modelo) para obter o resumo do modelo. O resumo fornece informações sobre os coeficientes e a significância estatística.

# Exibindo o resumo do modelo
summary(modelo)

Call:
lm(formula = y ~ x)

Residuals:
     Min       1Q   Median       3Q      Max 
-24.5356  -5.5236  -0.3462   6.4850  20.9487 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.36404    1.84287  -0.198    0.844    
x            2.02511    0.03168  63.920   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 9.145 on 98 degrees of freedom
Multiple R-squared:  0.9766,    Adjusted R-squared:  0.9763 
F-statistic:  4086 on 1 and 98 DF,  p-value: < 2.2e-16

A variável pessoas_beneficiarias_pbf tem uma relação positiva relativamente alta com o primeiro componente principal (Dim.1) e uma relação positiva menor com o segundo componente principal (Dim.2). Isso indica que essa variável contribui significativamente para ambos os componentes principais, mas tem uma importância maior no primeiro.

Por fim, o PIB tem uma relação positiva muito alta com o segundo componente principal (Dim.2) e uma relação positiva menor com o primeiro componente principal (Dim.1). Isso sugere que essa variável é essencialmente representada pelo segundo componente principal e tem uma importância menor no primeiro.

6 Referências

UNIVERSIDADE FEDERAL DE MINAS GERAIS. Análise de Regressão Linear no Pacote R. Disponível em: https://www.est.ufmg.br/portal/wp-content/uploads/2023/01/RTE-01-2009.pdf. Acesso em: 18 mar. 2025.

UNIVERSIDADE DE PASSO FUNDO. Análise de Regressão Linear com o Auxílio do RStudio. Disponível em: https://www.upf.br/_uploads/Conteudo/cepeac/textos-discussao/texto-07-2021.pdf. Acesso em: 18 mar. 2025.

SASSI, Cecília P.; PEREZ, Felipe G.; MYAZATO, Leticia; YE, Xiao; FERREIRA-SILVA, Paulo H.; LOUZADA, Francisco. Modelos de regressão linear múltipla utilizando os softwares R E Statistica: uma aplicação a dados de conservação de frutas. São Paulo: Universidade de São Paulo, 2011. Disponível em: https://repositorio.usp.br/item/002297573. Acesso em: 18 mar. 2025.

NASCIMENTO, Edgar. Correlação e Regressão Linear no R. RPubs, 2020. Disponível em: https://rpubs.com/Prof_Edgar_Nascimento/657579. Acesso em: 18 mar. 2025.