Comment utiliser la fonction de prédiction avec glm dans R (avec exemples)



La fonction glm() dans R peut être utilisée pour ajuster des modèles linéaires généralisés. Cette fonction est particulièrement utile pour ajuster les modèles de régression logistique , les modèles de régression de Poisson et d’autres modèles complexes.

Une fois que nous avons ajusté un modèle, nous pouvons alors utiliser la fonction prédire() pour prédire la valeur de réponse d’une nouvelle observation.

Cette fonction utilise la syntaxe suivante :

prédire (objet, newdata, type = « réponse »)

où:

  • object : Le nom de l’ajustement du modèle à l’aide de la fonction glm()
  • newdata : Le nom de la nouvelle trame de données pour laquelle faire des prédictions
  • type : Le type de prédiction à faire.

L’exemple suivant montre comment ajuster un modèle linéaire généralisé dans R et comment utiliser ensuite le modèle pour prédire la valeur de réponse d’une nouvelle observation qu’il n’a jamais vue auparavant.

Exemple : Utilisation de la fonction de prévision avec glm dans R

Pour cet exemple, nous utiliserons l’ensemble de données R intégré appelé 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

Nous ajusterons le modèle de régression logistique suivant dans lequel nous utilisons les variables disp et hp pour prédire la variable de réponse am (le type de transmission de la voiture : 0 = automatique, 1 = manuelle).

#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  
disp        -0.09518    0.04800  -1.983   0.0474 *
hp           0.12170    0.06777   1.796   0.0725 .
---
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: 16.713  on 29  degrees of freedom
AIC: 22.713

Number of Fisher Scoring iterations: 8

Nous pouvons ensuite utiliser ce modèle pour prédire la probabilité qu’une nouvelle voiture ait une transmission automatique (am=0) ou une transmission manuelle (am=1) en utilisant le code suivant :

#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

Le modèle prédit que la probabilité que la nouvelle voiture ait une transmission manuelle (am=1) est de 0,004 . Cela signifie qu’il est fort probable que cette nouvelle voiture soit équipée d’une transmission automatique.

Notez que nous pouvons également faire plusieurs prédictions à la fois si nous disposons d’une base de données contenant plusieurs nouvelles voitures.

Par exemple, le code suivant montre comment utiliser le modèle ajusté pour prédire la probabilité d’une transmission manuelle pour trois nouvelles voitures :

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

#view data frame
newdata

  disp  hp
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 

Voici comment interpréter le résultat :

  • La probabilité que la voiture 1 ait une transmission manuelle est de 0,004 .
  • La probabilité que la voiture 2 ait une transmission manuelle est de 0,008 .
  • La probabilité que la voiture 3 ait une transmission manuelle est de 0,336 .

Remarques

Les noms des colonnes du nouveau bloc de données doivent correspondre exactement aux noms des colonnes du bloc de données qui ont été utilisées pour créer le modèle.

Notez que dans notre exemple précédent, le bloc de données que nous avons utilisé pour créer le modèle contenait les noms de colonnes suivants pour nos variables prédictives :

  • afficher
  • HP

Ainsi, lorsque nous avons créé le nouveau bloc de données appelé newdata, nous nous sommes assurés de nommer également les colonnes :

  • afficher
  • HP

Si les noms des colonnes ne correspondent pas, vous recevrez le message d’erreur suivant :

Erreur dans eval (predvars, data, env)

Gardez cela à l’esprit lorsque vous utilisez la fonction prédire() .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Comment effectuer une régression polynomiale dans R
Comment créer un intervalle de prédiction dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *