R Regresja krok po kroku i wielokrotna regresja liniowa [przykład krok po kroku]

Prosta regresja liniowa w R

Regresja liniowa odpowiada na proste pytanie: czy można zmierzyć dokładną relację między jedną zmienną przewidywaną a zestawem predyktorów?

Najprostszym modelem probabilistycznym jest model liniowy:

Prosta regresja liniowa w R

gdzie

  • y = zmienna zależna
  • x = zmienna niezależna
  • Prosta regresja liniowa w R = składnik błędu losowego
  • Prosta regresja liniowa w R = przechwycić
  • Prosta regresja liniowa w R = Współczynnik x

Rozważmy następującą fabułę:

Prosta regresja liniowa w R

Równanie to Prosta regresja liniowa w R jest przechwytem. Jeśli x równa się 0, y będzie równe wyrazowi wolnemu, 4.77. jest nachyleniem linii. Mówi, w jakiej proporcji zmienia się y, gdy zmienia się x.

Aby oszacować optymalne wartości Prosta regresja liniowa w R oraz Prosta regresja liniowa w R, używasz metody zwanej Zwykłe najmniejsze kwadraty (OLS). Metoda ta stara się znaleźć parametry minimalizujące sumę kwadratów błędów, czyli odległość pionową pomiędzy przewidywanymi wartościami y i rzeczywistymi wartościami y. Różnica jest znana jako termin błędu.

Przed oszacowaniem modelu można określić, czy liniowa zależność między y i x jest wiarygodna, wykreślając wykres rozrzutu.

Wykres punktowy

Do wyjaśnienia koncepcji prostej regresji liniowej użyjemy bardzo prostego zbioru danych. Zaimportujemy średni wzrost i wagę amerykańskich kobiet. Zbiór danych zawiera 15 obserwacji. Chcesz zmierzyć, czy wzrost jest dodatnio skorelowany z wagą.

library(ggplot2)
path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv'
df <-read.csv(path)
ggplot(df,aes(x=height, y =  weight))+
geom_point()

Wyjście:

Wykres punktowy

Wykres rozrzutu sugeruje ogólną tendencję do wzrostu y wraz ze wzrostem x. W kolejnym kroku zmierzysz o ile wzrasta za każdą dodatkową kwotę.

Oszacowania najmniejszych kwadratów

W prostej regresji OLS obliczenie Oszacowania najmniejszych kwadratów oraz Oszacowania najmniejszych kwadratów jest proste. Celem tego samouczka nie jest pokazanie wyprowadzenia. Napiszesz tylko formułę.

Chcesz oszacować: Oszacowania najmniejszych kwadratów

Celem regresji OLS jest zminimalizowanie następującego równania:

Oszacowania najmniejszych kwadratów

gdzie

Oszacowania najmniejszych kwadratów jest rzeczywistą wartością i Oszacowania najmniejszych kwadratów jest wartością przewidywaną.

Rozwiązanie dla Oszacowania najmniejszych kwadratów is Oszacowania najmniejszych kwadratów

Należy pamiętać, że Oszacowania najmniejszych kwadratów oznacza średnią wartość x

Rozwiązanie dla Oszacowania najmniejszych kwadratów is Oszacowania najmniejszych kwadratów

W R możesz użyć funkcji cov() i var() do oszacowania Oszacowania najmniejszych kwadratów i możesz użyć funkcji mean() do oszacowania Oszacowania najmniejszych kwadratów

beta <- cov(df$height, df$weight) / var (df$height)
beta

Wyjście:

##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height)
alpha

Wyjście:

## [1] -87.51667

Współczynnik beta oznacza, że ​​na każdy dodatkowy wzrost waga wzrasta o 3.45.

Ręczne szacowanie prostego równania liniowego nie jest idealne. R zapewnia odpowiednią funkcję do estymacji tych parametrów. Wkrótce zobaczysz tę funkcję. Wcześniej przedstawimy, jak ręcznie obliczyć prosty model regresji liniowej. W swojej pracy jako analityk danych rzadko lub wcale nie będziesz w stanie oszacować prostego modelu liniowego. W większości sytuacji zadania regresji wykonywane są na wielu estymatorach.

