Power BIで移動平均線を計算する方法 Averagex×Datesinperiodへの誘い
こんにちは。
今回はPower BIで移動平均を計算する方法を紹介したいと思います。
移動平均をレポート内に取り入れれば、変化のトレンドが全体像として把握できるので、有効です。
実際のビジネスでも活用しやすいと思いますので参考にしてみて下さい。
●利用データと完成図
下図は東京都の平均気温の日別データです。
こちらのデータの平均気温列の移動平均値を計算し、折れ線グラフにプロットしていきたいと思います。
◎データのダウンロードはこちらから:こちらをクリックください
※シートが2つあると思いますが、今回は「Temperature」のデータを使っていきます。
そして下図が完成図です。
それでは早速やっていきましょう!!
●移動平均とは
計算式を作っていく前に、まずは移動平均について簡単におさらいしておこうと思います(下図参照)。
知っている方は適当に読み飛ばしてください。
移動平均は、ある一定の期間の平均を計算し、その区間をずらしていく値とです。
移動平均がないグラフだと、下図のように線がデコボコしていて、全体としての変化(上向きなのか、下向きなのか)が分かりずらいです。
そこで移動平均を計算してグラフに表示してあげると、曲線がより滑らかになり、おおまかな変化を把握しやすくなります。
この期間が長ければ長いほど、この曲線はより滑らかになっていきます。
●DAX関数
下記が今回使ったDAX計算式です。
【5日間の移動平均値の計算方法】
TempMA =AVERAGEX(DATESINPERIOD(‘Temperture'[Date], LASTDATE(‘Temperture'[Date]), -5, Day),CALCULATE(SUM(‘Temperture'[平均気温])))
【30日間の移動平均値の計算方法】
TempMA(30) =AVERAGEX(DATESINPERIOD(‘Temperture'[Date], LASTDATE(‘Temperture'[Date]), -30, Day),CALCULATE(SUM(‘Temperture'[平均気温])))
基本的な方向性としては、先頭にある「Averagex」関数を使って、テーブルを指定期間に絞り込み、その絞り込んだテーブルに対して日付毎で平均値(Average)を計算していくという流れです。
そして期間の指定方法に関しては、「Datesinperiod」関数で制御します。
【Datesinperiodの説明】
Datesinperiodは開始日を基準に、指定した期間分のテーブルを返す関数です。
下記4つのパラメーターを指定します。
Datesinperiod(<1.日付列>, <2.開始日(※今回は直近の日付を指定)>, <3.指定期間を±で指定>, <4.日付の単位を指定>)
これでテーブルを該当期間のみに絞り込むことが可能となります。
後は、Calculate関数とSum関数を使って行毎で合計値を計算し(1行のみなので平均気温の値を返す)、Datesinperiodで指定した期間分の平均値を日毎で計算します。
●結果を確認
こちらの計算式をテーブルビジュアルに表示し計算結果を確認し、
問題なければ後は折れ線グラフを表示して、「軸」と「値」にデータを加えていく感じです。
できました!!
ということで、以上が移動平均値を計算する最もシンプルな方法です。
●さらに発展
上記の方法では、日付データに歯抜けがない、つまり365日分毎日のデータが揃っているケースでは通用するのですが、データに歯抜けがあると問題が生じてきます。
例えば、株価の平均線を作る場合です。
平均気温データは日付に歯抜けデータがない日別データなので、Datesinperiodで制御できましたが、株価に関しては休日・祝祭日の歯抜けが発生します。
やってみるとわかりますが、こうした歯抜けがあるデータをDatesinperiodで制御しようとすると、思うように計算できません。
例えばば19日から過去6日分のデータに絞り込もうとすると、
株価でいう移動平均線は、休日・祝祭日は加味しない、11/12~11/19日までの6営業日分を計算したいのです。
Datesinperiodで計算すると、11/14日~11/19日にデータを絞り込んでしまい、12日のデータを認識してくれません。
どうしたらよいのしょうか。
こちらに関しては、別の関数で制御すれば実現できるのですが、次回の記事で説明させていただければと思いますので、興味があれば参考にしてみて下さい!
※近日追ってアップします!
→アップしました
https://youtu.be/T5SozgJjLS0
それでは、また!!
コメントを残す