Modelagem estatística com lm() e glm() no R

Construindo, diagnosticando e aprimorando modelos de regressão

Aprenda a realizar modelagem linear e linear generalizada no R usando lm() e glm(). Este tutorial expandido abrange ajuste de modelos, diagnósticos, interpretação e técnicas avançadas, como termos de interação e regressão polinomial.

Programação
Autor
Afiliação
Data de Publicação

10 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Modelagem estatística em R, lm no R, glm em R, Regressão linear R, Regressão logística em R, Diagnóstico de modelos em R, Regressão avançada em R

Introdução

A modelagem estatística é um dos pilares da análise de dados no R. Este tutorial irá guiá-lo através da construção de modelos de regressão usando lm() para regressão linear e glm() para modelos lineares generalizados, tais como regressão logística. Além do ajuste de modelos, abordaremos técnicas para diagnosticar o desempenho do modelo, interpretar resultados e explorar técnicas avançadas de modelagem, como termos de interação e regressão polinomial.



1. Modelagem linear com lm()

A função lm() ajusta um modelo linear minimizando a soma dos erros quadrados. Começaremos com um exemplo simples usando o conjunto de dados mtcars para prever milhas por galão (mpg) based on car weight (wt).

data("mtcars")
lm_model <- lm(mpg ~ wt, data = mtcars)
summary(lm_model)

Call:
lm(formula = mpg ~ wt, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.5432 -2.3647 -0.1252  1.4096  6.8727 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
wt           -5.3445     0.5591  -9.559 1.29e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.046 on 30 degrees of freedom
Multiple R-squared:  0.7528,    Adjusted R-squared:  0.7446 
F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

Interpretação

  • Interceptação e coeficiente:
    A saída mostra a interceptação e a inclinação (coeficiente para wt). Para cada unidade adicional de peso, espera-se que mpg mude pelo valor do coeficiente.
  • R-quadrado:
    Indica quanto da variabilidade em mpg é explicada pelo modelo.
  • Valores P:
    Avalie a significância estatística dos preditores.

2. Modelagem linear generalizada com glm()

A função glm() estende os modelos lineares para acomodar distribuições de erros não normais. Um uso comum é a regressão logística para resultados binários. Aqui, prevemos o tipo de transmissão (am, where 0 = automatic, 1 = manual) based on car weight (wt).

glm_model <- glm(am ~ wt, data = mtcars, family = binomial)
summary(glm_model)

Call:
glm(formula = am ~ wt, family = binomial, data = mtcars)

Coefficients:
            Estimate Std. Error z value Pr(>|z|)   
(Intercept)   12.040      4.510   2.670  0.00759 **
wt            -4.024      1.436  -2.801  0.00509 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 43.230  on 31  degrees of freedom
Residual deviance: 19.176  on 30  degrees of freedom
AIC: 23.176

Number of Fisher Scoring iterations: 6

Interpretação

  • Coeficientes:
    Representar log-odds. Use exp(coef(glm_model)) para obter odds ratios.
  • Família e função de ligação:
    A família binomial com um link logit é usada para resultados binários.

3. Diagnóstico e validação de modelos

Após ajustar um modelo, é essencial verificar se as premissas do modelo são válidas.

Gráficos de diagnóstico para lm()

#| label: lm-diagnostics
par(mfrow = c(2, 2))
plot(lm_model)

Diagnóstico de modelos de regressão

Esses gráficos ajudam você a avaliar:

  • Resíduos vs. ajustados: Verifica a não linearidade.
  • Gráfico Q-Q normal: Avalia a normalidade dos resíduos.
  • Gráfico de escala-localização: Testa a homocedasticidade.
  • Resíduos vs. Alavancagem: Identifica observações influentes.

Diagnóstico para glm()

Para modelos lineares generalizados, você pode usar:

  • Resíduos de desvio: Verifique o ajuste do modelo.
  • Teste de Hosmer-Lemeshow: Avalie a adequação do ajuste (requer pacotes adicionais).
  • Curva ROC: Avalie o desempenho da classificação.

4. Interpretando e visualizando resultados do modelo

Entender a saída do seu modelo é fundamental para tirar conclusões significativas.

Interpretação dos resultados de lm()

  • Coeficientes:
    Determine a relação entre os preditores e o resultado.
  • Intervalos de confiança:
    Use confint(lm_model) para avaliar a incerteza nas estimativas.

Visualização de previsões

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE, color = "blue") +
  labs(title = "Linear Model: MPG vs. Weight", x = "Weight", y = "MPG")

