So führen sie eine multiple lineare regression in r durch
Dieser Leitfaden zeigt ein Beispiel für die Durchführung einer multiplen linearen Regression in R, einschließlich:
- Untersuchen Sie die Daten, bevor Sie das Modell anpassen
- Modellanpassung
- Überprüfung der Modellannahmen
- Interpretieren der Modellausgabe
- Beurteilung der Modellanpassungsgüte
- Nutzen Sie das Modell, um Vorhersagen zu treffen
Lass uns gehen!
Einrichtung
Für dieses Beispiel verwenden wir den integrierten R-Datensatz mtcars , der Informationen zu verschiedenen Attributen von 32 verschiedenen Autos enthält:
#view first six lines of mtcars
head(mtcars)
# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
In diesem Beispiel erstellen wir ein multiples lineares Regressionsmodell, das mpg als Antwortvariable und disp , hp und drat als Prädiktorvariablen verwendet.
#create new data frame that contains only the variables we would like to use to data <- mtcars[, c("mpg", "disp", "hp", "drat")] #view first six rows of new data frame head(data) # mpg disp hp drat #Mazda RX4 21.0 160 110 3.90 #Mazda RX4 Wag 21.0 160 110 3.90 #Datsun 710 22.8 108 93 3.85 #Hornet 4 Drive 21.4 258 110 3.08 #Hornet Sportabout 18.7 360 175 3.15 #Valiant 18.1 225 105 2.76
Datenüberprüfung
Bevor wir das Modell anpassen, können wir uns die Daten ansehen, um sie besser zu verstehen, und auch visuell bewerten, ob die multiple lineare Regression ein gutes Modell für die Anpassung dieser Daten sein könnte.
Insbesondere müssen wir prüfen, ob die Prädiktorvariablen einen linearen Zusammenhang mit der Antwortvariablen haben, was darauf hindeuten würde, dass ein multiples lineares Regressionsmodell geeignet sein könnte.
Dazu können wir die Funktion „pairs()“ verwenden, um ein Streudiagramm für jedes mögliche Variablenpaar zu erstellen:
pairs(data, pch = 18, col = "steelblue")
Aus diesem Paardiagramm können wir Folgendes erkennen:
- MPG und Verfügbarkeit scheinen eine starke negative lineare Korrelation zu haben
- MPG und PS scheinen eine starke positive lineare Korrelation zu haben
- mpg und drat scheinen eine bescheidene negative lineare Korrelation zu haben
Beachten Sie, dass wir auch die Funktion ggpairs() aus der GGally- Bibliothek verwenden könnten, um ein ähnliches Diagramm zu erstellen, das die tatsächlichen linearen Korrelationskoeffizienten für jedes Variablenpaar enthält:
#install and load the GGally library install.packages("GGally") library(GGally) #generate the pairs plot ggpairs(data)
Jede der Prädiktorvariablen scheint eine bemerkenswerte lineare Korrelation mit der Antwortvariablen mpg zu haben, daher werden wir damit fortfahren, das lineare Regressionsmodell an die Daten anzupassen.
Modellanpassung
Die grundlegende Syntax zum Anpassen eines multiplen linearen Regressionsmodells in R lautet:
lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)
Anhand unserer Daten können wir das Modell mit dem folgenden Code anpassen:
model <- lm(mpg ~ disp + hp + drat, data = data)
Überprüfung der Modellannahmen
Bevor wir mit der Überprüfung der Modellergebnisse fortfahren, müssen wir zunächst überprüfen, ob die Modellannahmen erfüllt sind. Wir müssen nämlich Folgendes überprüfen:
1. Die Verteilung der Modellresiduen sollte ungefähr normal sein.
Wir können überprüfen, ob diese Annahme erfüllt ist, indem wir ein einfaches Histogramm der Residuen erstellen:
hist(residuals(model), col = "steelblue")
Obwohl die Verteilung leicht rechtsschief ist, ist sie nicht abnormal genug, um Anlass zu großer Sorge zu geben.
2. Die Varianz der Residuen muss für alle Beobachtungen konsistent sein.
Dieser bevorzugte Zustand wird als Homoskedastizität bezeichnet. Ein Verstoß gegen diese Annahme wird als Heteroskedastizität bezeichnet.
Um zu überprüfen, ob diese Annahme erfüllt ist, können wir ein angepasstes/Restwertdiagramm erstellen:
#create fitted value vs residual plot plot(fitted(model), residuals(model)) #add horizontal line at 0 abline(h = 0, lty = 2)
Im Idealfall möchten wir, dass die Residuen bei jedem angepassten Wert gleichmäßig verteilt sind. Aus der Grafik können wir ersehen, dass die Streuung bei größeren angepassten Werten tendenziell etwas größer wird, aber dieser Trend ist nicht extrem genug, um allzu große Bedenken auszulösen.
Interpretieren der Modellausgabe
Sobald wir überprüft haben, dass die Modellannahmen ausreichend erfüllt sind, können wir die Modellausgabe mit der Funktion summary() untersuchen:
summary(model) #Call: #lm(formula = mpg ~ disp + hp + drat, data = data) # #Residuals: # Min 1Q Median 3Q Max #-5.1225 -1.8454 -0.4456 1.1342 6.4958 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 19.344293 6.370882 3.036 0.00513 ** #disp -0.019232 0.009371 -2.052 0.04960 * #hp -0.031229 0.013345 -2.340 0.02663 * #drat 2.714975 1.487366 1.825 0.07863 . #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.008 on 28 degrees of freedom #Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 #F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09
Aus dem Ergebnis können wir Folgendes erkennen:
- Die Gesamt-F-Statistik des Modells beträgt 32,15 und der entsprechende p-Wert beträgt 3,28e-09 . Dies weist darauf hin, dass das Gesamtmodell statistisch signifikant ist. Mit anderen Worten: Das Regressionsmodell als Ganzes ist nützlich.
- disp ist auf dem Signifikanzniveau 0,10 statistisch signifikant. Insbesondere zeigt der Koeffizient aus den Modellergebnissen, dass eine Erhöhung der Verfügbarkeit um eine Einheit mit einer durchschnittlichen Verringerung der mpg um -0,019 Einheiten verbunden ist, vorausgesetzt, dass PS und Kraftstoffverbrauch konstant bleiben. .
- hp ist auf dem Signifikanzniveau 0,10 statistisch signifikant. Insbesondere zeigt der Koeffizient aus den Modellergebnissen, dass eine Erhöhung der PS-Leistung um eine Einheit mit einer Verringerung der mpg um durchschnittlich -0,031 Einheiten einhergeht, vorausgesetzt, dass Disp und Drat konstant bleiben.
- drat ist auf dem Signifikanzniveau 0,10 statistisch signifikant. Insbesondere zeigt der Koeffizient aus den Modellergebnissen, dass ein Anstieg des Benzinverbrauchs um eine Einheit mit einem durchschnittlichen Anstieg von 2.715 Einheiten mpg verbunden ist, vorausgesetzt, dass Durchflussrate und PS konstant bleiben.
Beurteilung der Modellanpassungsgüte
Um zu beurteilen, wie gut das Regressionsmodell zu den Daten passt, können wir uns einige verschiedene Metriken ansehen:
1. Mehrere R-Quadrate
Dies misst die Stärke der linearen Beziehung zwischen den Prädiktorvariablen und der Antwortvariablen. Ein R-Quadrat-Vielfaches von 1 weist auf eine perfekte lineare Beziehung hin, während ein R-Quadrat-Vielfaches von 0 auf keine lineare Beziehung hinweist.
Multiple R ist auch die Quadratwurzel von R zum Quadrat, also dem Anteil der Varianz in der Antwortvariablen, der durch die Prädiktorvariablen erklärt werden kann. In diesem Beispiel beträgt das R-Quadrat-Vielfache 0,775 . Das R-Quadrat beträgt also 0,775 2 = 0,601 . Dies weist darauf hin, dass 60,1 % der Varianz in mpg durch die Modellprädiktoren erklärt werden können.
Verwandt: Was ist ein guter R-Quadrat-Wert?
2. Reststandardfehler
Dies misst den durchschnittlichen Abstand zwischen den beobachteten Werten und der Regressionsgeraden. In diesem Beispiel weichen die beobachteten Werte im Durchschnitt um 3,008 Einheiten von der Regressionsgeraden ab .
Verwandt: Den Standardfehler der Regression verstehen
Nutzen Sie das Modell, um Vorhersagen zu treffen
Aus den Modellergebnissen wissen wir, dass die angepasste multiple lineare Regressionsgleichung lautet:
hat mpg = -19,343 – 0,019*disp – 0,031*hp + 2,715*drat
Wir können diese Gleichung verwenden, um Vorhersagen darüber zu treffen, wie hoch der mpg für neue Beobachtungen sein wird. Beispielsweise können wir den vorhergesagten mpg- Wert für ein Auto ermitteln, das die folgenden Attribute aufweist:
- Anzeige = 220
- ch = 150
- drat = 3
#define the coefficients from the model output intercept <- coef(summary(model))["(Intercept)", "Estimate"] disp <- coef(summary(model))["disp", "Estimate"] hp <- coef(summary(model))["hp", "Estimate"] drat <- coef(summary(model))["drat", "Estimate"] #use the model coefficients to predict the value for mpg intercept + disp*220 + hp*150 + drat*3 #[1] 18.57373
Für ein Auto mit Disp = 220, PS = 150 und Drat = 3 prognostiziert das Modell, dass das Auto 18,57373 mpg erreichen würde.
Den vollständigen R-Code, der in diesem Tutorial verwendet wird, finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere Arten von Regressionsmodellen in R angepasst werden:
So führen Sie eine quadratische Regression in R durch
So führen Sie eine Polynomregression in R durch
So führen Sie eine exponentielle Regression in R durch