Comment utiliser la fonction Predict() avec lm() dans R
La fonction lm() dans R peut être utilisée pour ajuster des modèles de régression linéaire.
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 utiliser la fonction lm() pour ajuster un modèle de régression linéaire dans R, puis comment utiliser la fonction prédire() pour prédire la valeur de réponse d’une nouvelle observation que le modèle n’a jamais vue auparavant.
Exemple : utilisation de la fonction Predict() avec lm() dans R
Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur divers joueurs de basket-ball :
#create data frame df <- data.frame(minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40), fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1), points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30)) #view data frame df minutes fouls points 1 5 5 6 2 10 5 8 3 13 3 8 4 14 4 7 5 20 2 14 6 22 1 10 7 26 3 22 8 34 2 24 9 38 1 28 10 40 1 30
Supposons que nous souhaitions appliquer le modèle de régression linéaire multiple suivant en utilisant les minutes jouées et le total des fautes pour prédire le nombre de points marqués par chaque joueur :
points = β 0 + β 1 (minutes) + β 2 (fautes)
Nous pouvons utiliser la fonction lm() pour adapter ce modèle :
#fit multiple linear regression model fit <- lm(points ~ minutes + fouls, data=df) #view summary of model summary(fit) Call: lm(formula = points ~ minutes + fouls, data = df) Residuals: Min 1Q Median 3Q Max -3.5241 -1.4782 0.5918 1.6073 2.0889 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.8949 4.5375 -2.621 0.0343 * minutes 0.9774 0.1086 9.000 4.26e-05 *** fouls 2.1838 0.8398 2.600 0.0354 * --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.148 on 7 degrees of freedom Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05
En utilisant les coefficients des résultats du modèle, nous pouvons écrire l’équation de régression ajustée :
points = -11,8949 + 0,9774 (minutes) + 2,1838 (fautes)
Nous pouvons ensuite utiliser la fonction prédire() pour prédire le nombre de points qu’un joueur qui joue pendant 15 minutes et qui commet 3 fautes au total marquera :
#define new observation
newdata = data.frame(minutes=15, fouls=3)
#use model to predict points value
predict(fit, newdata)
1
9.317731
Le modèle prédit que ce joueur marquera 9,317731 points.
Notez que nous pouvons également faire plusieurs prédictions à la fois si nous disposons d’un bloc de données contenant plusieurs nouvelles observations.
Par exemple, le code suivant montre comment utiliser le modèle de régression ajusté pour prédire les valeurs de points de trois joueurs :
#define new data frame of three cars
newdata = data.frame(minutes=c(15, 20, 25),
fouls=c(3, 2, 1))
#view data frame
newdata
minutes fouls
1 15 3
2 20 2
3 25 1
#use model to predict points for all three players
predict(model, newdata)
1 2 3
9.317731 12.021032 14.724334
Voici comment interpréter le résultat :
- Le nombre de points prévu pour le joueur avec 15 minutes et 3 fautes est de 9,32 .
- Le nombre de points prévu pour le joueur avec 20 minutes et 2 fautes est de 12,02 .
- Les points prévus pour le joueur avec 25 minutes et 1 faute sont de 14,72 .
Notes sur l’utilisation de prédire()
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 :
- minutes
- fautes
Ainsi, lorsque nous avons créé le nouveau bloc de données appelé newdata, nous nous sommes assurés de nommer également les colonnes :
- minutes
- fautes
Si les noms des colonnes ne correspondent pas, vous recevrez le message d’erreur suivant :
Error in 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