Przekrojowe = jednokrotny pomiar w tym samym momencie
Szeregi czasowe = wielokrotny pomiar powtarzany w pewnym stałym odstępie czasu (dane roczne, kwartalne, miesięczne, tygodniowe, dzienne itd)
W szeregu czasowym można zwykle wyróżnić długookresową tendencję (trend); powtarzalne wahania (sezonowość, np. liczba zgonów rośnie zimą, a spada latem); resztę traktuje się jako wartości przypadkowe. Reasumując:
\[TS = T + S + E\]
lub
\[TS = T \cdot S \cdot E\]
Pierwszy wariant nazywa się addytywny drugi multiplikatywny. W wariancie addytywnym zmiany (trendu/sezonowości) okres/okres są stałe; w wariancie multiplikatywnym tempo zmiany jest stałe, tj. zjawisko okres/okres rośnie/spada o x%. W jednostkach bezwzględnych oznacza to, że rośnie/spada coraz szybciej.
Celem statystycznej analizy szeregów czasowych jest opisanie oraz prognozowanie zmian wartości obserwowanych w czasie (na podstawie danych historycznych).
Generalnie jest to trudne zadanie, mówiąc oględnie :-) Ponieważ jest trudne, to metod i modeli jest multum. W tym dokumencie omówimy metody elementarne: wykres liniowy, średnie tempo zmian oraz trend liniowy
Pokażemy to na przykładach, ograniczając teorię do minimum.
W przypadku szeregów czasowych wykres liniowy (ewentualnie punktowy lub słupkowy) jest najpopularniejszy. Przykład: z bazy danych WHO (https://www.who.int/data/gho) pobrano informacje nt odsetka osób dorosłych z nadwagą (BMI 30 i więcej; Prevalence of obesity among adults…) dla Polski w latach 1975–2016.
Uwaga: WHO podaje wskaźniki surowe (crude) i standaryzowane; pobrano surowe
Wykres liniowy
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Interpretacja: czy zjawisko rośnie czy spada; jak szybko rośnie jak szybko spada.
Uwaga: można manipulować wykresem poprzez zmianę proporcji (współczynnika proporcji czyli po angielsku aspect ratio)
Teraz (optycznie) wolniej rośnie (proporcja wysokość/szerokość jest większa)…
Oraz (albo raczej pośrednio) zakresem na osi OY;
Jeżeli oś OY nie zaczyna się od zera to krzywa będzie bardziej stroma bo efektywnie wykres będzie miał większe proporcje wysokość/szerokość:
Puryści uważają że każdy wykres powinien zaczynać się od zera. Są przykłady zeznań przed komisją senacją w USA gdzie dowody prezentowane na wykresach z niezerową linią bazową były dyskwalifikowane jako manipulacja.
Słynna książka How to lie with statistics zawiera rozdział na temat zatytułowany The Gee-Whiz Graphs; https://en.wikipedia.org/wiki/Misleading_graph
Można umieścić wiele krzywych celem porównania:
Jeżeli krzywe się dobrze zachowują (czytaj: nie przecinają się) na to sens; w innym przypadku trudno jest porównać krzywe. Nie należy też przesadzać z liczbą krzywych na wykresie. Na pewno coś co wygląda jak splątany makaron będzie bezużyteczne…
Punktowy:
Nie uważam za dobry pomysł. Nie podkreśla ciągłości zjawisk w czasie
Słupkowy:
Jest OK. Ale wielosłupki zamiast wielu linii prowadzą do problemów:
Oba dla mnie nieczytelne a do tego ten drugi wykres daje mylne wrażenie że łącznie otyłych jest 3/4 ludności (jak ktoś nieuważnie czyta)
Liczba zgonów w Polsce (źródło: tabela demo_magec w
bazie Eurostat) oraz miesięczna liczba zgonów w Polsce (źródło: tabela
demo_mmonth w bazie Eurostat)
Dane miesięczne
Wskaźniki dynamiki (indeksy) określają względną zmianę wartości szeregów czasowych (popularny procent zmiany), czyli \(y_t/y_0\). Jeżeli podstawą porównań jest okres poprzedni \(y_t/y_{t-1}\) to indeks nazywany jest łańcuchowym, jeżeli podstawa porównań jest stała, tj. \(y_t/y_{c}\), to indeks nazywany jest jednopodstawowy.
Indeks zwykle wyrażone są w procentach jeżeli \(y_t = 115\) a \(y_0 = 100\), to \(y_t/y_0 \cdot 100 =15\). Zjawisko ma o 15% wyższy poziom w roku \(t\).
Używamy średniej geometrycznej do obliczenia średniego tempa zmian zjawiska w czasie:
\[\bar y_g = \sqrt[n-1]{\frac{y_2}{y_1} \frac{y_3}{y_2} \cdots \frac{y_n}{y_{n-1}}} = \sqrt[n-1]{\frac{y_n}{y_1}} \]
Średnie tempo zmian liczby zgonów w Polsce w latach 2000–2024 wyniosło 0.435719, tj. przeciętnie w tym okresie zgony rosną o 0,4%. Wartość indeksu \(y_{2024}/y_{2000}\) wynosi 110.9983778%.
Trend liniowy jest opisany równaniem:
\[ y = \beta_0 + \beta_1 t + \epsilon \] gdzie: zmienna \(t\) to numer kolejnego okresu (np. \(t=1,\ldots,n\)) \(\epsilon\) oznacza składnik losowy.
Parametry \(\beta_0\) oraz \(\beta_1\) są szacowane metodą najmniejszych kwadratów. Ocena modelu: jak w przypadku modelu regresji liniowej: wielkość współczynnika determinacji + istotność parametru \(\beta_1\). Dla danych dotyczących liczby zgonów otrzymano następujące wyniki:
##
## Call:
## lm(formula = zgony ~ t, data = z2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -32023 -11450 -2498 2490 90381
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 345605.5 10713.3 32.260 < 0.0000000000000002 ***
## t 3796.9 720.7 5.269 0.000024 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25980 on 23 degrees of freedom
## Multiple R-squared: 0.5469, Adjusted R-squared: 0.5272
## F-statistic: 27.76 on 1 and 23 DF, p-value: 0.00002402
W latach 2000–2024 przeciętny roczny wzrost liczby zgonów wynosił około 3,8 tysiąca osób. Wielkość ta jest istotna statystycznie a wartość współczynnika determinacji wynosi 54%.
Przypatrując się wykresowi dostrzeżemy bez trudu, że obserwacje z lat 2020–22 mocno nie leżą na linii trendu i wiemy dlaczego. Takie zjawisko nazywa się uczenie zaburzeniem strukturalnym. Można poprawić model dodając do niego drugą sztuczną (dummy) zmienną, której wartości będą się równać 1 dla lat 2020–2022 oraz zero w pozostałych latach.
Taką zmienną nazywa się też często zmienną zero-jedynkową
\[ y = \beta_0 + \beta_1 t + \beta_2 \textrm{covid} + \epsilon \]
gdzie: \(\textrm{covid}=1\) w latach 2020–2022 oraz 0 w pozostałych
##
## Call:
## lm(formula = zgony ~ t + covid, data = z3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -35545 -3981 -1063 2472 37744
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 356997.5 5390.6 66.225 < 0.0000000000000002 ***
## t 2219.5 396.2 5.602 0.0000124230 ***
## covid 75946.6 8791.5 8.639 0.0000000161 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12680 on 22 degrees of freedom
## Multiple R-squared: 0.8968, Adjusted R-squared: 0.8875
## F-statistic: 95.62 on 2 and 22 DF, p-value: 0.00000000001409
Po uwzględnieniu efektu COVID, liczba zgonów w okresie 2000–2024 rosła średnio o ok. 2,2 tys. rocznie. W latach 2020–2022 liczba zgonów była przeciętnie wyższa o ok. 75 tys. rocznie w porównaniu do poziomu wynikającego z trendu.
Oba współczynniki są istotne statystycznie, a wartość współczynnika determinacji wynosi prawie 90% (poprzednio 54%).
Prosty model trendu dla danych miesięcznych będzie — z oczywistych względów — słabo dopasowany do danych.
##
## Call:
## lm(formula = zgony ~ t, data = z2m)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7153.5 -2311.3 -781.5 939.6 29093.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 29168.300 473.043 61.661 <0.0000000000000002 ***
## t 24.303 2.645 9.188 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4148 on 307 degrees of freedom
## Multiple R-squared: 0.2157, Adjusted R-squared: 0.2131
## F-statistic: 84.41 on 1 and 307 DF, p-value: < 0.00000000000000022
W latach 2000–2024 przeciętny miesięczny wzrost liczby zgonów wynosił około 24 osoby. Wielkość ta jest istotna statystycznie a wartość współczynnika determinacji wynosi zaledwie 21%.
Dodajmy zmienną covid:
##
## Call:
## lm(formula = zgony ~ t + covid, data = z3m)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7417.5 -2063.2 -561.7 1211.3 24323.0
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 29933.648 430.542 69.525 < 0.0000000000000002 ***
## t 14.506 2.602 5.576 0.0000000542 ***
## covid 6464.295 723.324 8.937 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3700 on 306 degrees of freedom
## Multiple R-squared: 0.378, Adjusted R-squared: 0.3739
## F-statistic: 92.98 on 2 and 306 DF, p-value: < 0.00000000000000022
Po uwzględnieniu efektu COVID, liczba zgonów w okresie 2000–2024 rosła średnio o ok. 15 osób miesięcznie. W latach 2020–2022 liczba zgonów była przeciętnie wyższa o ok. 6,5 tys. miesięcznie w porównaniu do poziomu wynikającego z trendu.
Efekt sezonowości może zostać dodany do równania w postaci \(k-1\) zmiennych sztucznych \(M_i\), z których każda przyjmuje wartość 1 jeżeli obserwacja pochodzi z \(i\)-tego miesiąca, a zero w pozostałych miesiącach. W ten sposób model oszacuje wpływ danego miesiąca na wielkość zmiennej \(y\).
##
## Call:
## lm(formula = zgony ~ t + covid + factor(month), data = z3m)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7598.0 -1202.1 -73.1 759.7 23827.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 34026.371 635.647 53.530 < 0.0000000000000002 ***
## t 15.137 2.036 7.434 0.000000000001147501 ***
## covid 6373.598 565.932 11.262 < 0.0000000000000002 ***
## factor(month)M02 -3836.137 802.721 -4.779 0.000002783737846158 ***
## factor(month)M03 -1550.390 802.729 -1.931 0.0544 .
## factor(month)M04 -4155.488 802.742 -5.177 0.000000418697423100 ***
## factor(month)M05 -5345.703 802.760 -6.659 0.000000000134455312 ***
## factor(month)M06 -7018.147 802.783 -8.742 < 0.0000000000000002 ***
## factor(month)M07 -6280.708 802.811 -7.823 0.000000000000092310 ***
## factor(month)M08 -6836.883 802.845 -8.516 0.000000000000000858 ***
## factor(month)M09 -7041.213 802.884 -8.770 < 0.0000000000000002 ***
## factor(month)M10 -3589.488 810.725 -4.428 0.000013439950307856 ***
## factor(month)M11 -3665.345 810.740 -4.521 0.000008923380100224 ***
## factor(month)M12 -662.323 810.760 -0.817 0.4146
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2894 on 295 degrees of freedom
## Multiple R-squared: 0.633, Adjusted R-squared: 0.6168
## F-statistic: 39.14 on 13 and 295 DF, p-value: < 0.00000000000000022
## # A tibble: 12 × 2
## month m
## <chr> <dbl>
## 1 M01 37048.
## 2 M02 33226.
## 3 M03 35527.
## 4 M04 32937.
## 5 M05 31762.
## 6 M06 30105.
## 7 M07 30858.
## 8 M08 30317.
## 9 M09 30127.
## 10 M10 33533.
## 11 M11 33472.
## 12 M12 36490.
Te sztuczne zmienne na wydruku noszą cokolwiek barokowe nazwy
factor(month)M02–factor(month)M012. Zmiennych
jest 11 ($k-1) a nie 12 i nie jest to błąd. Brakująca zmienna jest bazą
porównań, np. w lutym umierało przeciętnie około 3836 mniej niż w
styczniu. Podobnie interpretuje się inne
wspóczynniki.
Można też interpretować współczynniki względem średniego poziomu zmiennej \(y\) w roku. Wymaga to obliczenia wartości średniej wskaźników:
\[\bar M = M_2 + \cdots + M_{12}\]
teraz dla każdego wskaźnika \(M_1, \ldots, M_{12}\) należy wykonać \(S_i=M_i - \bar M\) (przypominamy, że \(M_1 = 0\)).