Comment utiliser un sous-ensemble de trame de données avec la fonction lm() dans R
Vous pouvez utiliser l’argument subset pour utiliser uniquement un sous-ensemble d’un bloc de données lorsque vous utilisez la fonction lm() pour ajuster un modèle de régression dans R :
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes>10))
Cet exemple particulier correspond à un modèle de régression utilisant les points comme variable de réponse et les fautes et les minutes comme variables prédictives.
L’argument sous-ensemble spécifie que seules les lignes du bloc de données où la variable minutes est supérieure à 10 doivent être utilisées lors de l’ajustement du modèle de régression.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : Comment utiliser un sous-ensemble de trame de données avec lm() dans R
Supposons que nous ayons le bloc de données suivant dans R qui contient des informations sur les minutes jouées, le nombre total de fautes et le total de points marqués par 10 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 adapter le modèle de régression linéaire multiple suivant :
points = β 0 + β 1 (minutes) + β 2 (fautes)
Cependant, supposons que nous souhaitions utiliser uniquement les lignes du bloc de données où la variable minutes est supérieure à 10.
Nous pouvons utiliser la fonction lm() avec l’argument subset pour ajuster ce modèle de régression :
#fit multiple linear regression model (only for rows where minutes>10) fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes>10)) #view model summary summary(fit) Call: lm(formula = points ~ fouls + minutes, data = df, subset = (minutes > 10)) Residuals: 3 4 5 6 7 8 9 10 1.2824 -2.5882 2.2000 -1.9118 2.3588 -1.7176 0.1824 0.1941 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -11.8353 4.9696 -2.382 0.063046 . fouls 1.8765 1.0791 1.739 0.142536 minutes 0.9941 0.1159 8.575 0.000356 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 2.255 on 5 degrees of freedom Multiple R-squared: 0.9574, Adjusted R-squared: 0.9404 F-statistic: 56.19 on 2 and 5 DF, p-value: 0.0003744
Nous pouvons utiliser la fonction nobs() pour voir combien d’observations du bloc de données ont été réellement utilisées pour ajuster le modèle de régression :
#view number of observations used to fit model
nobs(fit)
[1] 8
Nous pouvons voir que 8 lignes du bloc de données ont été utilisées pour ajuster le modèle.
Si nous examinons le bloc de données d’origine, nous pouvons voir qu’exactement 8 lignes avaient une valeur supérieure à 10 pour la variable minutes , ce qui signifie que seules ces lignes ont été utilisées lors de l’ajustement du modèle de régression.
Nous pouvons également utiliser l’opérateur & dans l’argument de sous-ensemble pour sous-ensembler le bloc de données selon plusieurs conditions.
Par exemple, nous pourrions utiliser la syntaxe suivante pour ajuster un modèle de régression en utilisant uniquement les lignes du bloc de données où les minutes sont supérieures à 10 et les fautes inférieures à 4 :
#fit multiple linear regression model (only where minutes>10 & fouls<4) fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes>10 & fouls<4)) #view number of observations used to fit model nobs(fit) [1] 7
À partir du résultat, nous pouvons voir que 7 lignes du bloc de données ont été utilisées pour ajuster ce modèle particulier.
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 créer un tracé résiduel dans R