Szeregi czasowe — stacjonarność, procesy ARIMA i prognozowanie
Pełny wykład analizy szeregów czasowych: stacjonarność, proces AR(1) z dowodami momentów i funkcji autokorelacji, proces MA(1), błądzenie losowe i liniowy wzrost wariancji, test pierwiastka jednostkowego Dickeya-Fullera, regresja pozorna Grangera-Newbolda, kointegracja i model korekty błędem, optymalna prognoza AR(1) — z wykresami w skali szarości (1D, 2D, 3D), szczegółowo policzonymi przykładami, kodem R i Python oraz bibliografią z aktywnymi DOI.
Szeregi czasowe rządzą się odmienną logiką niż dane przekrojowe: zamiast wielu niezależnych jednostek obserwujemy jedną jednostkę w wielu chwilach, a kolejne obserwacje są ze sobą powiązane. Rozważymy formalny aparat tej zależności — stacjonarność, procesy autoregresyjne i średniej ruchomej, pierwiastek jednostkowy i kointegrację — wyprowadzając kluczowe własności i ilustrując je rachunkiem oraz symulacją.
Specyfika danych czasowych
Obserwujemy uporządkowany ciąg $y_1,y_2,\dots,y_T$, w którym $y_t$ zależy zwykle od przeszłości. Zignorowanie tej zależności — potraktowanie szeregu jak próby niezależnej — prowadzi do błędnych błędów standardowych (autokorelacja) i do pozornych zależności między niepowiązanymi szeregami. Punktem wyjścia całej teorii jest pojęcie stacjonarności.
Stacjonarność
Szereg $\{y_t\}$ jest stacjonarny w szerszym sensie (kowariancyjnie), gdy jego pierwsze dwa momenty nie zależą od czasu:
$$ \mathbb{E}[y_t]=\mu,\qquad \mathrm{Var}(y_t)=\gamma_0,\qquad \mathrm{Cov}(y_t,y_{t-k})=\gamma_k, $$przy czym autokowariancja $\gamma_k$ zależy wyłącznie od opóźnienia $k$, a nie od momentu $t$. Funkcję $\rho_k=\gamma_k/\gamma_0$ nazywamy funkcją autokorelacji (ACF).
Stacjonarność jest warunkiem, przy którym estymacja i wnioskowanie mają sens: skoro własności rozkładu są stałe, średnia z próby zbiega do $\mu$, a autokorelacje da się oszacować. Wyróżniamy dwa typy niestacjonarności: trend deterministyczny ($y_t=\alpha+\beta t+\varepsilon_t$, usuwany regresją względem czasu) oraz trend stochastyczny — błądzenie losowe $y_t=y_{t-1}+\varepsilon_t$, usuwane różnicowaniem. Większość makroekonomicznych szeregów należy do drugiego typu (procesy zintegrowane rzędu pierwszego, $I(1)$).
Proces autoregresyjny AR(1)
Proces autoregresyjny pierwszego rzędu:
$$ y_t=\phi\,y_{t-1}+\varepsilon_t,\qquad \varepsilon_t\ \text{biały szum}:\ \mathbb{E}[\varepsilon_t]=0,\ \mathrm{Var}(\varepsilon_t)=\sigma^2,\ \mathrm{Cov}(\varepsilon_t,\varepsilon_s)=0\ (t\neq s). $$Proces AR(1) jest stacjonarny wtedy i tylko wtedy, gdy $|\phi|<1$. Wówczas:
$$ \mathbb{E}[y_t]=0,\qquad \gamma_0=\mathrm{Var}(y_t)=\frac{\sigma^2}{1-\phi^2},\qquad \gamma_k=\phi^{|k|}\frac{\sigma^2}{1-\phi^2},\qquad \rho_k=\phi^{|k|}. $$Funkcja autokorelacji zanika geometrycznie z opóźnieniem.
- Podstawianie wsteczne. Rozwijamy rekurencję: $y_t=\phi y_{t-1}+\varepsilon_t=\phi(\phi y_{t-2}+\varepsilon_{t-1})+\varepsilon_t=\dots$. Po $m$ krokach $y_t=\phi^m y_{t-m}+\sum_{j=0}^{m-1}\phi^j\varepsilon_{t-j}$.
- Granica. Gdy $|\phi|<1$, człon $\phi^m y_{t-m}\to0$ (w sensie średniokwadratowym), więc otrzymujemy reprezentację średniej ruchomej nieskończonego rzędu: $$ y_t=\sum_{j=0}^{\infty}\phi^j\varepsilon_{t-j}. $$ Szereg jest zbieżny, bo $\sum_j\phi^{2j}=\tfrac{1}{1-\phi^2}<\infty$. Dla $|\phi|\ge1$ nie istnieje stacjonarne rozwiązanie.
- Wartość oczekiwana. $\mathbb{E}[y_t]=\sum_{j=0}^{\infty}\phi^j\mathbb{E}[\varepsilon_{t-j}]=0$.
- Wariancja. Z niezależności (nieskorelowania) białego szumu i wzoru na sumę szeregu geometrycznego: $$ \gamma_0=\mathrm{Var}(y_t)=\sum_{j=0}^{\infty}\phi^{2j}\sigma^2=\frac{\sigma^2}{1-\phi^2}. $$
- Rekurencja autokowariancji. Mnożymy równanie AR(1) przez $y_{t-k}$ ($k\ge1$) i bierzemy wartość oczekiwaną: $\mathbb{E}[y_t y_{t-k}]=\phi\,\mathbb{E}[y_{t-1}y_{t-k}]+\mathbb{E}[\varepsilon_t y_{t-k}]$. Ponieważ $y_{t-k}$ zależy tylko od $\varepsilon_{t-k},\varepsilon_{t-k-1},\dots$, a $\varepsilon_t$ jest od nich niezależne, ostatni składnik to zero. Stąd $\gamma_k=\phi\,\gamma_{k-1}$.
- Rozwiązanie rekurencji. Z $\gamma_k=\phi\gamma_{k-1}$ i warunku początkowego $\gamma_0=\tfrac{\sigma^2}{1-\phi^2}$ otrzymujemy $\gamma_k=\phi^k\gamma_0=\phi^k\tfrac{\sigma^2}{1-\phi^2}$ dla $k\ge0$; przez symetrię $\gamma_{-k}=\gamma_k$, więc ogólnie $\gamma_k=\phi^{|k|}\tfrac{\sigma^2}{1-\phi^2}$.
- Funkcja autokorelacji. $\rho_k=\gamma_k/\gamma_0=\phi^{|k|}$ — zanik geometryczny, co kończy dowód.
Niech $\phi=0{,}7$, $\sigma^2=1$. Z twierdzenia:
$$ \gamma_0=\frac{1}{1-0{,}49}=1{,}9608,\qquad \rho_k=0{,}7^{\,k}. $$Kolejno: $\rho_1=0{,}700$, $\rho_2=0{,}49$, $\rho_3=0{,}343$, $\rho_4=0{,}2401$. Autokowariancje: $\gamma_1=0{,}7\cdot1{,}9608=1{,}3725$, $\gamma_2=0{,}49\cdot1{,}9608=0{,}9608$. Korelacja maleje o stały czynnik $0{,}7$ na każdy krok opóźnienia.
Porównajmy „czas półtrwania" autokorelacji, czyli opóźnienie $k^\ast$, przy którym $\rho_k$ spada poniżej $0{,}5$. Z $\phi^{k^\ast}=0{,}5$ wynika $k^\ast=\dfrac{\ln 0{,}5}{\ln\phi}$:
- $\phi=0{,}3$: $k^\ast=\dfrac{-0{,}693}{-1{,}204}=0{,}58$ — korelacja znika niemal natychmiast;
- $\phi=0{,}7$: $k^\ast=\dfrac{-0{,}693}{-0{,}357}=1{,}94$ — po dwóch okresach;
- $\phi=0{,}9$: $k^\ast=\dfrac{-0{,}693}{-0{,}105}=6{,}58$ — po blisko siedmiu okresach.
Im bliżej $\phi=1$, tym wolniejszy zanik, a w granicy ($\phi=1$) pamięć staje się nieskończona — to błądzenie losowe.
Rozważając całą rodzinę procesów AR(1), autokorelację można przedstawić jako powierzchnię nad płaszczyzną wyznaczoną przez parametr $\phi$ i opóźnienie $k$.
Proces średniej ruchomej MA(1)
Dla $y_t=\varepsilon_t+\theta\varepsilon_{t-1}$ (biały szum $\varepsilon$):
$$ \mathbb{E}[y_t]=0,\quad \gamma_0=(1+\theta^2)\sigma^2,\quad \gamma_1=\theta\sigma^2,\quad \gamma_k=0\ (k\ge2),\quad \rho_1=\frac{\theta}{1+\theta^2},\quad \rho_k=0\ (k\ge2). $$ACF urywa się po opóźnieniu $1$ — przeciwnie niż w AR(1).
- Wartość oczekiwana. $\mathbb{E}[y_t]=\mathbb{E}[\varepsilon_t]+\theta\mathbb{E}[\varepsilon_{t-1}]=0$.
- Wariancja. Z nieskorelowania $\varepsilon_t$ i $\varepsilon_{t-1}$: $\gamma_0=\mathrm{Var}(\varepsilon_t+\theta\varepsilon_{t-1})=\sigma^2+\theta^2\sigma^2=(1+\theta^2)\sigma^2$.
- Autokowariancja rzędu 1. $\gamma_1=\mathbb{E}[(\varepsilon_t+\theta\varepsilon_{t-1})(\varepsilon_{t-1}+\theta\varepsilon_{t-2})]$. Rozwijając i wykorzystując $\mathbb{E}[\varepsilon_i\varepsilon_j]=0$ dla $i\neq j$ oraz $\mathbb{E}[\varepsilon_{t-1}^2]=\sigma^2$, przeżywa jedynie wyraz $\theta\,\mathbb{E}[\varepsilon_{t-1}^2]=\theta\sigma^2$. Zatem $\gamma_1=\theta\sigma^2$.
- Autokowariancje wyższych rzędów. Dla $k\ge2$ iloczyn $y_t y_{t-k}$ nie zawiera wspólnego składnika szumu (indeksy $\{t,t-1\}$ i $\{t-k,t-k-1\}$ są rozłączne), więc $\gamma_k=0$.
- Funkcja autokorelacji. $\rho_1=\gamma_1/\gamma_0=\dfrac{\theta}{1+\theta^2}$, a $\rho_k=0$ dla $k\ge2$ — ACF urywa się.
Niech $\theta=0{,}8$, $\sigma^2=1$. Wtedy $\gamma_0=1+0{,}64=1{,}64$, $\gamma_1=0{,}8$, a
$$ \rho_1=\frac{0{,}8}{1{,}64}=0{,}488,\qquad \rho_2=\rho_3=\dots=0. $$Pojedynczy słupek ACF na opóźnieniu $1$, a dalej zera, to sygnatura MA(1).
| Model | ACF | PACF |
|---|---|---|
| AR($p$) | zanika geometrycznie | urywa się po opóźnieniu $p$ |
| MA($q$) | urywa się po opóźnieniu $q$ | zanika geometrycznie |
| ARMA($p,q$) | zanika | zanika |
Błądzenie losowe i wzrost wariancji
Dla błądzenia losowego $y_t=y_{t-1}+\varepsilon_t$ z $y_0=0$:
$$ \mathbb{E}[y_t]=0,\qquad \mathrm{Var}(y_t)=t\sigma^2,\qquad \mathrm{Cov}(y_t,y_s)=\min(t,s)\,\sigma^2. $$Wariancja rośnie liniowo z czasem, więc proces jest niestacjonarny; pierwsza różnica $\Delta y_t=\varepsilon_t$ jest już białym szumem.
- Suma szoków. Iterując $y_t=y_{t-1}+\varepsilon_t$ od $y_0=0$: $y_t=\sum_{j=1}^{t}\varepsilon_j$.
- Wartość oczekiwana. $\mathbb{E}[y_t]=\sum_{j=1}^{t}\mathbb{E}[\varepsilon_j]=0$.
- Wariancja. Z nieskorelowania szoków $\mathrm{Var}(y_t)=\sum_{j=1}^{t}\mathrm{Var}(\varepsilon_j)=t\sigma^2$ — rośnie bez ograniczenia, co wyklucza stacjonarność (warunek stałej wariancji złamany).
- Kowariancja. Dla $s\le t$: $\mathrm{Cov}(y_t,y_s)=\mathrm{Cov}\!\big(\sum_{j=1}^{t}\varepsilon_j,\sum_{i=1}^{s}\varepsilon_i\big)=\sum_{i=1}^{s}\mathrm{Var}(\varepsilon_i)=s\sigma^2=\min(t,s)\sigma^2$ — zależy od $t$ i $s$ osobno, nie tylko od ich różnicy.
- Różnicowanie przywraca stacjonarność. $\Delta y_t=y_t-y_{t-1}=\varepsilon_t$ jest białym szumem, więc błądzenie losowe jest procesem zintegrowanym rzędu pierwszego, $I(1)$.
Test pierwiastka jednostkowego (Dickey-Fuller)
Aby rozstrzygnąć, czy szereg jest $I(1)$, testujemy obecność pierwiastka jednostkowego. Zapisując AR(1) w postaci przyrostowej, $\Delta y_t=(\phi-1)y_{t-1}+\varepsilon_t=\rho\,y_{t-1}+\varepsilon_t$, hipoteza $\phi=1$ staje się $\rho=0$.
Dlaczego nie wolno użyć zwykłych tablic t.
Pod hipotezą zerową regresor $y_{t-1}$ jest błądzeniem losowym o wariancji rosnącej z czasem, więc standardowa teoria asymptotyczna nie obowiązuje. Użycie wartości krytycznej $-1{,}96$ zamiast $-2{,}89$ prowadziłoby do zawyżonego odsetka fałszywych odrzuceń pierwiastka jednostkowego. Ponadto test ADF ma słabą moc w małych próbach — bywa uzupełniany testem KPSS (o odwrotnej hipotezie zerowej).
Symulujemy dwa szeregi po $T=80$ obserwacji (ten sam strumień szoków) i estymujemy regresję $\Delta y_t=\alpha+\rho y_{t-1}+\varepsilon_t$.
- Błądzenie losowe ($y_t=y_{t-1}+\varepsilon_t$): $\hat\rho=-0{,}023$, statystyka $DF=-0{,}66$. Ponieważ $-0{,}66>-2{,}89$, nie odrzucamy $H_0$ — test poprawnie rozpoznaje pierwiastek jednostkowy.
- Stacjonarny AR(1) ($\phi=0{,}5$): $\hat\rho=-0{,}499$ (bliskie $\phi-1=-0{,}5$), statystyka $DF=-5{,}02$. Ponieważ $-5{,}02<-2{,}89$, odrzucamy $H_0$ — szereg jest stacjonarny.
Ta sama statystyka, dwa różne werdykty: kluczowe jest porównanie z tablicą Dickeya-Fullera, nie Studenta.
Regresja pozorna
Generujemy niezależnie $x_t=\sum_{j\le t}u_j$ i $y_t=\sum_{j\le t}v_j$ ($u,v$ niezależne białe szumy, $n=100$) i regresujemy $y$ na $x$:
$$ \hat\beta_1=-0{,}615,\qquad R^2=0{,}95,\qquad |t|=44{,}0. $$Statystyka $t$ czterdziestaczterokrotnie przekracza wartość krytyczną $1{,}98$, pozornie wskazując na silną zależność, której z konstrukcji nie ma. Właściwym postępowaniem jest analiza przyrostów — stacjonarnych z definicji — albo uprzednie zbadanie kointegracji.
Kointegracja i model korekty błędem
Niekiedy dwa szeregi $I(1)$ są jednak realnie powiązane: istnieje ich kombinacja liniowa będąca procesem stacjonarnym. Mówimy wtedy o kointegracji (Engle i Granger, 1987).
Szeregi $y_t,x_t\sim I(1)$ są skointegrowane, jeśli istnieje $\beta$ takie, że reszta równowagi
$$ z_t=y_t-\beta x_t\sim I(0) $$jest stacjonarna. Wektor $(1,-\beta)$ to wektor kointegrujący; $z_t$ mierzy odchylenie od długookresowej równowagi.
Procedura Engle’a-Grangera jest dwustopniowa: w pierwszym kroku estymuje się regresję $y_t=\alpha+\beta x_t+z_t$ i uzyskuje reszty $\hat z_t$; w drugim testem ADF weryfikuje się stacjonarność $\hat z_t$ — jeśli reszty okazują się stacjonarne, szeregi uznaje się za skointegrowane. Wówczas dynamikę krótko- i długookresową łączy model korekty błędem (ECM):
$$ \Delta y_t=\alpha+\gamma\,\hat z_{t-1}+\sum_j\delta_j\Delta x_{t-j}+\varepsilon_t,\qquad \gamma<0, $$gdzie $\hat z_{t-1}$ to zeszłookresowe odchylenie od równowagi, a $|\gamma|$ — tempo powrotu do niej. Kointegracja jest jedynym przypadkiem, w którym regresja na poziomach szeregów $I(1)$ jest uprawniona. Odróżnienie kointegracji od regresji pozornej wymaga przeprowadzenia testu stacjonarności na resztach równania kointegrującego.
Prognozowanie
Prognozą o minimalnym błędzie średniokwadratowym jest warunkowa wartość oczekiwana. Dla AR(1) z $|\phi|<1$:
$$ \hat y_{T+h\mid T}=\phi^{h}y_T,\qquad \mathrm{Var}(\text{błędu})=\sigma^2\frac{1-\phi^{2h}}{1-\phi^2}. $$Prognoza wygasa geometrycznie do średniej ($0$), a wariancja błędu rośnie do wariancji bezwarunkowej $\sigma^2/(1-\phi^2)$.
- Kryterium. Prognoza minimalizująca $\mathbb{E}[(y_{T+h}-g)^2\mid\mathcal{F}_T]$ to warunkowa wartość oczekiwana $g=\mathbb{E}[y_{T+h}\mid\mathcal{F}_T]$, gdzie $\mathcal{F}_T$ to informacja do chwili $T$.
- Rozwinięcie procesu w przód. Iterując AR(1): $y_{T+h}=\phi^h y_T+\sum_{j=0}^{h-1}\phi^j\varepsilon_{T+h-j}$.
- Warunkowa wartość oczekiwana. Składniki $\varepsilon_{T+1},\dots,\varepsilon_{T+h}$ są przyszłe względem $\mathcal{F}_T$, więc ich warunkowa średnia to zero. Stąd $\hat y_{T+h\mid T}=\mathbb{E}[y_{T+h}\mid\mathcal{F}_T]=\phi^h y_T$.
- Błąd prognozy. $e_{T+h}=y_{T+h}-\hat y_{T+h\mid T}=\sum_{j=0}^{h-1}\phi^j\varepsilon_{T+h-j}$ — suma przyszłych, nieskorelowanych szoków.
- Wariancja błędu. $\mathrm{Var}(e_{T+h})=\sum_{j=0}^{h-1}\phi^{2j}\sigma^2=\sigma^2\dfrac{1-\phi^{2h}}{1-\phi^2}$ (suma skończonego szeregu geometrycznego).
- Granica. Gdy $h\to\infty$, $\phi^h\to0$, więc prognoza zbiega do średniej $0$, a wariancja błędu do $\sigma^2/(1-\phi^2)=\gamma_0$ — niepewność prognozy nie przekracza zmienności bezwarunkowej procesu.
Niech $\phi=0{,}7$, $\sigma^2=1$, ostatnia obserwacja $y_T=2$. Prognozy i pasy $\pm1{,}96\sqrt{\mathrm{Var}}$:
| $h$ | $\hat y_{T+h}=0{,}7^{h}\cdot2$ | $\mathrm{Var}$ błędu | pas |
|---|---|---|---|
| 1 | $1{,}400$ | $1{,}000$ | $\pm1{,}96$ |
| 2 | $0{,}980$ | $1{,}490$ | $\pm2{,}39$ |
| 3 | $0{,}686$ | $1{,}730$ | $\pm2{,}58$ |
| 4 | $0{,}480$ | $1{,}848$ | $\pm2{,}66$ |
| 5 | $0{,}336$ | $1{,}905$ | $\pm2{,}71$ |
Prognoza punktowa szybko wygasa do średniej, a pas zbiega do $\pm1{,}96\sqrt{1{,}9608}=\pm2{,}74$ — szerokości wynikającej z bezwarunkowej wariancji procesu.
Jakość prognoz weryfikuje się na próbie testowej za pomocą miar błędu: $\mathrm{MAE}=\tfrac1h\sum|y_t-\hat y_t|$, $\mathrm{RMSE}=\sqrt{\tfrac1h\sum(y_t-\hat y_t)^2}$ oraz $\mathrm{MAPE}=\tfrac{100}{h}\sum|\tfrac{y_t-\hat y_t}{y_t}|$. Modelu nie wolno oceniać na tych samych danych, na których go estymowano — prowadziłoby to do nadmiernego dopasowania i zawyżonej oceny jego rzeczywistych zdolności predykcyjnych.
Podsumowanie
- Stacjonarność: stała średnia, wariancja i autokowariancja zależna tylko od opóźnienia — warunek sensownej estymacji.
- AR(1): $\rho_k=\phi^{|k|}$ (zanik geometryczny), $\gamma_0=\sigma^2/(1-\phi^2)$, stacjonarny dla $|\phi|<1$.
- MA(1): ACF urywa się po opóźnieniu $1$; $|\rho_1|\le\tfrac12$.
- Błądzenie losowe: $\mathrm{Var}(y_t)=t\sigma^2$ — niestacjonarne, $I(1)$, leczone różnicowaniem.
- Pierwiastek jednostkowy: test Dickeya-Fullera z niestandardowym rozkładem (krytyczne $\approx-2{,}89$).
- Regresja pozorna: poziomy szeregów $I(1)$ dają fałszywe $R^2$ i $t$; uprawniona tylko przy kointegracji (ECM).
- Prognoza AR(1): $\hat y_{T+h}=\phi^h y_T$, wariancja błędu $\to\gamma_0$.
Bibliografia
- Box, G. E. P., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time Series Analysis: Forecasting and Control (5th ed.). Wiley.
- Dickey, D. A., & Fuller, W. A. (1979). Distribution of the Estimators for Autoregressive Time Series with a Unit Root. Journal of the American Statistical Association, 74(366), 427–431. https://doi.org/10.1080/01621459.1979.10482531
- Engle, R. F., & Granger, C. W. J. (1987). Co-integration and Error Correction: Representation, Estimation, and Testing. Econometrica, 55(2), 251–276. https://doi.org/10.2307/1913236
- Granger, C. W. J., & Newbold, P. (1974). Spurious Regressions in Econometrics. Journal of Econometrics, 2(2), 111–120. https://doi.org/10.1016/0304-4076(74)90034-7
- Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press.
- Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and Practice (3rd ed.). OTexts. https://otexts.com/fpp3/ (otwarty dostęp)
- Kufel, T. (2013). Ekonometria. Rozwiązywanie problemów z wykorzystaniem programu GRETL. Wydawnictwo Naukowe PWN.
- Polskie zasoby otwarte: cyfrowe biblioteki Polona oraz KPBC udostępniają historyczne prace ze statystyki i ekonometrii.
Dalej: Autokorelacja · Modele VAR · Heteroskedastyczność · Założenia KMNK
- Podręcznik: J. D. Hamilton, Time Series Analysis, Princeton University Press, 1994
- Podręcznik: G. E. P. Box, G. M. Jenkins i in., Time Series Analysis: Forecasting and Control, Wiley, 5. wyd. 2015
- R. J. Hyndman, G. Athanasopoulos, Forecasting: Principles and Practice (otwarty dostęp): https://otexts.com/fpp3/
- T. Kufel, Ekonometria. Rozwiązywanie problemów z wykorzystaniem programu GRETL, PWN
- Pakiety: R
forecast,tseries,urca; Pythonstatsmodels.tsa
R:
library(forecast); library(tseries)
## AR(1): teoretyczna ACF i symulacja
set.seed(42)
y <- arima.sim(model = list(ar = 0.7), n = 200)
acf(y) # zanik geometryczny ~ 0,7^k
## Test pierwiastka jednostkowego (ADF)
adf.test(y) # H0: niestacjonarny
## Błądzenie losowe a regresja pozorna
set.seed(2); x <- cumsum(rnorm(100))
set.seed(40); w <- cumsum(rnorm(100))
summary(lm(w ~ x))$r.squared # wysokie R^2 mimo niezaleznosci
## Model ARIMA i prognoza
m <- auto.arima(y); forecast(m, h = 10)
Python:
import numpy as np, statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller, acf
from statsmodels.tsa.arima.model import ARIMA
rng = np.random.default_rng(42)
# AR(1), phi=0.7
e = rng.standard_normal(200); y = np.zeros(200)
for t in range(1, 200): y[t] = 0.7*y[t-1] + e[t]
print(acf(y, nlags=5)) # ~ [1, 0.7, 0.49, 0.34, ...]
print(adfuller(y)[:2]) # statystyka i p-value
# Regresja pozorna: dwa niezalezne bladzenia losowe
x = np.cumsum(rng.standard_normal(100)); w = np.cumsum(rng.standard_normal(100))
print(sm.OLS(w, sm.add_constant(x)).fit().rsquared)
print(ARIMA(y, order=(1,0,0)).fit().forecast(10))