Wielokrotna regresja liniowa w R

Bardziej praktyczne zastosowania analizy regresji wykorzystują modele, które są bardziej złożone niż prosty model liniowy. Model probabilistyczny, który obejmuje więcej niż jedną zmienną niezależną, nazywa się modele regresji wielokrotnej. Ogólna postać tego modelu to:

Wielokrotna regresja liniowa w R

W notacji macierzowej możesz przepisać model:

  • Wielokrotna regresja liniowa w R

Zmienna zależna y jest teraz funkcją k zmiennych niezależnych. Wartość współczynnika Wielokrotna regresja liniowa w R określa udział zmiennej niezależnej Wielokrotna regresja liniowa w R oraz Wielokrotna regresja liniowa w R.

Krótko przedstawimy założenie, które przyjęliśmy na temat błędu losowego Wielokrotna regresja liniowa w R z OLS:

  • Średnia równa 0
  • Wariancja równa Wielokrotna regresja liniowa w R
  • Normalna dystrybucja
  • Błędy losowe są niezależne (w sensie probabilistycznym)

Musisz rozwiązać Wielokrotna regresja liniowa w R, wektor współczynników regresji, który minimalizuje sumę kwadratów błędów między przewidywaną i rzeczywistą wartością y.

Rozwiązanie w formie zamkniętej to:

Wielokrotna regresja liniowa w R

z:

  • wskazuje transponować macierzy X
  • Wielokrotna regresja liniowa w R wskazuje odwracalna macierz

Korzystamy ze zbioru danych mtcars. Zapoznałeś się już ze zbiorem danych. Naszym celem jest przewidzenie mili na galon na podstawie zestawu funkcji.

Zmienne ciągłe w R

Na razie użyjesz tylko zmiennych ciągłych i odłożysz na bok cechy kategoryczne. Zmienna am jest zmienną binarną przyjmującą wartość 1, jeśli skrzynia biegów jest manualna i 0 dla samochodów z automatyczną skrzynią biegów; vs jest również zmienną binarną.

library(dplyr)
df <- mtcars % > %
select(-c(am, vs, cyl, gear, carb))
glimpse(df)

Wyjście:

## Observations: 32
## Variables: 6
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19....
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1...
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ...
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9...
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3...
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...

Do obliczenia parametrów można użyć funkcji lm(). Podstawowa składnia tej funkcji jest następująca:

lm(formula, data, subset)
Arguments:
	-formula: The equation you want to estimate	
	-data: The dataset used
	-subset: Estimate the model on a subset of the dataset

Pamiętaj, że równanie ma następującą postać

Zmienne ciągłe w R

w R

  • Symbol = zostaje zastąpiony przez ~
  • Każde x jest zastępowane nazwą zmiennej
  • Jeśli chcesz usunąć stałą, dodaj -1 na końcu formuły

Przykład:

Chcesz oszacować wagę poszczególnych osób na podstawie ich wzrostu i dochodów. Równanie jest

Zmienne ciągłe w R

Równanie w R zapisuje się w następujący sposób:

y ~ X1+ X2+…+Xn # Z przecięciem

A więc dla naszego przykładu:

  • Zważ ~ wzrost + dochód

Twoim celem jest oszacowanie mili na galon na podstawie zestawu zmiennych. Równanie do oszacowania to:

Zmienne ciągłe w R

Oszacujesz swoją pierwszą regresję liniową i zapiszesz wynik w dopasowanym obiekcie.

model <- mpg~.disp + hp + drat + wt
fit <- lm(model, df)
fit

Objaśnienie kodu

  • model <- mpg ~. disp + hp + drat+ wt: Zapisz model do oszacowania
  • lm(model, df): Oszacuj model za pomocą ramki danych df
## 
## Call:
## lm(formula = model, data = df)
## 
## Coefficients:
## (Intercept)         disp           hp         drat           wt  
##    16.53357      0.00872     -0.02060      2.01577     -4.38546  
##        qsec  
##     0.64015	

Dane wyjściowe nie dostarczają wystarczających informacji o jakości dopasowania. Możesz uzyskać dostęp do większej ilości szczegółów, takich jak istotność współczynników, stopień swobody i kształt reszt za pomocą funkcji summary().

summary(fit)

Wyjście:

## return the p-value and coefficient
## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5404 -1.6701 -0.4264  1.1320  5.4996 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 16.53357   10.96423   1.508  0.14362   
## disp         0.00872    0.01119   0.779  0.44281   
## hp          -0.02060    0.01528  -1.348  0.18936   
## drat         2.01578    1.30946   1.539  0.13579   
## wt          -4.38546    1.24343  -3.527  0.00158 **
## qsec         0.64015    0.45934   1.394  0.17523   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.558 on 26 degrees of freedom
## Multiple R-squared:  0.8489, Adjusted R-squared:  0.8199 
## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10

Wniosek z wyników powyższej tabeli

  • Powyższa tabela dowodzi, że istnieje silna negatywna zależność między wt i przebiegiem oraz pozytywna zależność między drat.
  • Jedynie zmienna wt ma statystyczny wpływ na mpg. Pamiętaj, że aby przetestować hipotezę w statystyce, używamy:
    • H0: Brak wpływu statystycznego
    • H3: Predyktor ma znaczący wpływ na y
    • Jeśli wartość p jest mniejsza niż 0.05, oznacza to, że zmienna jest istotna statystycznie
  • Skorygowany R-kwadrat: wariancja wyjaśniona przez model. W twoim modelu wyjaśnił on 82 procent wariancji y. R kwadrat zawsze mieści się w przedziale od 0 do 1. Im wyższy, tym lepiej

Możesz uruchomić ANOVA test mający na celu oszacowanie wpływu każdej cechy na wariancje za pomocą funkcji anova().

anova(fit)

Wyjście:

## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq  F value   Pr(>F)    
## disp       1 808.89  808.89 123.6185 2.23e-11 ***
## hp         1  33.67   33.67   5.1449 0.031854 *  
## drat       1  30.15   30.15   4.6073 0.041340 *  
## wt         1  70.51   70.51  10.7754 0.002933 ** 
## qsec       1  12.71   12.71   1.9422 0.175233    
## Residuals 26 170.13    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1	

Bardziej konwencjonalnym sposobem oszacowania wydajności modelu jest przedstawienie reszty w odniesieniu do różnych miar.

Możesz użyć funkcji plot(), aby wyświetlić cztery wykresy:

– Wartości reszty a wartości dopasowane

– Wykres normalnego QQ: kwartyl teoretyczny vs reszty standaryzowane

– Lokalizacja skali: dopasowane wartości vs pierwiastki kwadratowe reszt standaryzowanych

– Pozostałości a dźwignia: Dźwignia a standardowe reszty

Dodajesz kod par(mfrow=c(2,2)) przed plot(fit). Jeśli nie dodasz tej linii kodu, R poprosi Cię o naciśnięcie klawisza Enter w celu wyświetlenia następnego wykresu.

par(mfrow=(2,2))

Objaśnienie kodu

  • (mfrow=c(2,2)): zwróć okno z czterema wykresami obok siebie.
  • Pierwsze 2 dodają liczbę wierszy
  • Drugie 2 dodaje liczbę kolumn.
  • Jeśli napiszesz (mfrow=c(3,2)): utworzysz okno z 3 wierszami i 2 kolumnami
plot(fit)

Wyjście:

Zmienne ciągłe w R

Formuła lm() zwraca listę zawierającą wiele przydatnych informacji. Dostęp do nich można uzyskać za pomocą utworzonego obiektu dopasowania, po którym następuje znak $ i informacja, którą chcesz wyodrębnić.

– współczynniki: `fit$współczynniki`

– reszty: `fit$residuals`

– dopasowana wartość: `fit$fitted.values`

Regresja czynników w R

W ostatnim oszacowaniu modelu regresję mpg przeprowadza się wyłącznie na zmiennych ciągłych. Dodanie zmiennych czynnikowych do modelu jest proste. Dodajesz zmienną am do swojego modelu. Ważne jest, aby upewnić się, że zmienna jest poziomem czynnika, a nie ciągła.

df <- mtcars % > %
mutate(cyl = factor(cyl),
    vs = factor(vs),
    am = factor(am),
    gear = factor(gear),
    carb = factor(carb))
summary(lm(model, df))

Wyjście:

## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5087 -1.3584 -0.0948  0.7745  4.6251 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 23.87913   20.06582   1.190   0.2525  
## cyl6        -2.64870    3.04089  -0.871   0.3975  
## cyl8        -0.33616    7.15954  -0.047   0.9632  
## disp         0.03555    0.03190   1.114   0.2827  
## hp          -0.07051    0.03943  -1.788   0.0939 .
## drat         1.18283    2.48348   0.476   0.6407  
## wt          -4.52978    2.53875  -1.784   0.0946 .
## qsec         0.36784    0.93540   0.393   0.6997  
## vs1          1.93085    2.87126   0.672   0.5115  
## am1          1.21212    3.21355   0.377   0.7113  
## gear4        1.11435    3.79952   0.293   0.7733  
## gear5        2.52840    3.73636   0.677   0.5089  
## carb2       -0.97935    2.31797  -0.423   0.6787  
## carb3        2.99964    4.29355   0.699   0.4955  
## carb4        1.09142    4.44962   0.245   0.8096  
## carb6        4.47757    6.38406   0.701   0.4938  
## carb8        7.25041    8.36057   0.867   0.3995  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.833 on 15 degrees of freedom
## Multiple R-squared:  0.8931, Adjusted R-squared:  0.779 
## F-statistic:  7.83 on 16 and 15 DF,  p-value: 0.000124

R wykorzystuje pierwszy poziom czynnika jako grupę bazową. Należy porównać współczynniki drugiej grupy z grupą bazową.

Regresja liniowa krok po kroku w R

Ostatnia część tego samouczka dotyczy regresja krokowa algorytm. Celem tego algorytmu jest dodawanie i usuwanie potencjalnych kandydatów w modelach oraz zachowanie tych, którzy mają istotny wpływ na zmienną zależną. Ten algorytm jest sensowny, gdy zbiór danych zawiera dużą listę predyktorów. Nie musisz ręcznie dodawać i usuwać zmiennych niezależnych. Regresja krokowa jest budowana w celu wybrania najlepszych kandydatów pasujących do modelu.

Zobaczmy w akcji jak to działa. Używasz zbioru danych mtcars ze zmiennymi ciągłymi tylko w celach pedagogicznych. Przed rozpoczęciem analizy warto ustalić różnice między danymi za pomocą macierzy korelacji. Biblioteka GGally jest rozszerzeniem ggplot2.

Biblioteka zawiera różne funkcje umożliwiające pokazanie statystyk podsumowujących, takich jak korelacja i rozkład wszystkich zmiennych w macierzy. Użyjemy funkcji ggscatmat, ale możesz odwołać się do winieta aby uzyskać więcej informacji na temat biblioteki GGally.

Podstawowa składnia ggscatmat() jest następująca:

ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson")
arguments:
-df:  A matrix of continuous variables
-columns: Pick up the columns to use in the function. By default, all columns are used
-corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula

Wyświetlasz korelację dla wszystkich swoich zmiennych i decydujesz, które z nich będą najlepszymi kandydatami do pierwszego kroku regresji krokowej. Istnieją pewne silne korelacje między Twoimi zmiennymi a zmienną zależną, mpg.

library(GGally)
df <- mtcars % > %
	select(-c(am, vs, cyl, gear, carb))
ggscatmat(df, columns = 1: ncol(df))

Wyjście:

Regresja liniowa krok po kroku w R

Przykład regresji krok po kroku

Wybór zmiennych jest ważną częścią dopasowania modelu. Regresja krokowa wykona proces wyszukiwania automatycznie. Aby oszacować, ile jest możliwych wyborów w zestawie danych, należy obliczyć Przykład regresji krok po kroku gdzie k jest liczbą predyktorów. Ilość możliwości rośnie wraz z liczbą zmiennych niezależnych. Dlatego musisz mieć automatyczne wyszukiwanie.

Musisz zainstalować pakiet olsrr z CRAN. Pakiet nie jest jeszcze dostępny w Anacondzie. Dlatego instalujesz go bezpośrednio z wiersza poleceń:

install.packages("olsrr")

Możesz wykreślić wszystkie podzbiory możliwości za pomocą kryteriów dopasowania (tj. R-kwadrat, skorygowany R-kwadrat, kryteria Bayesa). Model o najniższych kryteriach AIC będzie modelem ostatecznym.

library(olsrr)
model <- mpg~.
fit <- lm(model, df)
test <- ols_all_subset(fit)
plot(test)

Objaśnienie kodu

  • mpg ~.: Skonstruuj model do oszacowania
  • lm(model, df): Uruchom model OLS
  • ols_all_subset(fit): Skonstruuj wykresy z odpowiednimi informacjami statystycznymi
  • fabuła (test): Narysuj wykresy

Wyjście:

Przykład regresji krok po kroku

Modele regresji liniowej wykorzystują test t oszacować statystyczny wpływ zmiennej niezależnej na zmienną zależną. Naukowcy ustalili maksymalny próg na 10 procent, przy czym niższe wartości wskazują na silniejsze powiązanie statystyczne. Strategia regresji krokowej jest skonstruowana wokół tego testu, aby dodawać i usuwać potencjalnych kandydatów. Algorytm działa w następujący sposób:

Regresja liniowa krok po kroku w R
Regresja liniowa krok po kroku w R
  • Krok 1: Regresuj każdy predyktor na y oddzielnie. Mianowicie dokonaj regresji x_1 na y, x_2 na y do x_n. Przechowuj Wartość p i utrzymuj regresor z wartością p niższą niż zdefiniowany próg (domyślnie 0.1). Predyktory o istotności mniejszej niż próg zostaną dodane do ostatecznego modelu. Jeśli żadna zmienna nie ma wartości p niższej niż próg wejściowy, algorytm zatrzymuje się i otrzymujesz ostateczny model tylko ze stałą.
  • Krok 2: Użyj predyktora z najniższą wartością p i dodaj osobno jedną zmienną. Regresujesz stałą, najlepszy predyktor kroku pierwszego i trzecią zmienną. Dodajesz do modelu krokowego nowe predyktory o wartości niższej niż próg wejściowy. Jeśli żadna zmienna nie ma wartości p niższej niż 0.1, algorytm się zatrzymuje, a Ty masz swój ostateczny model z tylko jednym predyktorem. Regresujesz model krokowy, aby sprawdzić istotność najlepszych predyktorów kroku 1. Jeśli jest wyższa niż próg usuwania, zachowujesz ją w modelu krokowym. W przeciwnym razie ją wykluczasz.
  • Krok 3: Powtarzasz krok 2 na nowym najlepszym modelu krokowym. Algorytm dodaje predyktory do modelu krokowego na podstawie wprowadzanych wartości i wyklucza predyktor z modelu krokowego, jeśli nie spełnia on progu wykluczającego.
  • Algorytm jest kontynuowany, dopóki nie będzie można dodać ani wykluczyć żadnej zmiennej.

Algorytm można wykonać za pomocą funkcji ols_stepwise() z pakietu olsrr.

ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE)

arguments:
-fit:  Model to fit. Need to use `lm()`before to run `ols_stepwise()
-pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1
-prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3
-details: Print the details of each step

Wcześniej pokażemy Ci kroki algorytmu. Poniżej znajduje się tabela ze zmiennymi zależnymi i niezależnymi:

Zmienna zależna Zmienne niezależne
mpg dysp
hp
szczur
wt
sek

Rozpocznij

Na początek algorytm rozpoczyna się od uruchomienia modelu dla każdej zmiennej niezależnej z osobna. Tabela pokazuje wartość p dla każdego modelu.

## [[1]]
##  (Intercept)         disp 
## 3.576586e-21 9.380327e-10 
## 
## [[2]]
##  (Intercept)           hp 
## 6.642736e-18 1.787835e-07 
## 
## [[3]]
##  (Intercept)         drat 
## 0.1796390847 0.0000177624 
## 
## [[4]]
##  (Intercept)           wt 
## 8.241799e-19 1.293959e-10 
## 
## [[5]
## (Intercept)        qsec 
##  0.61385436  0.01708199

Aby wejść do modelu, algorytm zachowuje zmienną o najniższej wartości p. Z powyższego wyniku wynika, że ​​wag

Krok 1

W pierwszym kroku algorytm uruchamia mpg niezależnie na wt i pozostałych zmiennych.

## [[1]]
##  (Intercept)           wt         disp
## 4.910746e-16 7.430725e-03 6.361981e-02 
## 
## [[2]]
##  (Intercept)           wt           hp 
## 2.565459e-20 1.119647e-06 1.451229e-03 
## 
## [[3]]
##  (Intercept)           wt         drat 
## 2.737824e-04 1.589075e-06 3.308544e-01 
## 
## [[4]]
##  (Intercept)           wt         qsec 
## 7.650466e-04 2.518948e-11 1.499883e-03

Każda zmienna jest potencjalnym kandydatem do wejścia do ostatecznego modelu. Algorytm zachowuje jednak tylko zmienną o niższej wartości p. Okazuje się, że hp ma nieco niższą wartość p niż qsec. Dlatego hp wchodzi do ostatecznego modelu

Krok 2

Algorytm powtarza pierwszy krok, ale tym razem z dwiema niezależnymi zmiennymi w ostatecznym modelu.

## [[1]]
##  (Intercept)           wt           hp         disp 
## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 
## 
## [[2]]
##  (Intercept)           wt           hp         drat 
## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 
## 
## [[3]]
##  (Intercept)           wt           hp         qsec 
## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01

Żadna ze zmiennych, które weszły do ​​ostatecznego modelu, nie ma wystarczająco niskiej wartości p. Algorytm zatrzymuje się w tym miejscu; mamy ostateczny model:

## 
## Call:
## lm(formula = mpg ~ wt + hp, data = df)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.941 -1.600 -0.182  1.050  5.854 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.22727    1.59879  23.285  < 2e-16 ***
## wt          -3.87783    0.63273  -6.129 1.12e-06 ***
## hp          -0.03177    0.00903  -3.519  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.593 on 29 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8148 
## F-statistic: 69.21 on 2 and 29 DF,  p-value: 9.109e-12

Aby porównać wyniki, możesz użyć funkcji ols_stepwise().

stp_s <-ols_stepwise(fit, details=TRUE)

Wyjście:

Algorytm znajduje rozwiązanie po 2 krokach i zwraca ten sam wynik, co wcześniej.

Na koniec można powiedzieć, że modele wyjaśniają dwie zmienne i wyraz wolny. Mila na galon jest ujemnie skorelowana z mocą brutto i masą

## You are selecting variables based on p value...
## 1 variable(s) added....
## Variable Selection Procedure
##  Dependent Variable: mpg 
## 
##  Stepwise Selection: Step 1 
## 
##  Variable wt Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.868       RMSE                3.046 
## R-Squared               0.753       Coef. Var          15.161 
## Adj. R-Squared          0.745       MSE                 9.277 
## Pred R-Squared          0.709       MAE                 2.341 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##		ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     847.725         1        847.725    91.375    0.0000 
## Residual       278.322        30          9.277                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.285         1.878                 19.858    0.000    33.450    41.120 
##          wt    -5.344         0.559       -0.868    -9.559    0.000    -6.486    -4.203 
## ----------------------------------------------------------------------------------------
## 1 variable(s) added...
## Stepwise Selection: Step 2 
## 
##  Variable hp Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.909       RMSE                2.593 
## R-Squared               0.827       Coef. Var          12.909 
## Adj. R-Squared          0.815       MSE                 6.726 
## Pred R-Squared          0.781       MAE                 1.901 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##			ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     930.999         2        465.500    69.211    0.0000 
## Residual       195.048        29          6.726                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.227         1.599                 23.285    0.000    33.957    40.497 
##          wt    -3.878         0.633       -0.630    -6.129    0.000    -5.172    -2.584 
##          hp    -0.032         0.009       -0.361    -3.519    0.001    -0.050    -0.013 
## ----------------------------------------------------------------------------------------
## No more variables to be added or removed.

Nauczanie maszynowe

Nauczanie maszynowe staje się coraz bardziej powszechne wśród naukowców zajmujących się danymi i jest wdrażane w setkach produktów, z których korzystasz codziennie. Jedną z pierwszych aplikacji ML było filtr spamu.

Poniżej przedstawiono inne zastosowania uczenia maszynowego:

  • Identyfikacja niechcianych wiadomości spamowych w wiadomościach e-mail
  • Segmentacja zachowań klientów pod kątem reklamy ukierunkowanej
  • Ograniczenie nieuczciwych transakcji kartami kredytowymi
  • Optymalizacja zużycia energii w budynku mieszkalnym i biurowym
  • Rozpoznawanie twarzy

Nadzorowana nauka

In Nadzorowana nauka, dane szkoleniowe, które przekazujesz algorytmowi, zawierają etykietę.

Klasyfikacja jest prawdopodobnie najczęściej stosowaną techniką uczenia nadzorowanego. Jednym z pierwszych zadań klasyfikacyjnych, z jakimi zetknęli się badacze, był filtr spamu. Celem uczenia się jest przewidzenie, czy wiadomość e-mail jest klasyfikowana jako spam czy ham (dobry e-mail). Maszyna, po etapie szkolenia, może wykryć klasę wiadomości e-mail.

Regresje są powszechnie stosowane w uczeniu maszynowym do przewidywania wartości ciągłej. Zadanie regresji może przewidzieć wartość a zmienna zależna w oparciu o zestaw niezależne zmienne (zwane także predyktorami lub regresorami). Na przykład regresja liniowa może przewidzieć cenę akcji, prognozę pogody, sprzedaż i tak dalej.

Poniżej znajduje się lista podstawowych algorytmów uczenia nadzorowanego.

  • Regresja liniowa
  • Regresja logistyczna
  • Najbliżsi sąsiedzi
  • Obsługa maszyny wektorowej (SVM)
  • Drzewa decyzyjne i losowy las
  • Sieci neuronowe

Uczenie się bez nadzoru

In Uczenie się bez nadzoru, dane treningowe są nieoznakowane. System próbuje uczyć się bez odniesienia. Poniżej znajduje się lista algorytmów uczenia bez nadzoru.

  • K-średnia
  • Hierarchiczny Cluster Analiza
  • Maksymalizacja oczekiwań
  • Wizualizacja i redukcja wymiarowości
  • Analiza głównych składowych
  • PCA jądra
  • Osadzanie lokalnie-liniowe

Podsumowanie

  • Regresja liniowa odpowiada na proste pytanie: czy można zmierzyć dokładną relację między jedną zmienną przewidywaną a zestawem predyktorów?
  • Zwykła metoda najmniejszych kwadratów próbuje znaleźć parametry, które minimalizują sumę kwadratów błędów, czyli pionową odległość między przewidywanymi wartościami y i rzeczywistymi wartościami y.
  • Model probabilistyczny, który zawiera więcej niż jedną zmienną niezależną, nazywany jest modelem regresji wielokrotnej.
  • Celem algorytmu regresji liniowej krok po kroku jest dodawanie i usuwanie potencjalnych kandydatów w modelach oraz pozostawianie tych, którzy mają istotny wpływ na zmienną zależną.
  • Wybór zmiennych jest ważną częścią dopasowania modelu. Regresja krokowa wykonuje proces wyszukiwania automatycznie.

Zwykłą regresję najmniejszych kwadratów można podsumować w poniższej tabeli:

Biblioteka Cel Funkcjonować Argumenty
baza Oblicz regresję liniową lm() formuła, dane
baza Podsumuj model podsumować() dopasować
baza Wyodrębnij współczynniki lm()$współczynnik
baza Wyodrębnij pozostałości lm()$reszty
baza Wyodrębnij dopasowaną wartość lm()$dopasowane.wartości
olsrr Uruchom regresję krokową ols_stepwise() pasuje, pent = 0.1, premia = 0.3, szczegóły = FAŁSZ

Note: Pamiętaj o przekształceniu zmiennej kategorycznej na współczynnik przed dopasowaniem do modelu.