Média móvel

Análise de Séries Temporais no PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

O que é uma média móvel?

janela deslizante

Análise de Séries Temporais no PostgreSQL

Médias móveis

  • Defina quais linhas entram na média
  • Usando a cláusula ROWS BETWEEN
  • UNBOUNDED PRECEDING AND CURRENT ROW: considera todas as linhas anteriores até a atual
SELECT 
id,
views,
AVG(views) OVER(
    PARTITION BY id
    ORDER BY ts
    ROWS BETWEEN
    UNBOUNDED PRECEDING AND CURRENT ROW)
    AS running_avg_views
FROM dc_news_fact;
Análise de Séries Temporais no PostgreSQL

Calcular uma média móvel

  • Calcule a média móvel de cinco linhas:
    • ROWS BETWEEN 4 PRECEDING AND CURRENT ROW

 

(1) Linha anterior

(2) Linha anterior

(3) Linha anterior

(4) Linha anterior

(5) Linha atual

Análise de Séries Temporais no PostgreSQL

Calcular uma média móvel

SELECT
    id,
    ts,
    views,

AVG(views) OVER (
ORDER BY ts
ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS moving_average_five
FROM dc_news_fact;
Análise de Séries Temporais no PostgreSQL

Calcular uma média móvel: resultado

|   id|                 ts|views|moving_average_five|
|-----|-------------------|-----|-------------------|
|12121|2015-12-27 17:14:16| null|               null|
|12121|2015-12-27 17:34:16|   23|  23.00000000000000|
|12121|2015-12-27 17:54:16|   10|  16.50000000000000|
|12121|2015-12-27 18:14:16|    8|  13.66666666666666|
|12121|2015-12-27 18:34:16|    4|  11.25000000000000|
|12121|2015-12-27 18:54:16|    7|  10.40000000000000|
|12121|2015-12-27 19:14:16|    0| 5.8000000000000000|
...
Análise de Séries Temporais no PostgreSQL

Calcular média móvel sem a linha atual

  • ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
SELECT
    stock_symbol,
    day,
    daily_avg,
    AVG(daily_avg) OVER(
        PARTITION BY stock_symbol
        ORDER BY day
        ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
        ) AS avg_prev_five
FROM daily_stock_averages
ORDER BY stock_symbol, day;
Análise de Séries Temporais no PostgreSQL

Vamos praticar!

Análise de Séries Temporais no PostgreSQL

Preparing Video For Download...