Słownik metodologiczny · Statystyka opisowa

Średnia ruchoma – jak wygładzić szereg czasowy i odsłonić trend?

Średnia ruchoma uśrednia kolejne okna obserwacji szeregu czasowego, by pokazać trend bez przypadkowych wahań. Pokazujemy wersję wyśrodkowaną i wsteczną, średnią 2×12 dla danych miesięcznych, przykład w R (zoo) i opis do pracy.

Strona główna / Słownik / Średnia ruchoma
W skrócie: Średnia ruchoma (m-MA) zastępuje każdą obserwację szeregu czasowego średnią z okna m sąsiednich wartości. Wygładza przypadkowe wahania i odsłania trend; okno równe długości sezonu (np. 2×12 dla danych miesięcznych) usuwa też sezonowość.

Co to jest średnia ruchoma?

Średnia ruchoma (średnia krocząca, ang. moving average, m-MA) zastępuje każdą obserwację szeregu czasowego średnią z okna m sąsiednich wartości. Okno przesuwa się o jeden okres, więc powstaje nowy, gładszy szereg. Hyndman i Athanasopoulos (2021) opisują ją jako podstawowy sposób szacowania składowej trendu: sąsiednie obserwacje mają zbliżone wartości, a uśrednienie usuwa część losowości.

Okno wyśrodkowane, wsteczne i ważone

  • Wyśrodkowana (m = 2k + 1): średnia z k okresów przed i po danym punkcie. Służy do opisu przeszłego trendu.
  • Wsteczna: bieżąca i m − 1 poprzednich wartości. Nie korzysta z przyszłości, ale przesuwa trend w czasie (opóźnienie).
  • Ważona, np. 2×12-MA: dla parzystego okresu sezonowości 13 wartości z wagami 1/24 na brzegach i 1/12 w środku. To średnia ważona, która dla danych miesięcznych usuwa wzór roczny (Hyndman i Athanasopoulos, 2021).

Przykład

Miesięczna liczba zgłoszeń do poradni przez 3 lata ma trend i sezonowość (dane symulowane). SD surowego szeregu wynosi 42.0, po 3-MA 36.1, a po 2×12-MA 19.1, bo zostaje sam trend: od 529.0 w 7. miesiącu do 585.8 w 30. Za tę gładkość płaci się utratą obserwacji: 2×12-MA nie ma wartości dla pierwszych i ostatnich 6 miesięcy (12 braków). W 7. miesiącu wyśrodkowana 3-MA daje 580.3, a wsteczna 560.0.

Jak opisać w pracy

Trend liczby zgłoszeń oszacowano wyśrodkowaną średnią ruchomą 2×12 (wagi 1/24 dla wartości skrajnych i 1/12 dla pozostałych), która usuwa wahania sezonowe. Trend wzrósł z 529.0 (lipiec pierwszego roku) do 585.8 zgłoszeń (czerwiec trzeciego roku).

Na co uważać

  • Średnia ruchoma to opis, nie test. Wygładzony szereg ma silną autokorelację; nie licz na nim zwykłych testów ani korelacji.
  • Nie myl z częścią MA w ARIMA, która modeluje błędy prognozy.
  • Zmianę po interwencji oceniaj modelem, nie wygładzonym wykresem; zobacz regresję segmentową i przerwany szereg czasowy. Jebb i in. (2015) omawiają też opis trendu, sezonowości i prognozowanie.
Przykład reprodukowalny

Średnia ruchoma w R

Kod symuluje 36 miesięcy z trendem i sezonowością, liczy 3-MA wyśrodkowaną i wsteczną oraz wyśrodkowaną 2×12-MA, a następnie porównuje odchylenia standardowe szeregów.

Wygładzanie szeregu miesięcznego

Dane wejściowe: miesięczna liczba zgłoszeń do poradni przez 3 lata (dane symulowane, set.seed(3720)).

Co odczytać: wybrane wiersze z kolumnami y, ma3, ma3_wstecz i ma2x12, odchylenia standardowe oraz liczbę braków na brzegach.

