Como usar a função de previsão com glm em r (com exemplos)


A função glm() em R pode ser usada para ajustar modelos lineares generalizados. Este recurso é particularmente útil para ajustar modelos de regressão logística , modelos de regressão de Poisson e outros modelos complexos.

Depois de ajustarmos um modelo, podemos usar a função predizer() para prever o valor da resposta de uma nova observação.

Esta função usa a seguinte sintaxe:

prever (objeto, novos dados, tipo = “resposta”)

Ouro:

  • objeto: O nome do ajuste do modelo usando a função glm()
  • newdata: O nome do novo quadro de dados para fazer previsões
  • type: O tipo de previsão a ser feita.

O exemplo a seguir mostra como ajustar um modelo linear generalizado em R e como usar o modelo para prever o valor da resposta de uma nova observação que nunca foi vista antes.

Exemplo: Usando a função de previsão com glm em R

Para este exemplo, usaremos o conjunto de dados R integrado chamado mtcars :

 #view first six rows of mtcars data frame
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

Ajustaremos o seguinte modelo de regressão logística no qual utilizamos as variáveis disp e hp para prever a variável resposta am (tipo de transmissão do carro: 0 = automática, 1 = manual).

 #fit logistic regression model
model <- glm(am ~ disp + hp, data=mtcars, family=binomial)

#view model summary
summary(model)

Call:
glm(formula = am ~ disp + hp, family = binomial, data = mtcars)

Deviance Residuals: 
    Min 1Q Median 3Q Max  
-1.9665 -0.3090 -0.0017 0.3934 1.3682  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept) 1.40342 1.36757 1.026 0.3048  
available -0.09518 0.04800 -1.983 0.0474 *
hp 0.12170 0.06777 1.796 0.0725 .
---
Significant. 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: 16,713 on 29 degrees of freedom
AIC: 22,713

Number of Fisher Scoring iterations: 8

Podemos então usar este modelo para prever a probabilidade de um carro novo ter uma transmissão automática (am=0) ou manual (am=1) usando o seguinte código:

 #define new observation
newdata = data. frame (disp=200, hp=100)

#use model to predict value of am
predict(model, newdata, type=" response ")

         1 
0.00422564

O modelo prevê que a probabilidade de o novo carro ter transmissão manual (am = 1) é de 0,004 . Isso significa que é muito provável que este novo carro venha com transmissão automática.

Observe que também podemos fazer várias previsões ao mesmo tempo se tivermos um banco de dados contendo vários carros novos.

Por exemplo, o código a seguir mostra como usar o modelo ajustado para prever a probabilidade de uma transmissão manual para três carros novos:

 #define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
                     hp=c(100, 90, 108))

#view data frame
newdata

  hp disp
1,200 100
2 180 90
3,160,108

#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")

          1 2 3 
0.004225640 0.008361069 0.335916069 

Veja como interpretar o resultado:

  • A probabilidade de o carro 1 ter transmissão manual é 0,004 .
  • A probabilidade de o carro 2 ter transmissão manual é 0,008 .
  • A probabilidade de o carro 3 ter transmissão manual é de 0,336 .

Comentários

Os nomes das colunas no novo quadro de dados devem corresponder exatamente aos nomes das colunas no quadro de dados que foram usados para criar o modelo.

Observe que em nosso exemplo anterior, o quadro de dados que usamos para criar o modelo continha os seguintes nomes de colunas para nossas variáveis preditoras:

  • mostrar
  • HP

Portanto, quando criamos o novo quadro de dados chamado newdata, também nomeamos as colunas:

  • mostrar
  • HP

Se os nomes das colunas não corresponderem, você receberá a seguinte mensagem de erro:

Erro na avaliação (predvars, dados, env)

Tenha isso em mente ao usar a função prever() .

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 realizar regressão polinomial em R
Como criar um intervalo de previsão em R

Add a Comment

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