Interpretação dos resultados de glm()

  • Razões de chances:
    Calcule usando exp(coef(glm_model)) para entender o efeito na escala de probabilidade.
  • Probabilidades previstas:
    Use predict(glm_model, type = 'response') para obter probabilidades para o resultado binário.

5. Técnicas avançadas de modelagem

Aprimore seus modelos incorporando preditores adicionais ou transformando variáveis.

Termos de interação

Inclua interações para explorar se o efeito de um preditor depende de outro.

interaction_model <- lm(mpg ~ wt * cyl, data = mtcars)
summary(interaction_model)

Call:
lm(formula = mpg ~ wt * cyl, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.2288 -1.3495 -0.5042  1.4647  5.2344 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  54.3068     6.1275   8.863 1.29e-09 ***
wt           -8.6556     2.3201  -3.731 0.000861 ***
cyl          -3.8032     1.0050  -3.784 0.000747 ***
wt:cyl        0.8084     0.3273   2.470 0.019882 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.368 on 28 degrees of freedom
Multiple R-squared:  0.8606,    Adjusted R-squared:  0.8457 
F-statistic: 57.62 on 3 and 28 DF,  p-value: 4.231e-12

Regressão polinomial

Modele relações não lineares adicionando termos polinomiais.

poly_model <- lm(mpg ~ poly(wt, 2), data = mtcars)
summary(poly_model)

Call:
lm(formula = mpg ~ poly(wt, 2), data = mtcars)

Residuals:
   Min     1Q Median     3Q    Max 
-3.483 -1.998 -0.773  1.462  6.238 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   20.0906     0.4686  42.877  < 2e-16 ***
poly(wt, 2)1 -29.1157     2.6506 -10.985 7.52e-12 ***
poly(wt, 2)2   8.6358     2.6506   3.258  0.00286 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.651 on 29 degrees of freedom
Multiple R-squared:  0.8191,    Adjusted R-squared:  0.8066 
F-statistic: 65.64 on 2 and 29 DF,  p-value: 1.715e-11

Comparação de modelos

Use critérios como AIC (Critério de Informação de Akaike) para comparar diferentes modelos.

model1 <- lm(mpg ~ wt, data = mtcars)
model2 <- lm(mpg ~ wt + cyl, data = mtcars)
AIC(model1, model2)
       df      AIC
model1  3 166.0294
model2  4 156.0101

Conclusão

Este tutorial forneceu uma visão geral abrangente da modelagem estatística em R usando lm() e glm(). Você aprendeu como ajustar modelos, diagnosticar problemas, interpretar resultados e aprimorar seus modelos com técnicas avançadas. Ao integrar esses métodos, você pode criar modelos estatísticos robustos que geram resultados perspicazes e confiáveis.

Leitura adicional

Boa programação e aproveite a construção de modelos robustos com R!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

De volta ao topo

Reuso

Citação

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Modelagem estatística com lm() e glm() no R},
  date = {2024-02-10},
  url = {https://www.datanovia.com/pt/learn/programming/r/data-science/statistical-modeling-with-lm-and-glm.html},
  langid = {pt}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Modelagem estatística com lm() e glm() no R.” February 10, 2024. https://www.datanovia.com/pt/learn/programming/r/data-science/statistical-modeling-with-lm-and-glm.html.