Słownik metodologiczny · Regresja

ARIMA – jak dobrać model (p, d, q) i sprawdzić jego reszty?

ARIMA opisuje szereg czasowy przez jego własną przeszłość: wcześniejsze wartości, wcześniejsze błędy i różnicowanie. Pokazujemy, co znaczą p, d i q, jak dobrać model w R, sprawdzić reszty i podać prognozę.

W skrócie: ARIMA(p, d, q) łączy autoregresję rzędu p, d-krotne różnicowanie i średnią ruchomą rzędu q. Rząd modelu dobierz po sprawdzeniu stacjonarności i według kryterium informacyjnego, a potem obowiązkowo sprawdź, czy reszty są szumem białym.

Co to jest ARIMA?

ARIMA (ang. autoregressive integrated moving average) to model, który opisuje szereg czasowy przez jego własną przeszłość. Zapis ARIMA(p, d, q) ma trzy części:

  • AR(p) – bieżąca wartość zależy od p wcześniejszych wartości;
  • I(d) – szereg różnicuje się d razy, aby był stacjonarny;
  • MA(q) – bieżąca wartość zależy od q wcześniejszych błędów (wstrząsów).

W psychologii ARIMA służy głównie do opisu dynamiki i prognozy, np. liczby zgłoszeń do poradni.

Jak dobrać model?

  1. Obejrzyj wykres i ustal d: ile różnicowań potrzeba do stacjonarności.
  2. Na podstawie ACF i PACF zróżnicowanego szeregu wskaż wstępne p i q.
  3. Porównaj kilka modeli kryterium informacyjnym (w R domyślnie AICc). Krokowy algorytm doboru opisany przez Hyndmana i Khandakar (2008), funkcja auto.arima(), robi to automatycznie, także dla danych z sezonowością.
  4. Sprawdź reszty. Box i Pierce (1970) pokazali, że w dobrze dobranym modelu reszty powinny być szumem białym, a test Ljunga–Boxa (Ljung i Box, 1978) sprawdza to łącznie dla wielu opóźnień.

Przykład

Tygodniowa liczba wizyt w internetowym serwisie wsparcia psychologicznego wzrosła w ciągu 120 tygodni z 300 do 357 (dane symulowane). Testy stacjonarności wskazały jedno różnicowanie. Według AICc najlepszy był model ARIMA(1,1,0): φ1 = 0.43 (SE = 0.08), σ² = 32.99, AICc = 757.07. Zmiana z tygodnia na tydzień zależała więc od zmiany poprzedniej. Reszty nie odbiegały od szumu białego, Q(9) = 9.94, p = .355 (10 opóźnień minus 1 parametr). Prognoza na następny tydzień to 360.9 wizyty, 95% PI [349.6, 372.1], a na czwarty tydzień 363.5, 95% PI [330.7, 396.3].

Jak opisać w pracy

Szereg 120 tygodniowych liczb wizyt modelowano modelem ARIMA. Rząd modelu wybrano według AICc (funkcja auto.arima w pakiecie forecast). Najlepszy był model ARIMA(1,1,0) z φ1 = 0.43 (SE = 0.08). Reszty nie wykazywały autokorelacji, test Ljunga–Boxa Q(9) = 9.94, p = .355. Prognoza na kolejny tydzień wyniosła 360.9 wizyty, 95% PI [349.6, 372.1].

Na co uważać

  • Automatyczny wybór to nie koniec. Zawsze obejrzyj reszty i sprawdź, czy model ma sens merytoryczny.
  • Przedział prognozy szybko się poszerza. W przykładzie po czterech tygodniach był prawie trzy razy szerszy niż po jednym.
  • Zmiana po interwencji to inny problem. Do oceny efektu programu użyj modelu przerwanego szeregu czasowego.

Pełną analizę z sezonowym modelem ARIMA pokazuje wpis Szeregi czasowe w praktyce.

Przykład reprodukowalny

ARIMA w R

Kod symuluje szereg tygodniowy, sprawdza liczbę potrzebnych różnicowań, dobiera model funkcją auto.arima(), testuje reszty i liczy prognozę na cztery tygodnie.

Dobór modelu, diagnostyka reszt i prognoza

Dane wejściowe: 120 tygodniowych liczb wizyt w serwisie wsparcia z procesu ARIMA(1,1,0) (dane symulowane, set.seed(2430)).

Co odczytać: liczbę różnicowań z ndiffs(), wybrany rząd modelu, współczynnik AR z SE, AICc, test Ljunga–Boxa reszt i prognozę z 95% przedziałem predykcji.

R
suppressPackageStartupMessages(library(forecast))
set.seed(2430)
y <- 300 + arima.sim(list(order = c(1, 1, 0), ar = 0.5), n = 119, sd = 6)   # 120 tygodni
wizyty <- ts(round(y), frequency = 1)       # tygodniowa liczba wizyt w serwisie wsparcia psychologicznego
c(pierwszy = wizyty[1], ostatni = wizyty[120])   # pierwszy i ostatni tydzień
ndiffs(wizyty)                              # ile różnicowań sugerują testy stacjonarności
m <- auto.arima(wizyty, seasonal = FALSE)   # wybór p, d, q według AICc
m
Box.test(residuals(m), lag = 10, type = "Ljung-Box", fitdf = 1)   # reszty: szum biały?
p <- forecast(m, h = 4, level = 95)         # prognoza na 4 tygodnie
round(data.frame(prognoza = p$mean, dolna = p$lower[, 1], gorna = p$upper[, 1]), 1)
Wynik w R
pierwszy  ostatni 
     300      357 
[1] 1
Series: wizyty 
ARIMA(1,1,0) 

Coefficients:
         ar1
      0.4286
s.e.  0.0839

sigma^2 = 32.99:  log likelihood = -376.48
AIC=756.97   AICc=757.07   BIC=762.53

	Box-Ljung test

data:  residuals(m)
X-squared = 9.9406, df = 9, p-value = 0.3553

  prognoza dolna gorna
1    360.9 349.6 372.1
2    362.5 342.9 382.1
3    363.2 336.5 390.0
4    363.5 330.7 396.3

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet forecast).

  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. forecast (wersja 9.0.2): Hyndman, R., Athanasopoulos, G., Bergmeir, C., Caceres, G., Chhay, L., O’Hara-Wild, M., Petropoulos, F., Razbash, S., Wang, E., & Yasmeen, F. (2026). forecast: Forecasting functions for time series and linear models (R package version 9.0.2) [Computer software]. https://doi.org/10.32614/CRAN.package.forecast

Najczęstsze pytania

Co oznaczają liczby w zapisie ARIMA(1,1,0)?

Pierwsza liczba to rząd autoregresji (1 wcześniejsza wartość), druga – liczba różnicowań (1), trzecia – rząd średniej ruchomej (0, czyli bez składnika MA).

Ile pomiarów potrzeba do modelu ARIMA?

Nie ma jednej granicy. Przy kilkudziesięciu pomiarach oszacowania autokorelacji są niepewne, a szeregi z sezonowością wymagają kilku pełnych cykli, więc im dłuższy szereg, tym bezpieczniej.

Czym ARIMA różni się od regresji z trendem?

Regresja z trendem wyjaśnia wynik czasem i predyktorami. ARIMA opisuje dynamikę samego szeregu i służy głównie do prognozy. Można je łączyć, dodając predyktory do modelu z błędem ARIMA.

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. Box, G. E. P., & Pierce, D. A. (1970). Distribution of residual autocorrelations in autoregressive-integrated moving average time series models. Journal of the American Statistical Association, 65(332), 1509–1526. https://doi.org/10.1080/01621459.1970.10481180
  2. Hyndman, R. J., & Khandakar, Y. (2008). Automatic time series forecasting: The forecast package for R. Journal of Statistical Software, 27(3). https://doi.org/10.18637/jss.v027.i03 ● Otwarty dostęp
  3. Ljung, G. M., & Box, G. E. P. (1978). On a measure of lack of fit in time series models. Biometrika, 65(2), 297–303. https://doi.org/10.1093/biomet/65.2.297

Cytowania BibTeX

@article{box1970distribution, author={Box, George E. P. and Pierce, David A.}, title={{Distribution of residual autocorrelations in autoregressive-integrated moving average time series models}}, journal={Journal of the American Statistical Association}, year={1970}, volume={65}, number={332}, pages={1509--1526}, doi={10.1080/01621459.1970.10481180}}
@article{hyndman2008automatic, author={Hyndman, Rob J. and Khandakar, Yeasmin}, title={{Automatic time series forecasting: The forecast package for R}}, journal={Journal of Statistical Software}, year={2008}, volume={27}, number={3}, doi={10.18637/jss.v027.i03}}
@article{ljung1978measure, author={Ljung, Greta M. and Box, George E. P.}, title={{On a measure of lack of fit in time series models}}, journal={Biometrika}, year={1978}, volume={65}, number={2}, pages={297--303}, doi={10.1093/biomet/65.2.297}}
R