R
suppressPackageStartupMessages(library(zoo))
set.seed(3720)
mies <- 1:36                                                   # 3 lata danych miesięcznych
sezon <- 40 * sin(2 * pi * (mies - 4) / 12)                    # wzór roczny
y <- round(500 + 3 * mies + sezon + rnorm(36, 0, 25))          # zgłoszenia do poradni (dane symulowane)
ma3 <- rollmean(y, k = 3, fill = NA, align = "center")         # 3-MA wyśrodkowana
ma3_wstecz <- rollmean(y, k = 3, fill = NA, align = "right")   # 3-MA „wsteczna” (bieżący + 2 poprzednie)
w <- c(0.5, rep(1, 11), 0.5) / 12                              # wagi 2×12-MA (wyśrodkowana dla danych miesięcznych)
ma2x12 <- rollapply(y, width = 13, FUN = function(z) sum(w * z), fill = NA, align = "center")
round(cbind(mies, y, ma3, ma3_wstecz, ma2x12)[c(1:3, 7, 8, 12, 13, 30, 36), ], 1)
round(c(sd_y = sd(y), sd_ma3 = sd(ma3, na.rm = TRUE), sd_2x12 = sd(ma2x12, na.rm = TRUE)), 1)
sum(is.na(ma2x12))                                             # utracone obserwacje na brzegach
Wynik w R
      mies   y   ma3 ma3_wstecz ma2x12
 [1,]    1 479    NA         NA     NA
 [2,]    2 525 490.0         NA     NA
 [3,]    3 466 504.3      490.0     NA
 [4,]    7 590 580.3      560.0  529.0
 [5,]    8 590 579.7      580.3  528.0
 [6,]   12 511 501.7      510.3  537.7
 [7,]   13 472 496.7      501.7  539.9
 [8,]   30 584 601.0      590.0  585.8
 [9,]   36 580    NA      591.0     NA
   sd_y  sd_ma3 sd_2x12 
   42.0    36.1    19.1 
[1] 12

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet zoo). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. zoo (wersja 1.8.15): Zeileis, A., & Grothendieck, G. (2005). zoo: S3 infrastructure for regular and irregular time series. Journal of Statistical Software, 14(6), 1–27. https://doi.org/10.18637/jss.v014.i06

Najczęstsze pytania

Jak policzyć średnią ruchomą w R?

zoo::rollmean(y, k = 3, fill = NA) daje średnią wyśrodkowaną, a align = "right" wsteczną. Średnią ważoną, np. 2×12, policzysz przez rollapply() z wektorem wag albo stats::filter().

Jaką długość okna średniej ruchomej wybrać?

Przy sezonowości okno równe długości sezonu: 2×12 dla danych miesięcznych, 2×4 dla kwartalnych, 7 dla dziennych z rytmem tygodniowym. Bez sezonowości krótsze okno zachowuje więcej szczegółów, dłuższe mocniej wygładza.

Czym średnia ruchoma różni się od części MA w modelu ARIMA?

Średnia ruchoma wygładza obserwowane wartości, by opisać przeszły trend. Część MA w ARIMA to model zależności od wcześniejszych błędów prognozy, służący do prognozowania. Mimo nazwy to inne narzędzia.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and practice (3rd ed.). OTexts. https://otexts.com/fpp3/ ● Otwarty dostęp: pełny tekst
  2. Jebb, A. T., Tay, L., Wang, W., & Huang, Q. (2015). Time series analysis for psychological research: Examining and forecasting change. Frontiers in Psychology, 6, Article 727. https://doi.org/10.3389/fpsyg.2015.00727 ● Otwarty dostęp

Cytowania BibTeX

@book{hyndman2021forecasting, author={Hyndman, Rob J. and Athanasopoulos, George}, title={{Forecasting: Principles and practice (3rd ed.)}}, year={2021}, publisher={OTexts}, url={https://otexts.com/fpp3/}}
@article{jebb2015time, author={Jebb, Andrew T. and Tay, Louis and Wang, Wei and Huang, Qiming}, title={{Time series analysis for psychological research: Examining and forecasting change}}, journal={Frontiers in Psychology}, year={2015}, volume={6}, eid={727}, doi={10.3389/fpsyg.2015.00727}}
R