Como realizar regressão linear com variáveis categóricas em r


A regressão linear é um método que podemos usar para quantificar a relação entre uma ou mais variáveis preditoras e uma variável de resposta .

Muitas vezes, você pode querer ajustar um modelo de regressão usando uma ou mais variáveis categóricas como variáveis preditoras.

Este tutorial fornece um exemplo passo a passo de como realizar regressão linear com variáveis categóricas em R.

Exemplo: Regressão Linear com Variáveis Categóricas em R

Suponha que temos o seguinte quadro de dados em R que contém informações sobre três variáveis para 12 jogadores de basquete diferentes:

  • pontos marcados
  • horas gastas praticando
  • programa de treinamento usado
 #create data frame
df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18),
                 hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6),
                 program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3))

#view data frame
df

   points hours program
1 7 1 1
2 7 2 1
3 9 2 1
4 10 3 1
5 13 2 2
6 14 6 2
7 12 4 2
8 10 3 2
9 16 4 3
10 19 5 3
11 22 8 3
12 18 6 3

Suponha que queiramos ajustar o seguinte modelo de regressão linear:

pontos = β 0 + β 1 horas + β 2 programa

Neste exemplo, as horas são uma variável contínua, mas o programa é uma variável categórica que pode assumir três categorias possíveis: programa 1, programa 2 ou programa 3.

Para ajustar este modelo de regressão e dizer a R que a variável do “programa” é uma variável categórica, precisamos usar as.factor() para convertê-la em um fator e, em seguida, ajustar o modelo:

 #convert 'program' to factor
df$program <- as. factor (df$program)

#fit linear regression model
fit <- lm(points ~ hours + program, data = df)

#view model summary
summary(fit)

Call:
lm(formula = points ~ hours + program, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-1.5192 -1.0064 -0.3590 0.8269 2.4551 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *  
program2 2.2949 1.1369 2.019 0.078234 .  
program3 6.8462 1.5499 4.417 0.002235 ** 
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164 
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05

A partir dos valores da coluna Estimativa , podemos escrever o modelo de regressão ajustado:

pontos = 6,3013 + 0,9744 (horas) + 2,2949 (programa 2) + 6,8462 (programa 3)

Veja como interpretar os valores dos coeficientes no resultado:

  • Horas : Para cada hora adicional de prática, os pontos marcados aumentam em média 0,9744, assumindo que o programa permaneça constante.
    • O valor p é 0,015, indicando que as horas gastas praticando são um preditor estatisticamente significativo de pontos marcados no nível α = 0,05.
  • cronograma2 : Os jogadores que usaram o cronograma 2 marcaram em média 2,2949 pontos a mais do que os jogadores que usaram o cronograma 1, assumindo que as horas permanecem constantes.
    • O valor p é 0,078, o que indica que não há diferença estatisticamente significativa nos pontos obtidos pelos jogadores que utilizaram o programa 2 em comparação aos jogadores que utilizaram o programa 1, no nível α = 0,05.
  • cronograma3 : Os jogadores que usaram o cronograma 3 marcaram em média 2,2949 pontos a mais do que os jogadores que usaram o cronograma 1, assumindo que as horas permanecem constantes.
    • O valor p é 0,002, indicando que há uma diferença estatisticamente significativa nos pontos marcados pelos jogadores que utilizaram o esquema 3 em comparação aos jogadores que utilizaram o esquema 1, no nível α = 0,05.

Utilizando o modelo de regressão ajustado, podemos prever o número de pontos marcados por um jogador com base no número total de horas gastas treinando e no programa que utilizou.

Por exemplo, podemos usar o código a seguir para prever os pontos marcados por um jogador que treinou 5 horas e usou o cronograma de treinamento 3:

 #define new player
new <- data. frame (hours=c(5), program=as. factor (c(3)))

#use the fitted model to predict the points for the new player
predict(fit, newdata=new)

       1 
18.01923 

O modelo prevê que este novo jogador marcará 18,01923 pontos.

Podemos confirmar que isso está correto inserindo os valores do novo jogador na equação de regressão ajustada:

  • pontos = 6,3013 + 0,9744 (horas) + 2,2949 (programa 2) + 6,8462 (programa 3)
  • pontos = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
  • pontos = 18.019

Isso corresponde ao valor que calculamos usando a função prever() em R.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como realizar regressão linear simples em R
Como realizar regressão linear múltipla em R
Como criar um gráfico residual em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *