Exploratory アワー #533 - XmR: 管理限界の範囲を超えた値にフラグ付けする方法

XmRチャートとは、時系列データから得られた値がシグナルなのか、それとも想定される通常のばらつきなのかを判断するために使えるチャートです。

今回はXmRチャートの紹介シリーズとして、「管理限界の範囲を超えた値にフラグ付けする方法」について紹介します。

XmRチャートの管理限界を計算し、その範囲を超えた値に自動的にフラグを付けることで、大量のデータの中から重要なシグナルを効率的に識別することができます。

XmRチャート自体の詳しい説明は、こちらをご覧ください。

問題

多くの国や地域のデータを扱う際、すべての国のXmRチャートを個別に確認し、管理限界を超える値を人力で特定することは非常に時間がかかり、非効率的です。また、この作業を定期的に行う必要がある場合、さらに作業の負担が大きくなります。

解決方法

XmRチャートでは、管理限界をチャート上に引いてシグナルがあるのかどうかをみていくことになりますが、繰り返しを使ってたくさんのチャートを可視化していると、全てを目視で確認していくのは大変な作業となります。

例えば、上記は国ごとの売上のXmRチャートですが、国の数は164カ国あるために、全てを毎週チェックしていくのは大変です。

そこで、管理限界の範囲を計算して、範囲を超えている時にフラグをつけるようにデータを加工していく方法をご紹介します。

管理限界(X)の計算式

管理限界を紹介していくためには、XとmRについて理解する必要があります。

Xとは、元のデータを表します。

mRとは、Moving Rangeの略で、前の値との差を表します。

この2つを使って、管理限界は以下の計算式で表せます。

管理限界 = mean(X) ± 2.66 * mean(mR)

今回の例では、40.27 ± 2.66 * 15.14 となるため、40.27 ± 40.27、つまり「0」から「80.54」の間が管理限界の範囲内となります。

管理限界の範囲を計算する

今回使用するデータは週ごと、国ごとの売上データを使用します。

1. 前の値との差を求める

まずはmR(Moving Range)を求めるために、売上の前の値との差を求めます。

売上の列から「表計算を作成」の「...からの差」を選び、「前の値(LAG)」を選択します。

表計算を作成のダイアログが表示されますが、「売上_diff_prev」によって売上の前の値との差が求められています。

しかし、このままでは問題があります。「Algeria」と「Angola」での売上の差が求められてしまっています。

国ごとに前の値との差を求めたい場合は、グループに「国」を割り当てる必要があります。グループに国を割り当てれば、それぞれの国での売上の前の値との差が求められるようになっています。

列名が「売上_diff_prev」となっているので、列名を「売上_mR」に変更します。

もし日付列が昇順で並び替えられていない場合は、「計算前にデータを並び替える」にチェックをつけて、日付列を昇順に並び替えてください。

これによって売上の前の値との差を求めることができました。

2. 差を絶対値にする

先程求めた売上の前の値との差は、プラスもマイナスも含まれているため、絶対値にしたいです。

売上_mRの列から、「数値関数を使う」の「絶対値(abs)」を選択します。

計算エディタには絶対値にすることができるabsという関数が指定されているので、そのまま実行します。

実行することで、売上_mrの列絶対値にすることができました。

3.グループごとの管理限界の範囲を計算する

次に、グループごとに管理限界の範囲を計算していきましょう。

グループごとに計算するためにも、ステップメニューから「グループ化」を選択します。

グループ化の列には「国」を割り当てます。

国ごとにグループに分けることができました。

売上の列ヘッダメニューから「計算を作成」の「標準」を選択します。

計算を作成のダイアログが表示されるため、以下の計算式を入力します。

mean(売上, na.rm=TRUE) + 2.66 * mean(売上_mr, na.rm=TRUE)

先ほどの計算式と違うこととしては、meanという平均値を求めるための関数にて、欠損値があっても計算できるようにna.rm = TRUE の引数を設定しています。

新しく列を作成にチェックをつけて、列名を指定します。

この列の後に作るには「最後の列」を指定して、実行します。

管理限界の上限の列を作ることができました。

管理限界の下限も作りたいため、先ほど作成したステップをコピーします。

ステップメニューからコピーしたステップを貼り付けます。

これによって、同じステップを貼り付けることができたため、ステップのトークンをクリックして編集していきます。

先程は + 2.66となっていましたが、- 2.66に変更をします。

mean(売上, na.rm=TRUE) - 2.66 * mean(売上_mr, na.rm=TRUE)

列名を「管理限界の下限」に変更をします。

実行することで、管理限界の上限と下限を求めることができました。

グループ化はこの後の処理では不要となるため、「グループ解除」を行います。

4. 管理限界を超えている時にフラグをつける

管理限界を超えているかどうかを調べやすくするために、以下のようにフラグをつけたいです。

売上の列ヘッダメニューから「値を置き換える」の「条件を指定」を選択します。

条件のプラスボタンをクリックします。

条件には以下のように設定します。

  • 演算子: より大きい
  • 対象: 列
  • 列: 管理限界_上限

新しい値には文字を選び「範囲外_上限」と指定します。

この条件や新しい値をもとの下限でも同様に作りたいため、「条件を複製」をクリックします。

同じ条件が複製されたため、条件をクリックします。

条件には以下のように設定します。

  • 演算子: より大きい
  • 対象: 列
  • 列: 管理限界_上限

新しい値には文字を選び「範囲外_下限」と指定します。

デフォルトには文字を選んで「範囲内」と指定をします。

新しく列を作成にチェックをつけ、列名を「管理限界_フラグ」と指定して実行します。

これによって管理限界の範囲を超えているかどうかをフラグ付けすることができました。

列名から「i」のボタンをクリックすることで、それぞれのタイプで何件含まれているかが確認できました。

最終的には、以下のようにピボットテーブルで表示していくことで、それぞれの週で管理限界の範囲外を超えている国はどこかを調べていくことができるようになります。

管理限界を超えているものだけにしたい場合には、チャートのフィルタにて「範囲内」と「等しくない」といった条件を実行することで可能です。

ビデオ

参考情報

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio