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