Przejdź do treści
Strona główna » Blog » Regresja liniowa – teoria i praktyka

Regresja liniowa – teoria i praktyka

Wprowadzenie

Regresja liniowa jest metodą statystyczną służącą do określenia zależności między jedną zmienną a drugą (regresja liniowa prosta) lub kilkoma zmiennymi niezależnymi a zmienną zależną (regresja liniowa wielokrotna). Regresja liniowa znajduje szerokie zastosowanie w różnych dziedzinach, np. w naukach przyrodniczych, ekonomii, medycynie czy naukach technicznych. Obecnie regresję liniową uważa się za jeden z algorytmów nadzorowanych uczenia maszynowego.

W niniejszym artykule zajmiemy się głównymi aspektami regresji liniowej, omawiając zarówno teoretyczne podstawy, jak i przykłady praktycznego zastosowania tej metody.

Podstawy teoretyczne

Regresja liniowa prosta

Regresja liniowa prosta jest najprostszym przypadkiem regresji liniowej, gdzie analizowany jest związek między jedną zmienną niezależną (X) a jedną zmienną zależną (Y).

Model regresji prostej

Y = β0 + β1X

gdzie:

Y – zmienna zależna,

X – zmienna niezależna,

β0​ – wyraz wolny

β1​ – współczynnik regresji, określający nachylenie linii regresji,

Interpretacja współczynników

β0​ to wartość Y, gdy X=0, czyli punkt przecięcia linii regresji z osią Y.

β1​ to współczynnik nachylenia, mówiący o zmianie Y w odpowiedzi na jednostkową zmianę X.

Przykłady praktycznego zastosowania

O tym jak ważnym zagadnieniem jest regresja liniowa (w tym prosta) świadczyć może fakt powstawania na ten temat podręczników – np. “Applied linear regression”. Do dziedzin, w których wykorzystywana jest regresja liniowa prosta zaliczamy:

  • Chemia – analiza wielu zjawisk chemicznych wykorzystuje regresję liniową. Przykładem może być określanie szybkości reakcji chemicznych.
  • Ekonomia – przykładem zastosowania regresji liniowej prostej jest badanie wpływu Covid-19 na PKB.

Regresja liniowa wielokrotna

Regresja liniowa wielokrotna służy do określenia zależności między jedną zmienną zależną (Y) a dwiema lub więcej zmiennymi niezależnymi X1, X2, …, Xn.

Model regresji wielokrotnej

Y = β0 + β1X1 + β1X2 + … + βnXn

gdzie:

Y – zmienna zależna,

X1, X2, …, Xn – zmienne niezależne,

β0​ – wyraz wolny

β1, β2, …, βn – współczynniki regresji, określające wpływ poszczególnych zmiennych na Y,

Interpretacja współczynników

β0​ to wartość Y, gdy wszystkie zmienne niezależne Xi​ są równe zero.

β1, β2, …, βn określają jak zmienia się Y w odpowiedzi na jednostkową zmianę poszczególnych Xi, rzy założeniu, że pozostałe zmienne niezależne pozostają stałe.

przy założeniu, że pozostałe zmienne niezależne pozostają stałe

Przykłady praktycznego zastosowania

Możemy znaleźć wiele przykładów zastosowania regresji liniowej wielokrotnej. Poniżej przedstawiamy wybrane:

  • Biologia – prognozowanie plonu jęczmienia.
  • Sport – identyfikacja czynników wpływających na wyniki drużyny piłkarskiej.
python szkolenia
pozaiom początkujący

POCZĄTKUJĄCY

1600 zł

Kurs programowania Python Online dla początkujących (Zdalnie)

python szkolenia

ŚREDNIOZAAWANSOWANY

1800 zł

Python w analizie danych (Zdalnie)

Dopasowanie współczynników w regresji liniowej

Dopasowanie współczynników jest kluczowym procesem w regresji liniowej, który polega na znalezieniu takich wartości, które najlepiej odwzorowują związek między zmiennymi niezależnymi a zmienną zależną. Jedną z metod służących do dopasowania współczynników jest metoda najmniejszych kwadratów.

Metoda najmniejszych kwadratów

Metoda najmniejszych kwadratów polega na minimalizacji sumy kwadratów różnic między rzeczywistymi wartościami zmiennej zależnej a wartościami przewidywanymi przez model, czyli sumę błędu kwadratowego. W przypadku regresji liniowej prostej, minimalizujemy wyrażenie:

    \[SSE=\sum_{i=1}^{m}(Y_i-(\beta_0+\beta_1X_1 ))^2\]

Dla regresji liniowej wielokrotnej minimalizujemy analogiczne wyrażenie:

    \[SSE=\sum_{i=1}^{m}(Y_i-(\beta_0+\beta_1X_2+\beta_1X_2+...+\beta_nX_n))^2\]

gdzie m to liczba obserwacji.

Ocena dopasowania w regresji liniowej

Zależność wyznaczona poprzez zastosowanie regresji liniowej powinna zostać poddana ocenie, dzięki której będziemy wiedzieć, jak dobrze model regresji liniowej pasuje do danych. Istnieje kilka popularnych miar służących do tego celu. Jedną z nich jest współczynnik determinacji R2.

Współczynnik determinacji R2

Współczynnik determinacji R2 jest definiowany jako stosunek wyjaśnianej zmienności do całkowitej zmienności zmiennej zależnej:

    \[R^2=1-\frac{\sum_{i=1}^{m}(Y_i-\hat{Y_i})^2}{\sum_{i=1}^{m}(Y_i-\bar{Y})^2}\]

gdzie:

Y_i to obserwowane wartości zmiennej zależnej,
\hat{Y_i} to przewidywane wartości zmiennej zależnej na podstawie modelu regresji,
\bar{Y_i} to średnia wartość zmiennej zależnej,
m – to liczba obserwacji.

Wartość R2 mieści się w przedziale od 0 do 1, gdzie wartość bliżej 1 oznacza lepsze dopasowanie modelu do danych.

Średni błąd kwadratowy

Średni błąd kwadratowy (MSE – mean square error) to średnia kwadratów różnic między wartością zaobserwowaną w badaniu statystycznym a wartościami przewidywanymi na podstawie modelu. Porównując obserwacje z wartościami przewidywanymi, konieczne jest podniesienie różnic do kwadratu, ponieważ niektóre wartości danych będą większe od przewidywań (a więc ich różnice będą dodatnie), a inne będą mniejsze (a więc ich różnice będą ujemne). Średni błąd kwadratowy obliczamy z zależności:

    \[MSE=\frac{1}{m}\sum_{i=1}^{m}(Y_i-\hat{Y_i})^2\]

Testy istotności statystycznej

Istotność statystyczna to stwierdzenie, że ​​wyników przedstawionych w danych nie można wytłumaczyć wyłącznie przez przypadek. Popularnym testem w tym kontekście jest test t-studenta dla pojedynczego współczynnika regresji.

Implementacja regresji liniowej

W tym rozdziale omówimy implementację regresji liniowej w trzech popularnych narzędziach: Pythonie, MATLABie oraz R.

Regresja liniowa w Pythonie

W Pythonie regresję liniową można zrealizować przy użyciu biblioteki scikit-learn, która zapewnia wygodny interfejs do budowy modeli uczenia maszynowego.

Python
# Importowanie niezbędnych bibliotek
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

# Przygotowanie danych
X = np.array([[1], [2], [3], [4], [5]])
Y = np.array([2, 3.5, 4, 5, 6])

# Inicjalizacja modelu regresji liniowej
model = LinearRegression()

# Dopasowanie modelu do danych
model.fit(X, Y)

# Wyświetlenie współczynników regresji
print(f'Współczynniki regresji: {model.coef_}')

# Przewidywanie wartości Y dla danych wejściowych
Y_pred = model.predict(X)

# Wykres dopasowania
plt.scatter(X, Y, color='blue', label='Dane')
plt.plot(X, Y_pred, color='red', linewidth=2, label='Regresja liniowa')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()

# Ocena dopasowania modelu
R2 = model.score(X, Y)
print(f'Współczynnik determinacji R^2: {R2}')
Regresja liniowa w Pythonie
Regresja liniowa w Pythonie

Regresja liniowa w Matlabie

W MATLABie regresję liniową można realizować za pomocą wbudowanych funkcji do analizy danych.

MATLAB
% Przygotowanie danych
X = [1 2 3 4 5]';
Y = [2 3.5 4 5 6]';

% Dopasowanie modelu regresji liniowej
mdl = fitlm(X, Y);

% Wyświetlenie współczynników regresji
disp(mdl.Coefficients);

% Wykres danych i dopasowanej linii regresji
plot(mdl);
xlabel('X');
ylabel('Y');

Regresja liniowa w R

W R regresję liniową można przeprowadzić za pomocą funkcji lm, która jest częścią podstawowego zestawu narzędzi do analizy statystycznej.

R
# Przygotowanie danych
X <- c(1, 2, 3, 4, 5)
Y <- c(2, 3.5, 4, 5, 6)

# Dopasowanie modelu regresji liniowej
model <- lm(Y ~ X)

# Wyświetlenie podsumowania modelu
print(summary(model))

# Wykres danych i dopasowanej linii regresji
plot(X, Y, col='blue', pch=16, main='Regresja liniowa')
abline(model, col='red', lwd=2)

Podsumowanie

Regresja liniowa jest kluczową techniką analizy danych, która znajduje zastosowanie w wielu dziedzinach nauki i przemysłu. W tym artykule omówiliśmy podstawy teoretyczne regresji liniowej oraz przedstawiliśmy jej implementację w różnych środowiskach programistycznych, takich jak Python, MATLAB i R.

Odnośniki

[1] Weisberg, Sanford. Applied linear regression. Vol. 528. John Wiley & Sons, 2005.

[2] Yan, Bangrui. “The impact of the coronavirus on the US economy based on the simple linear regression model.” Retracted on September 15, 2021 The Sixth International Conference on Information Management and Technology. 2021.

[3] Mokarram, Marzieh, and Ehsan Bijanzadeh. “Prediction of biological and grain yield of barley using multiple regression and artificial neural network models.” Australian Journal of Crop Science 10.6 (2016): 895-903.

[4] Lopes-Silva, João Paulo, et al. “Influence of physical fitness on special judo fitness test performance: A multiple linear regression analysis.” The Journal of Strength & Conditioning Research 35.6 (2021): 1732-1738.

python szkolenia
pozaiom początkujący

POCZĄTKUJĄCY

1600 zł

Kurs programowania Python Online dla początkujących (Zdalnie)

python szkolenia

ŚREDNIOZAAWANSOWANY

1800 zł

Python w analizie danych (Zdalnie)