
Contents
- 実行環境、サンプルデータ(R
の UKgas ) - Excel
の分析ツールの移動平均 - PostgreSQL
では - ダウンロード用ファイル(Excel, SQL)、まとめ
実行環境、サンプルデータ(R の UKgas)
Windowswrite(paste(collapse='\n', as.vector(UKgas)), file='clipboard')

Excel

Excel の分析ツールの移動平均
ウェブや書籍で解説が多々ありますが、一応経過まで。事前にアドイン設定で分析ツールが有効になっている前提。最初に、貼り付けた

移動平均のダイアログが出るので、入力範囲(元データ)、区間(過去何期分までのデータで平均するか)、出力先、グラフ作成するか、標準誤差を表示するかを設定します。入力範囲の指定が面倒で、「列全体のクリック → データ末端まで自動選択」とかしてくれません(Excel

とりあえず実行すると ↓ こんな感じ。元データ(B


PostgreSQL では
本来はサンプルデータをテーブルにすべきですが、今日は簡単なデータなのでクエリ中にコピペし、アドホックにWITH a AS ( SELECT text ' -- ここに UKgas データをコピペ ' ), b AS ( SELECT id, val FROM a, unnest(string_to_array( regexp_replace(text, '((^\s+)|(\s+$))', '', 'g'), E'\n') :: float[]) WITH ORDINALITY AS t (val, id) ), c AS ( SELECT id, val, CASE WHEN count(val) over w = 12 THEN avg(val) over w END AS avg12 FROM b WINDOW w AS (ORDER BY id ROWS 11 PRECEDING) ) SELECT id, val, avg12, CASE WHEN count(avg12) over w = 12 THEN sqrt(sum(pow(val - avg12, 2)) over w / 12) END AS se FROM c WINDOW w AS (ORDER BY id ROWS 11 PRECEDING);
↓


↓ 実行結果。Excel




ダウンロード用ファイル(Excel, SQL)、まとめ
- Excel : sma_ukgas.xlsx(18.2 kB)
- SQL : sma_ukgas.sql(1.31 kB)
Excel
対象とするデータが既存ならクエリはもっと簡単で、次のような
WITH c AS ( SELECT id, val, CASE WHEN count(val) over w = 12 THEN avg(val) over w END AS avg12 FROMyour_table_or_view WINDOW w AS (ORDER BY id ROWS 11 PRECEDING) ) SELECT id, val, avg12, CASE WHEN count(avg12) over w = 12 THEN sqrt(sum(pow(val - avg12, 2)) over w / 12) END AS se FROM c WINDOW w AS (ORDER BY id ROWS 11 PRECEDING);
Excel
できれば「区間」の数値指定を一ヶ所にまとめたいけど、今のところ
WINDOW