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