Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

\[ \def\_#1{\mathbf{#1}} \def\x{\times} \def\R{\mathbb{R}} \def\mat#1{\begin{bmatrix}#1\end{bmatrix}} \def\matr#1{\begin{bmatrix*}[r]#1\end{bmatrix*}} \]

LS: Gong

(V.Franc, upravili O.Drbohlav, T.Werner, V.Voráček)

Časová řada je posloupnost reálných čísel $y_0,y_1,\ldots$, která popisuje signál vzorkovaný v (ekvidistantních) časech $t=0,1,\ldots,T$. Naším cílem je odhadnout parametry autoregresního modelu \[ \hat{y}_t = a_0 + \sum_{i=1}^{p} a_i y_{t-i}, \qquad t \geq p, \] časové řady, ve kterém každý prvek posloupnosti je lineární kombinace (se stejnými koeficienty) $p$ předcházejících prvků a absolutního členu 1. Číslo $p\in\mathbb{N}$ je řád modelu a $\_a=(a_0, a_1,\ldots,a_p)\in\R^{p+1}$ jsou parametry. Odhadnutí parametrů z naměřeného vzorku \[ \_y=(y_0,y_1,\ldots,y_T)\in\R^{T+1} \] časové řady se nazývá identifikace modelu. Jedna metoda identifikace hledá takové parametry, které odpovídají naměřenému vzorku ve smyslu nejmenšího součtu čtverců odchylek hodnot modelu od nameřených dat. Tj. optimální parametry minimalizují číslo \[ \sum_{t=p}^T (\hat{y}_t-y_t)^2 . \]

Získaný model se dá použít například pro kompresi časové řady. V tomto případě postačí uchovat podposloupnost $y_1,\ldots,y_p$ a odhadnuté parametry. Zbývající členy poslopnosti $y_{p+1},\ldots, y_T$ vygenerujeme rekurentním použitím modelu. Koeficient komprese je tedy $T/(2p+1).$ Na podobné myšlence je postavena komprese řečového signálu v reálném čase, která se používá například v mobilních telefonech.

Úkoly k vypracování:

  1. Napište funkci a = ar_fit_model(y,p), kde sloupcový vektor y je naměřený vzorek, skalár p je řád modelu, a sloupcový vektor a jsou odhadnuté parametry. Doporučujeme úlohu nejdříve zformulovat jako minimalizaci funkce \[ \|\_M\_a-\_b\|^2. \]
  2. Napište funkci y_pred = ar_predict(a,y0,N), kde sloupcový vektor a jsou parametry, vstupní sloupcový vektor y0 délky $p$ je počáteční podposloupnost, N je požadovaná délka predikované posloupnosti, a výstupní sloupcový vektor y_pred délky $N$ je predikovaná posloupnost.

Templaty, včetně skriptu pro testování si stáhněte zde: template pro matlab, template pro python. Pro python spouštějte skript gong.py, pro matlab du2.m. Výsledný graf pro gong by měl vypadat jako níže. Pro další testování vymyslete jednoduché případy, u kterých umíte najít řešení i jinak. Například konstatní a lineární regrese (p = 0,1).

courses/b0b33opt/cviceni/hw/lsq2/start.txt · Last modified: 2021/10/28 13:12 by wernetom