So verwenden sie eine teilmenge eines datenrahmens mit der funktion lm() in r


Sie können das Subset- Argument verwenden, um nur eine Teilmenge eines Datenrahmens zu verwenden, wenn Sie die Funktion lm() verwenden, um ein Regressionsmodell in R anzupassen:

 fit <- lm(points ~ fouls + minutes, data=df, subset=(minutes> 10 ))

Dieses spezielle Beispiel entspricht einem Regressionsmodell, das Punkte als Antwortvariable und Menschenmengen und Minuten als Prädiktorvariablen verwendet.

Das Subset- Argument gibt an, dass bei der Anpassung des Regressionsmodells nur Zeilen im Datenrahmen verwendet werden sollen, in denen die Minutenvariable größer als 10 ist.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: So verwenden Sie eine Datenrahmen-Teilmenge mit lm() in R

Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen über die gespielten Minuten, die Gesamtzahl der Fouls und die Gesamtpunktzahl von 10 Basketballspielern enthält:

 #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

Angenommen, wir möchten das folgende multiple lineare Regressionsmodell anpassen:

Punkte = β 0 + β 1 (Minuten) + β 2 (Fouls)

Nehmen wir jedoch an, wir möchten nur die Zeilen im Datenrahmen verwenden, in denen die Minutenvariable größer als 10 ist.

Wir können die Funktion lm() mit dem Argument subset verwenden, um dieses Regressionsmodell anzupassen:

 #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

Mit der Funktion nobs() können wir sehen, wie viele Beobachtungen aus dem Datenrahmen tatsächlich zur Anpassung an das Regressionsmodell verwendet wurden:

 #view number of observations used to fit model
nobs(fit)

[1] 8

Wir können sehen, dass 8 Zeilen des Datenrahmens zur Anpassung des Modells verwendet wurden.

Wenn wir uns den ursprünglichen Datenrahmen ansehen, können wir sehen, dass genau 8 Zeilen einen Wert größer als 10 für die Minutenvariable hatten, was bedeutet, dass nur diese Zeilen bei der Anpassung des Regressionsmodells verwendet wurden.

Wir können auch den & -Operator im Subset- Argument verwenden, um den Datenrahmen basierend auf mehreren Bedingungen zu unterteilen.

Beispielsweise könnten wir die folgende Syntax verwenden, um ein Regressionsmodell anzupassen, das nur die Zeilen im Datenrahmen verwendet, in denen die Minuten größer als 10 und die Fehler kleiner als 4 sind:

 #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

Aus dem Ergebnis können wir ersehen, dass 7 Zeilen des Datenrahmens verwendet wurden, um dieses spezielle Modell anzupassen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:

So führen Sie eine einfache lineare Regression in R durch
So führen Sie eine multiple lineare Regression in R durch
So erstellen Sie ein Residuendiagramm in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert