Hoe een subset van een dataframe met de functie lm() in r te gebruiken
U kunt het subset- argument gebruiken om alleen een subset van een gegevensframe te gebruiken wanneer u de functie lm() gebruikt om een regressiemodel in R te passen:
fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))
Dit specifieke voorbeeld komt overeen met een regressiemodel dat punten gebruikt als responsvariabele en menigten en minuten als voorspellende variabelen.
Het subset- argument specificeert dat alleen rijen in het dataframe waar de minutenvariabele groter is dan 10 moeten worden gebruikt bij het aanpassen van het regressiemodel.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: hoe u een dataframe-subset gebruikt met lm() in R
Stel dat we het volgende dataframe in R hebben dat informatie bevat over de gespeelde minuten, het totaal aantal fouten en het totaal aantal punten gescoord door 10 basketbalspelers:
#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
Stel dat we willen passen in het volgende meervoudige lineaire regressiemodel:
punten = β 0 + β 1 (minuten) + β 2 (overtredingen)
Stel echter dat we alleen de rijen in het dataframe willen gebruiken waar de minutenvariabele groter is dan 10.
We kunnen de functie lm() gebruiken met het subset- argument om in dit regressiemodel te passen:
#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 *** --- Significant. 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
We kunnen de functie nobs() gebruiken om te zien hoeveel waarnemingen uit het dataframe daadwerkelijk zijn gebruikt om in het regressiemodel te passen:
#view number of observations used to fit model
nobs(fit)
[1] 8
We kunnen zien dat 8 rijen van het dataframe zijn gebruikt om in het model te passen.
Als we naar het originele dataframe kijken, kunnen we zien dat precies 8 rijen een waarde groter dan 10 hadden voor de minutenvariabele , wat betekent dat alleen die rijen werden gebruikt bij het aanpassen van het regressiemodel.
We kunnen ook de operator & in het subset- argument gebruiken om het dataframe in te delen op basis van meerdere voorwaarden.
We kunnen bijvoorbeeld de volgende syntaxis gebruiken om een regressiemodel aan te passen met alleen de rijen in het dataframe waarin minuten groter zijn dan 10 en fouten kleiner dan 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
Uit het resultaat kunnen we zien dat 7 rijen van het dataframe zijn gebruikt om in dit specifieke model te passen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Hoe eenvoudige lineaire regressie uit te voeren in R
Hoe meervoudige lineaire regressie uit te voeren in R
Hoe maak je een restplot in R