So führen sie eine lineare regression mit kategorialen variablen in r durch
Die lineare Regression ist eine Methode, mit der wir die Beziehung zwischen einer oder mehreren Prädiktorvariablen und einer Antwortvariablen quantifizieren können.
Häufig möchten Sie möglicherweise ein Regressionsmodell anpassen, indem Sie eine oder mehrere kategoriale Variablen als Prädiktorvariablen verwenden.
Dieses Tutorial bietet ein schrittweises Beispiel für die Durchführung einer linearen Regression mit kategorialen Variablen in R.
Beispiel: Lineare Regression mit kategorialen Variablen in R
Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen zu drei Variablen für 12 verschiedene Basketballspieler enthält:
- erzielte Punkte
- Stunden mit Üben verbracht
- Trainingsprogramm verwendet
#create data frame df <- data. frame (points=c(7, 7, 9, 10, 13, 14, 12, 10, 16, 19, 22, 18), hours=c(1, 2, 2, 3, 2, 6, 4, 3, 4, 5, 8, 6), program=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)) #view data frame df points hours program 1 7 1 1 2 7 2 1 3 9 2 1 4 10 3 1 5 13 2 2 6 14 6 2 7 12 4 2 8 10 3 2 9 16 4 3 10 19 5 3 11 22 8 3 12 18 6 3
Angenommen, wir möchten das folgende lineare Regressionsmodell anpassen:
Punkte = β 0 + β 1 Stunden + β 2 Programm
In diesem Beispiel sind Stunden eine kontinuierliche Variable, aber Programm ist eine kategoriale Variable , die drei mögliche Kategorien annehmen kann: Programm 1, Programm 2 oder Programm 3.
Um dieses Regressionsmodell anzupassen und R mitzuteilen, dass die Variable „Programm“ eine kategoriale Variable ist, müssen wir sie mit as.factor() in einen Faktor umwandeln und dann das Modell anpassen:
#convert 'program' to factor
df$program <- as. factor (df$program)
#fit linear regression model
fit <- lm(points ~ hours + program, data = df)
#view model summary
summary(fit)
Call:
lm(formula = points ~ hours + program, data = df)
Residuals:
Min 1Q Median 3Q Max
-1.5192 -1.0064 -0.3590 0.8269 2.4551
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.3013 0.9462 6.660 0.000159 ***
hours 0.9744 0.3176 3.068 0.015401 *
program2 2.2949 1.1369 2.019 0.078234 .
program3 6.8462 1.5499 4.417 0.002235 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.403 on 8 degrees of freedom
Multiple R-squared: 0.9392, Adjusted R-squared: 0.9164
F-statistic: 41.21 on 3 and 8 DF, p-value: 3.276e-05
Aus den Werten in der Spalte „Schätzung“ können wir das angepasste Regressionsmodell schreiben:
Punkte = 6,3013 + 0,9744 (Stunden) + 2,2949 (Programm 2) + 6,8462 (Programm 3)
So interpretieren Sie die Koeffizientenwerte im Ergebnis:
- Stunden : Für jede zusätzliche Übungsstunde erhöhen sich die erzielten Punkte um durchschnittlich 0,9744, vorausgesetzt, das Programm bleibt konstant.
- Der p-Wert beträgt 0,015, was darauf hinweist, dass die mit dem Üben verbrachten Stunden ein statistisch signifikanter Prädiktor für die erzielten Punkte auf dem Niveau α = 0,05 sind.
- Zeitplan 2 : Spieler, die Zeitplan 2 verwendeten, erzielten im Durchschnitt 2,2949 Punkte mehr als Spieler, die Zeitplan 1 verwendeten, vorausgesetzt, die Stunden bleiben konstant.
- Der p-Wert beträgt 0,078, was darauf hinweist, dass es keinen statistisch signifikanten Unterschied in den erzielten Punkten von Spielern, die Programm 2 verwendet haben, im Vergleich zu Spielern gibt, die Programm 1 verwendet haben, bei Level α = 0,05.
- Zeitplan 3 : Spieler, die Zeitplan 3 verwendeten, erzielten im Durchschnitt 2,2949 Punkte mehr als Spieler, die Zeitplan 1 verwendeten, vorausgesetzt, die Stunden blieben konstant.
- Der p-Wert beträgt 0,002, was darauf hinweist, dass es einen statistisch signifikanten Unterschied in den erzielten Punkten zwischen Spielern, die Zeitplan 3 verwendeten, und Spielern, die Zeitplan 1 verwendeten, auf dem Niveau α = 0,05 gibt.
Mithilfe des angepassten Regressionsmodells können wir die Anzahl der von einem Spieler erzielten Punkte basierend auf der Gesamtzahl der Trainingsstunden und dem von ihm verwendeten Programm vorhersagen.
Beispielsweise können wir den folgenden Code verwenden, um die Punkte vorherzusagen, die ein Spieler erzielt hat, der 5 Stunden lang trainiert und Trainingsplan 3 verwendet hat:
#define new player new <- data. frame (hours=c(5), program=as. factor (c(3))) #use the fitted model to predict the points for the new player predict(fit, newdata=new) 1 18.01923
Das Modell sagt voraus, dass dieser neue Spieler 18,01923 Punkte erzielen wird.
Wir können bestätigen, dass dies korrekt ist, indem wir die Werte des neuen Spielers in die angepasste Regressionsgleichung einfügen:
- Punkte = 6,3013 + 0,9744 (Stunden) + 2,2949 (Programm 2) + 6,8462 (Programm 3)
- Punkte = 6,3013 + 0,9744(5) + 2,2949(0) + 6,8462(1)
- Punkte = 18.019
Dies entspricht dem Wert, den wir mit der Funktion „predict()“ in R berechnet haben.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, 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