Z Skrypty dla studentów Ekonofizyki UPGOW
(→Funkcja autokowariancji próby) |
(→Funkcja autokowariancji próby) |
||
Linia 159: | Linia 159: | ||
\end{align} | \end{align} | ||
</math> | </math> | ||
+ | |||
+ | {| border=1 | ||
+ | |- style="background-color:PaleGreen;" | ||
+ | !Matlab / Octave | ||
+ | |- | ||
+ | |<source lang="matlab"> | ||
+ | function [z] = asc_kow(x, stopien = 0) | ||
+ | |||
+ | if ( isempty (x) || (!isvector(x)) ) | ||
+ | error ("kow: pierwszy agrument musi byc niepustym wektorem"); | ||
+ | return; | ||
+ | endif | ||
+ | |||
+ | %funkcja autokowariancji jest parzysta | ||
+ | h = abs(stopien); | ||
+ | |||
+ | %dlugosc wektora | ||
+ | lx = length(x); | ||
+ | |||
+ | if ( !isnumeric(stopien) || h >= lx) | ||
+ | error ("kow: drugi argument musi byc liczba naturalna < dim(x)"); | ||
+ | return; | ||
+ | endif | ||
+ | |||
+ | %srednia | ||
+ | srednia = mean(x); | ||
+ | |||
+ | %suma | ||
+ | korelacje = 0; | ||
+ | for j=1:(lx-h) | ||
+ | korelacje += x(j+h) * x(j); | ||
+ | endfor | ||
+ | |||
+ | z = ( | ||
+ | korelacje - | ||
+ | (sum(x(1:lx-h)) + sum(x(1+h:lx))) * srednia + | ||
+ | power(srednia,2) * (lx-h) | ||
+ | ) / lx; | ||
+ | |||
+ | endfunction | ||
+ | </source> | ||
+ | |} | ||
; Uwaga 1 : zastosowanie <math>(n)</math> w mianowniku pierwszej równości gwarantuje, że funkcja | ; Uwaga 1 : zastosowanie <math>(n)</math> w mianowniku pierwszej równości gwarantuje, że funkcja | ||
: <math> \Gamma_n := [\hat{\gamma} (i-j)]_{i,j=1}^n \ </math> | : <math> \Gamma_n := [\hat{\gamma} (i-j)]_{i,j=1}^n \ </math> | ||
- | jest określona nieujemnie. | + | : jest określona nieujemnie. |
; Uwaga 2 : Funkcja autokorelacji próby określona jest przez funkcję autokowariancji próby poprzez | ; Uwaga 2 : Funkcja autokorelacji próby określona jest przez funkcję autokowariancji próby poprzez | ||
Linia 168: | Linia 210: | ||
: Odpowiadająca macierz autokorelacji próby | : Odpowiadająca macierz autokorelacji próby | ||
: <math> \hat{R}_n := [\hat{\rho} (i-j)]_{i,j=1}^n \ </math> | : <math> \hat{R}_n := [\hat{\rho} (i-j)]_{i,j=1}^n \ </math> | ||
- | również określona jest nieujemnie. | + | : również określona jest nieujemnie. |
+ | |||
+ | {| border=1 | ||
+ | |- style="background-color:PaleGreen;" | ||
+ | !Matlab / Octave | ||
+ | |- | ||
+ | |<source lang="matlab"> | ||
+ | function [z] = asc_kor(x, stopien = 0) | ||
+ | |||
+ | if ( isempty (x) || (!isvector(x)) ) | ||
+ | error ("kor: pierwszy agrument musi byc niepustym wektorem"); | ||
+ | return; | ||
+ | endif | ||
+ | |||
+ | if ( !isnumeric(stopien) ) | ||
+ | error ("kor: drugi argument musi byc liczba naturalna"); | ||
+ | return; | ||
+ | endif | ||
+ | |||
+ | %funkcja autorelacji jest parzysta | ||
+ | h = abs(stopien); | ||
+ | |||
+ | if ( h == 0) | ||
+ | z = 1; | ||
+ | else | ||
+ | z = asc_kow(x,h) / asc_kow(x,0); | ||
+ | endif | ||
+ | |||
+ | endfunction | ||
+ | </source> | ||
+ | |} | ||
+ | |||
+ | ; Uwaga 3 : Z funkcji autokorelacji (właśnie ta funkcja wykorzystywana jest szerzej podczas badania szeregów czasowych) można wyczytać kilka informacji | ||
+ | : '''a)''' bardziej zmienne dane wejściowe dają w wyniku bardziej zmienną funkcję autokorelacji, | ||
+ | : '''b)''' dodatnia wartość funkcji autokorelacji dla przesunięcia 1 odpowiada takiej sytuacji, że kolejna obserwacja będzie leżeć po tej samej stronie co średnia, | ||
+ | : '''c)''' ujemna wartość funkcji autokorelacji dla przesunięcia 1 odpowiada takiej sytuacji, że kolejna obserwacja będzie leżeć po przeciwnej stronie co średnia, | ||
+ | : '''d)''' "periodyczność" funkcji autokorelacyjnej często odpowiada sezonowości w danych wejściowych. | ||
+ | |||
+ | ; Uwaga 4 : Funkcję autokorelacji (autokowariancji) możemy policzyć dla dowolnych danych (dowolnego szeregu czasowego), stacjonarnego ale i szeregu wykazującego trend czy sezonowość (bądź jedno i drugie). Funkcja autokorelacji policzona dla danych z trendem wykaże stosunkowo wolne zanikanie wraz z wzrostem ''h'' (odległości korelacji). Funkcja autokorelacji dla danych z czynnikiem periodycznym wykaże się również przebiegiem z okresowością. W pewnym sensie funkcja autokorelacji może nam służyć za test stacjonarności szeregu czasowego. |
Wersja z 20:46, 21 gru 2010
Spis treści |
Elementy teorii prawdopodobieństwa
Procesy stochastyczne
Definicja i rola funkcji autokowariancji (autokorelacji)
Funkcja kowariancji
Do wyznaczania zależności pomiędzy zmiennymi losowymi użyteczna bywa funkcja kowariancji.
- Definicja 3.1
- Dla dwóch zmiennych losowych \( \{X_t, t \in T\}\ \) oraz \( \{Y_s, s \in T\}\ \) funkcja
- \( \begin{align} ~cov(X(r),Y(s)) = &E[(X_r - EX_r)(Y_s - EY_s)] = \\ &E(X_tY_s) - EX_t EY_s ~~~\text{dla} ~~~ r,s \in T \end{align} \)
określa liniową zależność pomiędzy powyższymi zmiennymi losowymi. Stopień współzależności owych zmiennych losowych można podać za pomocą tzw. współczynnika korelacji Pearsona \( r_{XY}\ \)
- \( cov (X, Y) = r_{XY} \sigma_{X} \sigma_{Y}. \)
Wartość współczynnika korelacji Pearsona mieści się w przedziale domkniętym [-1, 1]. Im większa jego wartość bezwzględna, tym silniejsza jest zależność zmiennych losowych między zmiennymi. \(r_{XY} = 0\) oznacza brak liniowej zależności między cechami, \(r_{XY} = 1\) oznacza dokładną dodatnią liniową zależność między cechami, natomiast \(r_{XY} = -1\) oznacza dokładną ujemną liniową zależność między cechami, tzn. jeżeli zmienna \(X\) rośnie, to \(Y\) maleje i na odwrót. Współczynnik korelacji liniowej można traktować jako znormalizowaną kowariancję. Korelacja przyjmuje zawsze wartości w zakresie [-1, 1], co pozwala uniezależnić analizę od dziedziny badanych zmiennych.
Funkcja autokowariancji
W przypadku gdy analizujemy szereg czasowy opisywany poprzez ewolucję jednej zmiennej losowej możemy mówić najwyżej o funkcji autokowariancji. Dla szeregu czasowego \( \{X_t, t \in T\}\ \) możemy taką funkcję zdefiniować następująco.
- Definicja 3.2
- Jeżeli \( \{X_t, t \in T\}\ \) jest procesem dla którego wariancja zmiennej losowej dla każdej chwili czasu \( \sigma_{X_t} \) jest skończona, wtedy funkcja autokowariancji procesu \( \{X_t\}\ \) zdefiniowana jest jako
- \( \begin{align} ~\gamma_X(r,s) = &K_{XX}(r,s) = cov(X(r),X(s)) = cov(X_r,X_s) = \\ &E[(X_r - EX_r)(X_s - EX_s)] = E(X_tX_s) - EX_t EX_s ~~~\text{dla} ~~~ r,s \in T. \end{align} \)
Analogicznie do funkcji kowariancji, autokowariancja określa liniową zależność pomiędzy tą samą zmienną losową w dwóch chwilach czasu t i s.
Funkcja autokorelacji
Jeżeli dowolny proces losowy \( \{X_r, r \in T\}\ \) posiada wartość oczekiwaną \( EX_r \) oraz wariancję \( \sigma_{X} \) to możemy zdefiniować funkcję autokorelacji procesu (swego rodzaju unormowaną funkcję autokowariancji) jako
- Definicja 3.4
- \( \rho(r,s) = \frac{E[(X_t - EX_t )(X_s - EX_s )]}{\sigma_{X}^2}\, , \)
- Jeżeli \(k=t-s\;\) to możemy funkcję autokorelacji zapisać jako funkcję jednej zmiennej:
- \( \rho(k) = \frac{E[(X_t - EX_t )(X_{t-k} - EX_{t-k} )]}{\sigma_{X}^2}\, . \)
Stacjonarność procesu stochastycznego
Stacjonarność w sensie szerokim
- Definicja 3.3
- Szereg czasowy \( \{X_t, t \in \Z\}\ \), gdzie zbiór indeksów zdefiniowany jest jako \( \Z = \{0, \pm 1, \pm 2,\cdots \}\) nazywamy stacjonarnym (w sensie słabym) jeżeli spełnione są poniższe punkty
- \( \begin{align} (i) &~E | X_t |^2 < \infty ~~~ \text{dla} ~~~ t \in \Z \\ (ii) &~E X_t = m ~~~ \text{dla} ~~~ t \in \Z \\ (iii)&~\gamma_X(r,s) = \gamma_X(r+t,s+t) ~~~ \text{dla} ~~~ t \in \Z \end{align} \)
- Uwagi
- Powyższa definicja odnosi się do tak zwanej słabej stacjonarności, stacjonarności w szerszym sensie lub stacjonarności rzędu dwa. Ma ona zastosowanie najczęściej podczas analizy szeregów czasowych. Na tym kursie analizy szeregów czasowych będzie to podstawowa definicja jaką będziemy rozpatrywali.
- Jeżeli proces \( \{X_t, t \in \Z\}\ \) jest stacjonarny
- \( \gamma_X(r+t,s+t) = \gamma_X(r-s,0) \!\)
- często lepiej jest tak przedefiniować funkcję autokowariancji aby była funkcją tylko jednej zmiennej
- \( \gamma_X(r-s,0) = \gamma_X(h,0) = cov(X_{t+h},X_h) = \gamma_X(h), \, \mbox{ gdzie } \, h = r - s, \, h,r,s \in \Z \)
- Wtedy \( h \) możemy utożsamić z opóźnieniem w czasie dwóch zmiennych losowych \( X_{t+h}, X_t\ \). Wtedy jednoargumentowa funkcja autokorelacji procesu losowego \( \{X_t, t \in \Z\}\ \) zdefiniowana będzie jako
- \( \rho_X(h) = \frac{\gamma_X(h)}{\gamma_X(0)}, \, h \in \Z. \)
- W powyższej definicji nie musimy ograniczać się do \( \Z \) jako dziedziny czasu. Jednak definicja ograniczająca do liczb całkowitych jest łatwiejsza, a w przypadku szeregów czasowych całkowicie wystarczająca, ponieważ na naszych zajęciach "czas" będzie zawsze indeksowany.
Stacjonarność w sensie ścisłym
Dla porównania podamy teraz definicję stacjonarności w sensie ścisłym.
- Definicja
- Proces stochastyczny (bądź szereg losowy) jest stacjonarny w sensie ścisłym, gdy zmienne losowe \(X(t)\ \) oraz \( X (t+\epsilon)\ \) mają te same rozkłady n-wymiarowe (rozkłady łączne)
- \( f(x_1, t_1; x_2, t_2;...; x_n, t_n) = f(x_1, t_{1+\epsilon}; x_2, t_{2+\epsilon};...; x_n, t_{n+\epsilon})\ \)
- dla dowolnych \(n\) i \(\epsilon\).
- Uwagi
- \( f(x_1, t_1) = f(x_1, t_{1+\epsilon})\ \)
- oznacza, że funkcja rozkładu nie zależy od czasu, t.j.
- \( f(x_1, t_1) = f(x_1).\ \)
- Wynika z tego natychmiast, że wartość oczekiwana jest również stałą funkcją czasu
- \( \langle m(t) \rangle = m.\ \)
- Równość
- \( f(x_1, t_1; x_2, t_2) = f(x_1, t_{1+\epsilon}; x_2, t_{2+\epsilon})\ \)
- zachodzi tylko wtedy, gdy funkcja rozkładu zależy tylko od różnicy czasu
- \( f(x_1, t_1; x_2, t_2) = f(x_1, x_2, t_1 - t_2).\ \)
- Oznacza to, że w tym przypadku funkcja korelacyjna też zależy tylko od różnicy czasu
- \( \langle x(t +\epsilon) x(t) \rangle = R(\epsilon).\ \)
- Definicja stacjonarności ścisłej obejmuje definicję stacjonarności w sensie szerokim. Odwrotne twierdzenie niekoniecznie jest prawdziwe.
Jako, że kurs ten obejmuje zagadnienia związane również z wizualną analizą szeregów czasowych, to intuicyjnie można sobie ową stacjonarność silną wyobrazić następująco. Dwa dowolne fragmenty szeregu np. \(\{X_n, n \in(2517,13232)\}\ \) oraz \(\{X_n, n \in(12122,22803)\}\ \) będą miały takie same (z pewną dokładnością) charakterystyki statystyczne (średnie, wariancje, mediany, maksymalne amplitudy...).
Funkcja autokowariancji procesu stacjonarnego
Funkcja autokowariancji (lub opcjonalnie autokorelacji) stacjonarnego procesu stochastycznego, leżąca za każdym rozpatrywanym procesem stojącym za dowolnymi danymi wykazującymi losowość, jest podstawowym narzędziem służącym do identyfikacji procesu. Dzięki tej funkcji możemy znaleźć parametry opisujące typ i rodzaj procesu stojącego za daną realizacją procesu losowego. Techniki te poznamy w części traktującej o analizie szeregów czasowych.
Podstawowe własności
Jeżeli \( \gamma(\cdot) \ \) jest funkcją autokowariancji procesu stacjonarnego \( \{ X_t, t \in \Z \} \ \), to
- (i) \( \gamma(0) \ge 0, \ \)
- (ii) \( |\gamma(h)| \le \gamma(0), \ \) dla każdego \( h \in \Z \) oraz \(\gamma\) jest funkcją parzystą
- (iii) \( \gamma(h) = \gamma(-h), \ \) dla każdego \( h \in \Z \)
- własność (i)
- jest oczywista, ponieważ
- \( \sigma_{X_t} \ge 0, ~~~~~(Var(X_t) \ge 0); \ \)
- własność (ii)
- wynika z nierówności Cauchyego-Schwarza
- \( |\gamma(h)| = |cov(X_{t+h}, X_t)| \le \sqrt{\sigma_{X_{t+h}}} \sqrt{\sigma_{X_{t}}}; \ \)
- własność (iii)
- \( \gamma(-h) = \ \)
- \( = E[(X_{t-h} - EX_{t-h})(X_{t} - EX_{t})] = \ \)
- \( = E[X_{t-h}X_{t} - EX_{t-h}X_{t} - X_{t-h}EX_{t} + EX_{t-h}EX_{t}] = \ \)
- \( = E(X_{t-h}X_{t}) - EX_{t-h}EX_{t} = \ \)
- podstawiamy \( s = t -h \ \)
- \( = E(X_{s}X_{s+h}) - EX_{s}EX_{s+h} = E(X_{s+h}X_{s}) - EX_{s+h}EX_{s} = \ \)
- \( = \gamma(h). \ \)
Funkcja określona nieujemnie
- Definicja
- Funkcja przeprowadzająca liczby całkowite w rzeczywiste \(\kappa : \Z \to \R \ \) jest określona nieujemnie wtedy i tylko wtedy, gdy
- \( \sum_{i,j=1}^{n} a_i \kappa (t_i - t_j) a_j \ge 0 \ \)
- dla wszystkich dodatnich liczb całkowitych n oraz dla wszystkich wektorów \( \bar{a} = (a_1, a_2, \dots, a_n) \in \R^n \ \) oraz \( \bar{t} = (t_1, t_2, \dots, t_n) \in \Z^n \ \) wtedy i tylko wtedy, gdy
- \( \sum_{i,j=1}^{n} a_i \kappa (i - j) a_j \ge 0 \ \)
- dla wszystkich powyższych n i \(\bar{a}\).
- Twierdzenie
- Funkcja rzeczywista określona na liczbach całkowitych jest autokowariancją stacjonarnego szeregu czasowego wtedy i tylko wtedy, gdy funkcja ta jest parzysta i nieujemnie określona. [bez dowodu]
- Uwaga 1
- Dla każdej funkcji autokowariancji \(\gamma (\cdot) \ \) istnieje stacjonarny Gaussowski szereg czasowy (proces losowy) który posiada funkcję autokowariancji.
- Uwaga 2
- Czasem łatwiej jest zdefiniować proces stochastyczny oraz policzyć jego funkcję autokowariancji by sprawdzić czy jakaś funkcja jest określona nieujemnie.
- Uwaga 3
- Funkcja autokorelacji spełnia wszystkie własności funkcji autokowaariancji oraz dodatkowo jedną trywialną \( \rho(0) = 1. \ \)
Funkcja autokowariancji próby
Zajmując się szeregami czasowymi zwykle dochodzimy do momentu, gdzie niezbędne staje się oszacowanie funkcji autokowariancji (autokorelacji) po to by uzyskać wiedzę na temat zmiennych procesu. Problem polega najczęściej na tym, że jedyne co jest dostępne to nie cały proces stochastyczny \( \{ x_t \} \) a pojedyncza jego realizacja \( \{ x_1, \dots, x_n \} \). Obliczenie tej funkcji to jeden z szeregu niezbędnych kroków w konstrukcji modelu posiadanych danych. Do oszacowania funkcji autokowariancji \( \gamma (\cdot) \ \) procesu stochastycznego stojącego za posiadanymi danymi losowymi używamy funkcji autokowariancji próby (z ang. sample autocovariance function - acf).
- Definicja
- Funkcja autokowariancji próby dla realizacji \( \{ x_1, \dots, x_n \} \) zdefiniowana jest jako
- \( \begin{align} (i) ~~~&\hat{\gamma}(h) := \frac{1}{n} \sum_{j=1}^{n-h}(x_{j+h} - \bar{x})(x_j - \bar{x}), 0 \le h \le n, -n < h < \le 0 \\ (ii) ~~~&\hat{\gamma}(h) = \hat{\gamma}(-h)\\ (iii)~~~&\bar{x} = \frac{1}{n} \sum_{j=1}^n x_j. \end{align} \)
Matlab / Octave |
---|
function [z] = asc_kow(x, stopien = 0) if ( isempty (x) || (!isvector(x)) ) error ("kow: pierwszy agrument musi byc niepustym wektorem"); return; endif %funkcja autokowariancji jest parzysta h = abs(stopien); %dlugosc wektora lx = length(x); if ( !isnumeric(stopien) || h >= lx) error ("kow: drugi argument musi byc liczba naturalna < dim(x)"); return; endif %srednia srednia = mean(x); %suma korelacje = 0; for j=1:(lx-h) korelacje += x(j+h) * x(j); endfor z = ( korelacje - (sum(x(1:lx-h)) + sum(x(1+h:lx))) * srednia + power(srednia,2) * (lx-h) ) / lx; endfunction |
- Uwaga 1
- zastosowanie \((n)\) w mianowniku pierwszej równości gwarantuje, że funkcja
- \( \Gamma_n := [\hat{\gamma} (i-j)]_{i,j=1}^n \ \)
- jest określona nieujemnie.
- Uwaga 2
- Funkcja autokorelacji próby określona jest przez funkcję autokowariancji próby poprzez
- \( \hat{\rho}(h) = \frac{\hat{\gamma(h)}}{\hat{\gamma(0)}}, ~~~|h| < n. \ \)
- Odpowiadająca macierz autokorelacji próby
- \( \hat{R}_n := [\hat{\rho} (i-j)]_{i,j=1}^n \ \)
- również określona jest nieujemnie.
Matlab / Octave |
---|
function [z] = asc_kor(x, stopien = 0) if ( isempty (x) || (!isvector(x)) ) error ("kor: pierwszy agrument musi byc niepustym wektorem"); return; endif if ( !isnumeric(stopien) ) error ("kor: drugi argument musi byc liczba naturalna"); return; endif %funkcja autorelacji jest parzysta h = abs(stopien); if ( h == 0) z = 1; else z = asc_kow(x,h) / asc_kow(x,0); endif endfunction |
- Uwaga 3
- Z funkcji autokorelacji (właśnie ta funkcja wykorzystywana jest szerzej podczas badania szeregów czasowych) można wyczytać kilka informacji
- a) bardziej zmienne dane wejściowe dają w wyniku bardziej zmienną funkcję autokorelacji,
- b) dodatnia wartość funkcji autokorelacji dla przesunięcia 1 odpowiada takiej sytuacji, że kolejna obserwacja będzie leżeć po tej samej stronie co średnia,
- c) ujemna wartość funkcji autokorelacji dla przesunięcia 1 odpowiada takiej sytuacji, że kolejna obserwacja będzie leżeć po przeciwnej stronie co średnia,
- d) "periodyczność" funkcji autokorelacyjnej często odpowiada sezonowości w danych wejściowych.
- Uwaga 4
- Funkcję autokorelacji (autokowariancji) możemy policzyć dla dowolnych danych (dowolnego szeregu czasowego), stacjonarnego ale i szeregu wykazującego trend czy sezonowość (bądź jedno i drugie). Funkcja autokorelacji policzona dla danych z trendem wykaże stosunkowo wolne zanikanie wraz z wzrostem h (odległości korelacji). Funkcja autokorelacji dla danych z czynnikiem periodycznym wykaże się również przebiegiem z okresowością. W pewnym sensie funkcja autokorelacji może nam służyć za test stacjonarności szeregu czasowego.