Jak wykonać wielokrotną regresję liniową w r


W tym przewodniku przedstawiono przykład sposobu przeprowadzenia wielokrotnej regresji liniowej w języku R, w tym:

  • Sprawdź dane przed dopasowaniem modelu
  • Regulacja modelu
  • Sprawdzanie założeń modelu
  • Interpretacja wyników modelu
  • Ocena dobroci dopasowania modelu
  • Użyj modelu do przewidywania

Chodźmy!

Obiekt

W tym przykładzie użyjemy wbudowanego zbioru danych R mtcars , który zawiera informacje o różnych atrybutach 32 różnych samochodów:

 #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

W tym przykładzie zbudujemy model regresji liniowej, który wykorzystuje mpg jako zmienną odpowiedzi oraz disp , hp i drat jako zmienne predykcyjne.

 #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

Przegląd danych

Przed dopasowaniem modelu możemy przyjrzeć się danym, aby lepiej je zrozumieć, a także wizualnie ocenić, czy wielokrotna regresja liniowa może być dobrym modelem pasującym do tych danych.

W szczególności musimy sprawdzić, czy zmienne predykcyjne mają liniowy związek ze zmienną odpowiedzi, co wskazywałoby, że odpowiedni może być model regresji liniowej wielokrotnej.

Aby to zrobić, możemy użyć funkcji pairs() w celu utworzenia wykresu rozrzutu każdej możliwej pary zmiennych:

 pairs(data, pch = 18, col = "steelblue")

Z wykresu tych par możemy zobaczyć, co następuje:

  • mpg i dostępność wydają się mieć silną ujemną korelację liniową
  • Wydaje się, że mpg i KM wykazują silną dodatnią korelację liniową
  • Wydaje się, że mpg i drat mają umiarkowaną ujemną korelację liniową

Zauważ, że moglibyśmy również użyć funkcji ggpairs() z biblioteki GGally , aby utworzyć podobny wykres zawierający rzeczywiste współczynniki korelacji liniowej dla każdej pary zmiennych:

 #install and load the GGally library
install.packages("GGally")
library(GGally)

#generate the pairs plot
ggpairs(data)

Wydaje się, że każda ze zmiennych predykcyjnych ma zauważalną korelację liniową ze zmienną odpowiedzi mpg , zatem przystąpimy do dopasowywania modelu regresji liniowej do danych.

Regulacja modelu

Podstawowa składnia dopasowania modelu regresji liniowej w R jest następująca:

 lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)

Korzystając z naszych danych, możemy dopasować model za pomocą następującego kodu:

 model <- lm(mpg ~ disp + hp + drat, data = data)

Sprawdzanie założeń modelu

Zanim przystąpimy do weryfikacji wyników modelu, musimy najpierw sprawdzić, czy założenia modelu zostały spełnione. Mianowicie musimy sprawdzić następujące kwestie:

1. Rozkład reszt modelu powinien być w przybliżeniu normalny.

Spełnienie tego założenia możemy sprawdzić tworząc prosty histogram reszt:

 hist(residuals(model), col = "steelblue")

Chociaż rozkład jest nieco prawostronny , nie jest to na tyle nienormalne, aby powodować poważne obawy.

2. Wariancja reszt musi być spójna dla wszystkich obserwacji.

Ten korzystny stan jest znany jako homoskedastyczność. Naruszenie tego założenia nazywa się heteroskedastycznością .

Aby sprawdzić, czy to założenie jest spełnione, możemy utworzyć wykres wartości skorygowanej/rezydualnej:

 #create fitted value vs residual plot
plot(fitted(model), residuals(model))

#add horizontal line at 0
abline(h = 0, lty = 2)

Idealnie byłoby, gdyby reszty były równomiernie rozproszone przy każdej dopasowanej wartości. Z wykresu widzimy, że rozproszenie ma tendencję do zwiększania się w przypadku większych dopasowanych wartości, ale tendencja ta nie jest na tyle ekstremalna, aby budzić zbyt duże obawy.

Interpretacja wyników modelu

Po sprawdzeniu, czy założenia modelu zostały w wystarczającym stopniu spełnione, możemy sprawdzić wyniki modelu za pomocą funkcji podsumowania() :

 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

Z wyniku możemy zobaczyć, co następuje:

  • Ogólna statystyka F modelu wynosi 32,15 , a odpowiadająca jej wartość p wynosi 3,28e-09 . Oznacza to, że cały model jest istotny statystycznie. Innymi słowy, model regresji jako całość jest użyteczny.
  • disp jest statystycznie istotny na poziomie istotności 0,10. W szczególności współczynnik z wyników modelu wskazuje, że wzrost dostępności o jedną jednostkę wiąże się ze spadkiem średnio o -0,019 jednostki w mpg , przy założeniu, że moc i zużycie paliwa pozostają stałe. .
  • hp jest istotna statystycznie na poziomie istotności 0,10. W szczególności współczynnik z wyników modelu wskazuje, że wzrost mocy o jedną jednostkę jest powiązany ze spadkiem średnio o -0,031 jednostki w mpg , przy założeniu, że disp i drat pozostają stałe.
  • drat jest statystycznie istotny na poziomie istotności 0,10. W szczególności współczynnik z wyników modelu wskazuje, że wzrost zużycia benzyny o jedną jednostkę wiąże się ze średnim wzrostem o 2715 jednostek mpg , przy założeniu, że natężenie przepływu i moc pozostają stałe.

Ocena dobroci dopasowania modelu

Aby ocenić, jak dobrze model regresji pasuje do danych, możemy przyjrzeć się kilku różnym metrykom:

1. Wiele kwadratów R

Mierzy siłę liniowej zależności między zmiennymi predykcyjnymi a zmienną odpowiedzi. R-kwadrat wielokrotności 1 wskazuje na idealną zależność liniową, podczas gdy R-kwadrat wielokrotności 0 oznacza brak zależności liniowej.

Wielokrotność R jest także pierwiastkiem kwadratowym z R do kwadratu, czyli proporcją wariancji zmiennej odpowiedzi, którą można wyjaśnić za pomocą zmiennych predykcyjnych. W tym przykładzie wielokrotność R-kwadrat wynosi 0,775 . Zatem R kwadrat wynosi 0,775 2 = 0,601 . Oznacza to, że 60,1% wariancji w mpg można wyjaśnić za pomocą predyktorów modelu.

Powiązane: Jaka jest dobra wartość R-kwadrat?

2. Resztkowy błąd standardowy

Mierzy średnią odległość między obserwowanymi wartościami a linią regresji. W tym przykładzie zaobserwowane wartości odbiegają średnio o 3,008 jednostki od linii regresji .

Powiązany:   Zrozumienie błędu standardowego regresji

Użyj modelu do przewidywania

Z wyników modelu wiemy, że dopasowane równanie regresji wielokrotnej liniowej ma postać:

kapelusz mpg = -19,343 – 0,019*disp – 0,031*hp + 2,715*drat

Możemy użyć tego równania do przewidywania, jakie będzie mpg dla nowych obserwacji . Na przykład możemy znaleźć przewidywaną wartość mpg dla samochodu, który ma następujące atrybuty:

  • wyświetlacz = 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

Dla samochodu o disp = 220, KM = 150 i drat = 3 model przewiduje, że samochód uzyska 18,57373 mpg .

Pełny kod R użyty w tym samouczku znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak dopasować inne typy modeli regresji w R:

Jak wykonać regresję kwadratową w R
Jak wykonać regresję wielomianową w R
Jak przeprowadzić regresję wykładniczą w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *