Alteryxで移動平均を求める
こんにちは、小澤です。 今回はAlteryxで比較的に簡単に利用出来るけど、利用するとちょっと高度な分析っぽくなる(?)機能の話をさせていただきます。
Alteryのデータ構造
Alteryxでは基本的にデータを表形式で扱っています。 例えば今回利用するサンプルですと、下の図のようになります。
これは1列目が日付、2列目がなんらかのKPIのその日の実測値と思ってください。 この形式データ分析でよく利用されるSQLやデータフレームの形式とよく似ているため、この形式でデータに対して操作が行えるのは大変便利です。 特定の列に関する情報をグラフ化したり、平均値などの統計量を取ったり、あるいは特定の列や列同士の値から新しく計算用の値を算出したりもできます。
全体ではない複数の行を利用する
さて、このような形式でのデータ操作を行うときに比較的「どうやってやるんだっけな?」となりがちなものとして、複数行の情報を考慮したデータの算出です。これはSQLで言えばgroup byやwindow関数を利用した操作に相当するでしょう。
1つ例を挙げます。 ユーザのログイン頻度のようなものを取得したいとします。 この時、データとしては通常ユーザIDとログイン日時のような情報がログとして残されているかと思います。 そういった場合、「今回のログイン日時 - 前回のログイン日時」の平均を算出するなどの計算が必要になります。 この「今回 - 前回」のような情報を扱うためのツールがAlteryxのMulti-Row Fomulaになります。
移動平均を求める
さて、このMutli-Row Fomulaを利用して先ほどの画像のデータで移動平均を求めてみます。 今回は計算を簡単にするため、単純移動平均で当日と前日、前々日の3日分を使います。 なお、今回は移動平均そのものが何を意味するかなどについては割愛します。
まずは、元のデータをそのまま折れ線グラフで表示してみます。 Alteryxのworkflowは最低限の簡単なもののみで構成しています。
Chartingツールの設定も「Chart type」をLineに変更するのみです。
実行すると折れ線グラフが出来上がります。
次にMutli-Row Formulaを用いて、移動平均のデータを追加します。
設定は以下のように行います。
- 「Nom Rows」で前後の項目何個までを範囲とするか指定。今回は前々日までを対象とするの2としている
- 「Values for Rows that don't Exist」で値が存在しない範囲(初日の前日は存在しないなど)を計算対象に含めないように指定
- 「Expression」で実際の計算式を入力
となります。
これと元の値を並べてグラフ化すると下のようになります。
赤い線(元のデータ)にたして青い線(移動平均)の方が平滑化されており、上下している量が少ないことがわかるかと思います。
終わりに
今回はMulti-Row Fomulaツールの例として移動平均を求めてみました。 他のツールと組み合わせを考えれば、こうしたことができることでAlteryxを使った分析できることの幅が広がると思います。