第165回: 「統計の実務」25 管理図《その3: XmR管理図》
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「管理図《その2: Xbar-R管理図》」と題して、抜き取り検査で定番の管理図である「Xbar-R管理図」について書きました。
内容は、食パン製造工程の抜き取り検査を例に、Xbar-R管理図の描き方についてでした。
サンプリング数が多い時にはレンジ(R:最大値ー最小値)ではなく標準偏差(s)を使うことも書きました。(Xbar-s管理図、、、sは大文字表記のこともあります。JIS Z 9020では小文字でした)
ところで、ソフトウェアの開発は製造工程ではありませんので抜き取り検査はしません。
そこで、今回は、ソフトウェアの開発プロセス管理でも使いやすい「XmR管理図」について説明します。小池さん、小室さん、野中誠先生の『データ指向のソフトウェア品質マネジメント』(通称『小池さんのデート本』)にも載っている管理図です。
※ XmR管理図とX-Rs管理図は、たぶん同じものです。(確証は得られなかったし、何で違う名前で呼んでいるか見つからなかったので“たぶん”ですが)
≡ 何故Xbar-R管理図ではだめなのか?
書籍等では、この話を飛ばして「どの管理図を選択したらよいか」から始まることが多いのですが、私はここで躓いたので書いておきます。
管理図の種類については、こちらのページが分かりやすいです。ツールを使うことが前提なら、ツールのメニューで管理図の種類を選べれば問題無いので、それで十分と思います。
でも、Excelの方が簡単に色々な人に使ってもらえますので、自分で管理図を作れるように、管理図に多くの種類がある理由が分かることも大切と思います。
ちなみに、SQuBOK V3での管理図の説明は、以下が全てです。
管理図【工程の管理】
工程管理や工程での問題の解析,群内変動と群間変動を見るなどの目的のために用いる。
横軸に時系列をとった折れ線グラフに管理限界線を引いた図で,計数値を対象とした管理図にはp管理図やu管理図などがある。
「群内変動」とは、前回の食パン工場の例で言えば、「一度に抜き取る数個の食パン群の重さのバラツキ」のことですので、Xbar-R管理図の下に描いたR管理図にプロットした値(群内の「最大値-最小値」)のことです。
「群間変動」はXbar管理図の方(それぞれの群の値の平均値をプロットしたグラフの値の変化)のことです。
次に、「管理限界線」ですが、キャッチイメージの緑色の点線のことです。今回は後の方でチラッと出てきます。解説は次回以降を予定しています。
前回の食パン工場のような場合は、管理限界線(の位置/引き方)が「第一種過誤」を減らすという大きな役割を持つので超重要です。
また、そこがシューハート博士の研究のキモなのですが、ソフトウェア開発ではそれほど有効ではないと思うので、ついつい先送りにしてしまいます。
SQuBOKの説明の最後にある、「計数値を対象とした管理図にはp管理図やu管理図などがある」は、「ソフトウェア開発の場合は、重さや長さといった計量値ではなく、バグ数とか行数といった、1つ2つと数えられる計数値が管理対象となるから、そういうときには、計数値を管理対象とするp管理図やu管理図の使用を検討してね」ということです。(これらの管理図については、次回のテーマです)
SQuBOKでも、見出しに書いた「何故Xbar-R管理図ではだめなの?」のの説明が飛ばされているでしょ!?
SQuBOKをdisっているわけではありません。🙇♂️
「200文字程度でソフトウェアの技術者に管理図を説明しなさい」といわれたときの文と考えたら完璧です。
「ソフトウェアのプロセス管理のときには、どうしてXbar-R管理図ではだめなの?」の話に戻ります。一番わかりやすいのは、「1回に1つのデータしか計測しないことがほとんどだから」です。
また、「1回に複数のデータを計測し、群をもつ場合であっても、群間の変動を見たいことは滅多にないから」でもあります。
ひとつひとつ見ていきます。まず、「1回に1つのデータしか計測しないことがほとんど」ですが、例えば、「レビュー会での指摘件数」を測定してレビューが上手くいっていることを管理したいとします。しかしながら、同じレビュー対象物に対して通常は複数回 同じようにレビューすることはありません。
レビュー対象物を小さく分けて、かつ、複数人でレビューすることはあります。
各回のレビュー後にレビューアが集まって見つけた欠陥や、見つけ方の情報を交換し合うのは、効果的なレビューの方法です。
けれども、それをXbar-R管理図にして、各回のレビュー指摘件数の平均値を取ってプロットするのは疑問です。何をグラフにしているのか? グラフの意味を考えた方が良いです。
レビュー指摘件数の管理図で管理したいものは、アジャイル開発であれば、スプリントで毎回実施する仕様書レビューにおける指摘件数の変動(変化)です。
簡単に言えば、「いつもは10ページで30件くらいの指摘なのに、今回は200件も指摘があった。なんかおかしくね?」ということを管理図で見つけます。
もっともこんなに極端なら、レビュー記録に残しておくだけで十分で、管理図を描くまでもありませんが。😅
仕様書の分量の違いを考慮して、「指摘密度=指摘件数/ページ数」を管理図で管理したいのなら、次回に説明するu管理図にプロットするのが本道です。
でも、……プロセスが安定するまで……少なくとも最初の5データくらいまで……はXmR管理図の方が良いです。
次に、「1回に複数のデータを計測し、群をもつ場合であっても、群間の変動を見たいことは滅多にない」についてです。
例えば、パフォーマンステストの時に複数回測定して平均の値を評価することがあります。
「毎分10ページ出力する」という性能がカタログに書いてあるプリンターに対して、複数回、10ページの文書をプリントしてストップウォッチでプリント時間を計測して、平均値を取る(1分かかっていないことを確認する)といったテストをします。
でも、このテストを食パン工場のように1時間ごとに繰り返し行うということはしません。それは、「群間変動を起こすような『特殊原因』はソフトウェアのバージョンが上がった等のときにしかない」ことを知っているからです。
ところで、1つのデータしか測らないということは、Xbar-R管理図のR管理図が必要とする「最大値ー最小値」のレンジ幅を計算できないという問題もあります。
前回の“おわりに”で、「Xbar-R管理図は、ソフトウェア開発のときにはほとんど使いません」と書いたのはこれらの理由からです。
≡ XmR管理図
このようなときに、使っていただきたい管理図が、今回のテーマのXmR管理図です。
Xbar-R管理図のように、ハイフンが無いので切れ目が分かりにくいのですが、XmR管理図は「X管理図」と「mR管理図」の合体版です。
「Me-R管理図」という管理図もありますので、紛らわしいって思うかも、、、。
「Me-R管理図」はXbarのように平均値を使うのではなく、中央値(Median)を使うものです。中央値ならサンプリング数を3つとか5つにしておけば、真ん中の値を選べば良いだけです。
(特に生産現場では)平均値を計算する手間が不要となることは、電卓すらなかった時代は大きなメリットでした。実際、サンプリング数は5を取ることが多い(3だと異常値が出たときに残りのデータが2つだけになってしまい、統計的に“これで良いの?”となってしまいますし、7個もサンプリングするのは大変だから)ですから、とても便利だったのだと思います。
しかし、異常を発見する力は劣りますので、パソコンが普及した今となっては、「Me-R管理図」を使うことはほとんどないかもしれません。
(QC検定の問題くらい?)
まずは、XmR管理図の実物をみてみましょう。

ファイルも置いておきます。
こちらは、私の直近10回分の“上の血圧”(収縮期血圧)の管理図です。朝と晩に測っているため、山・谷になっています。
時系列(t1〜t10)でプロットするのは、全ての管理図において共通のルールです。
管理図が2段になっているのは、Xbar-R管理図と同じです。
上段のXbar管理図(一度にサンプリングした群の平均値の管理図)が、X管理図(1つしか測定値がないのでXbarより簡単)に対応します。
また、下段のR管理図(群内のレンジ(最大値-最小値))がmR管理図に対応します。
下段のmR管理図ですが、毎回1つの値しかないため、群のレンジ(最大値-最小値)は計算できません。そこで「moving Range」(mR:移動幅)を使っています。
「moving Range」とは、前回の測定値との差分の絶対値のことです。1回目のmRが空欄なのは、前回が無いためです。絶対値なのは、増減よりも変動を見たいからです。
オレンジ色は平均値のラインです。(色は見やすいように好きな色で構いません)
そして、緑色の点線は上方管理限界線(UCL: Upper Control Limit)と下方管理限界線(LCL: Lower Control Limit)です。それぞれ、3シグマ法の「平均値±3σ」で求めています。
本当は、野中先生の以下のツイートの式(係数法:係数による方法)の方がベターです。では、なぜそうしていないのかは、次回以降になりますが、管理限界線(雰囲気で分かると思いますがこのラインを超えたら異常事態発生という線)の話のところに書きます。
上記のUCL値の違いですが、
3シグマ法: 116.1 + 3 * 8.25 = 140.9
係数法: 116.1 + 2.66 * 10.2 = 143.2
です。
「なーんだ、ほとんど変わらないんじゃん」って思われた方、ヌカ喜びかもしれません。
今回は、以前確認した通り“血圧の値は正規分布”なのでほとんど変わらない結果になっています。
それで、正規分布でないデータの時には、係数法の方を使うと良いです。逆に言うと係数法を使っている分にはいつでもOKですが、3シグマ法を使う時には、UCLを計算するときに使う“標準偏差を求めた元データ”が正規分布になっているかどうかを確認すると良いです。
XmR管理図は、STDEVの標準偏差ではなく、moving Range の平均を用います。UCLは、xの平均 + 2.66 * mRの平均、で求めます。この資料がオススメです[pdf] http://t.co/bxAssr0w “@gxxyan: 2.3節…なぜ違った値なのか…”
— 野中 誠 (@MakotoNonaka) October 8, 2012
野中先生のツイートにあるリンク先の資料ですが、本当に良い資料なので、英語が苦手な方も、DeepLにpdfをドラッグ&ドロップして翻訳して読むことをおすすめします。前回と今回の話(と管理限界の話)がより丁寧に詳しく書いてあります。
ほんと、ここまで、丁寧に書かれているのを見ると、頭が下がります。
丁寧な説明と、それが理解できたことを確認する演習問題まで付いていて、偉いなあ。
面倒くさがりの私にはできないことなので尊敬します。
≡ おわりに
今回は、「XmR管理図」の話でした。
前回のXbar-R管理図よりも簡単に作れます。
XmRは汎用性が高いので、管理図を初めて描くときには、XmR管理図を使うことをお勧めします。(計量値、計数値どちらでもいけます)
例えば、「レビュー指摘密度」ですが、「指摘件数は計数値で、管理対象の指摘密度は指摘件数をページ数で割っているから、u管理図を使う」というのはセオリー通りではあるのですが、プロセスが不安定なうちにu管理図を使うと第一種過誤が増えるので「管理図嫌い」が生まれてしまうかもしれません。
次回は、「管理図」の4回目として、「プンプク」について説明します。QC検定3級の山場?
そうか。プンプクって覚えればいいのか。
— あきやま🌱 (@akiyama924) February 23, 2022
計数値(数えられるもの)の管理図の名前。
バグ数の管理は、一般的にはuです。 https://t.co/ovyMzS1l9R
管理対象によって管理図の種類を選ぶといいよーって話です。(プンプクの4つは、すべて計数値用の管理図です)
