Główną ideą regresji jest wyjaśnianie, przewidywanie, prognozowanie danych dla pewnej zmiennej (określanej jako zmienna zależna, objaśniana, wyjaśniana) na podstawie innych zmiennych (zmienne niezależne, predyktory, zmienne objaśniające, zmienne wyjaśniające).
Budowa liniowego modelu zależności między dwoma zmiennymi składa się z trzech etapów:
Określenie czy między zmiennymi istnieje zależność.
Budowa modelu.
Analiza wynków modelu (w tym ocena dopasowania modelu).
Po zbudowaniu modelu oraz ocenie dopasowania modelu można go wykorzystać do wykonania predykcji.
library(ggplot2)
ggplot(dane, aes(x=tg5cm, y=tg10cm)) + geom_point() +
coord_fixed(ratio = 1) +
xlab("tg5cm: Temperatura gruntu na 5cm [C]") +
ylab("tg10cm: Temperatura gruntu na 10cm [C]") +
geom_smooth() +
geom_abline(color = 'grey') +
theme_bw()
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
W R do budowy modelu liniowego służy funkcja lm()
.
Obowiązkowo należy podać 2 argumenty:
Funkcja lm()
dopasowuje model liniowy, wyznacza oceny
współczynników \(\beta\) oraz wylicza
wartości reszt. Wynikiem działania funkcji jest obiekt klasy
lm, który będzie przechowywał informacje o dopasowanym modelu.
Do ważniejszych informacji należą:
## (Intercept) tg5cm
## 0.2291464 0.9604959
W przypadku regresji linowej funkcja regresji przyjmuje postać funkcji liniowej:
\[y = ax + b\] gdzie,
W wyniku otrzymamy wartości dwóch współczynników regresji:
współczynnika mówiącego o nachyleniu prostej regresji - określa o ile jednostek przeciętnie wzrośnie (lub zmaleje gdy współczynnik ten ma wartość ujemną) wartość zmiennej zależnej (objaśnianej, przewidywanej), gdy wartość zmiennej niezależnej (objaśniającej, predyktorów) wzrośnie o jedną jednostkę.
wyraz wolny - Intercept
W efekcie otrzymamy równanie modelu regresji dla zależności między temperaturą gruntu na 5 i 10 cm.
\[tg10cm = 0.960496 *tg5cm + 0.229146\] Interpretacja: W przykładzie - na każdy 1C wzrostu temperatury gruntu na 5 cm (tg5cm) przeciętnie przypada wzrost temperatury gruntu na 10 cm o 0.96C.
##
## Call:
## lm(formula = tg10cm ~ tg5cm, data = dane)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.46323 -0.23488 -0.01063 0.26094 0.94909
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.229146 0.036519 6.275 9.98e-10 ***
## tg5cm 0.960496 0.002734 351.257 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4108 on 363 degrees of freedom
## Multiple R-squared: 0.9971, Adjusted R-squared: 0.9971
## F-statistic: 1.234e+05 on 1 and 363 DF, p-value: < 2.2e-16
Podsumowanie wyników modelu regresji składa się z kilku elementów:
Do oceny poprawności dopasowania modelu wykorzystuje się reszty (tzw.residua). Reszty wyznacza się jako różnicę wartości obserwowanej Y a wartości oszacowanej z modelu Ŷ.
Statystyki reszt – Min – minimum, 1Q – pierwszy kwartyl, Median – mediana, 3Q – trzeci kwartyl, Max – maksimum.
## Residuals:
## Min 1Q Median 3Q Max
## -2.46323 -0.23488 -0.01063 0.26094 0.94909
Interpretacja wyników:
## [1] -2.024785e-18
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.229146 0.036519 6.275 9.98e-10 ***
## tg5cm 0.960496 0.002734 351.257 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Tabela współczynniki zawiera następujące informacje dla każdego współczynnika:
Interpretacja:
Residual standard error: 0.4108 on 363 degrees of freedom
Z 66% prawdopodobieństwem możemy stwierdzić, że wartość rzeczywista nie będzie się różnić od prognozowanej o więcej niż ±0.4108 C.
Zatem: 99,71% zmienności zmiennej tg10cm jest wyjaśniona przez zmienność zmiennej tg5cm.
Multiple R-squared: 0.9971, Adjusted R-squared: 0.9971
– wartość poziomu istotności całego modelu Model jest wysoko istotny
## F-statistic: 1.234e+05 on 1 and 363 DF, p-value: < 2.2e-16
Stworzenie ramki danych zawierającej wyniki modelu
#reszty - różnica między warrtością obserwowaną Y a wartością oszacowaną z modelu Ŷ.
model_df$reszty <- model_lm$residuals
## tg10cm tg5cm reszty fitted
## 1 5.0 5.1 -0.1276753 5.127675
## 2 4.5 4.1 0.3328206 4.167179
## 3 4.5 4.2 0.2367710 4.263229
## 4 4.8 4.6 0.1525727 4.647427
## 5 5.5 5.2 0.2762752 5.223725
## 6 5.6 5.2 0.3762752 5.223725
Mając dopasowany model liniowy możemy zastosować go do predykcji wartości \(y\) dla zadanych wartości \(X\). W poniższym przykładzie zastosujemy model liniowy do predykcji wartości tg10cm dla roku 2009.
Obiekt model_lm
zawiera liniowy model zależności
pomiędzy temperaturą gruntu na 5cm i temperaturą gruntu na 10 cm,
zbudowany na podstawie danych z 2007 roku. Równanie regresji ma
postać:
\[tg10cm = 0.960496 *tg5cm - 0.229146\] Znając zatem wartości temperatury gruntu na 5 cm w roku 2009, możemy oszacować wartości temperatury gruntu na 10 cm w 2009 roku.
Do wykonania predykcji w R służy funkcja predict()
. W
funkcji tej musimy podać 2 argumenty: 1) obiekt modelu; 2) zbiór danych
zawierający zmienne zależne (objaśniające). Nazwy kolumn muszą być
zgodne z nazwami zmiennych zależnych użytych do budowy modelu.
## ID tg5cm
## 1 1 -2.0
## 2 2 -3.9
## 3 3 -2.2
## 4 4 -1.1
## 5 5 -3.2
## 6 6 -3.8
Kolumna tg5cm zawiera wartości temperatury gruntu na 5 cm. Wartości te zostaną użyte do oszacowania wartości temperatury gruntu na 10cm.
## 1 2 3 4 5 6
## -1.691845 -3.516787 -1.883944 -0.827399 -2.844440 -3.420738
Predykcja może także zostać wykonana dla wybranych wartości.
#new to data.frame zawierajaca zmienne niezależne (objasniajace)
new <- data.frame(tg5cm = c(-3, 4, 10))
p <- predict(model_lm, new)
p
## 1 2 3
## -2.652341 4.071130 9.834105
Proszę zilustrować zależność między temperaturą wody w Parsęcie (TwP) a temperaturą powietrza (tps).
Proszę zbudować model zależności temperatury wody w Parsęcie (TwP) od temperatury powietrza (tps).
Dla zbudowanego modelu proszę:
Dla chętnych: Proszę dodać równanie regresji liniowej do wykresu ilustrującego zależność między temperaturą wody w Parsęcie a temperaturą powietrza.