- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け
- Nginx受け口
- アプリ処理今ここ
- DB保存
何も変えなくても数字は動きます。今回は、2つの数字から作った「差」がそれ自身どれだけ動くかを見ます。
まず結論
2つの平均の95%区間(信頼区間)が重なっていても、差が無いとは言えません。比べたいのは差そのものであり、差は自分のばらつきを持ちます。
2群が独立なら、差の標準誤差は2つを二乗して足した平方根で、単純な和より小さくなります。区間の重なりで判定すると、差のばらつきを和で見積もることになり、判定が厳しすぎる側にずれます。
乱数の種を固定したシミュレーションで、A の平均 100.23(95%区間 97.47〜102.99)、B の平均 105.49(102.55〜108.43)が出ました。2つの区間は少し重なっています。2群が独立なら、差 B−A の95%区間はどうなるでしょうか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
比べているのは、2つの数ではなく差
2つの平均にそれぞれ95%区間(信頼区間)を付け、重なっていれば「差は無い」と読む。よく見かける判定です。
けれど知りたいのは A と B それぞれの位置ではなく、差 B−A がどれだけ動くかです。差は2つの数から作る新しい数で、自分のばらつきを持ちます。
2群が独立なら、差のばらつき(分散)は A と B のばらつきの足し算になります。引き算なのに足し算になるのは、どちらの揺れも差を揺らすからです。この足し算には独立(厳密には無相関)という条件が要ります。
推定値そのもののばらつき、つまり標準誤差で言い直すと、差の標準誤差は √(sA² + sB²) です。直角三角形の斜辺と同じで、2辺の和 sA + sB より必ず短い。
- ・斜辺は2辺の和より短い。重なりで判定すると差の幅を大きく見積もる
- ・2群が連動している(同じ対象を2回測る)なら、この式は使えない
重なっているのに、差の区間は0を含まない
標準ライブラリだけのシミュレーションです。真の平均 100 と 105、標準偏差 20 の2群から各200件を取り、乱数の種を 7 に固定しました。
seed=7A 100.23 [97.47,102.99] B 105.49 [102.55,108.43] overlap=Truediff 5.27 [1.23,9.30] se_diff=2.06 vs sa+sb=2.91
2行目で、A の上端 102.99 と B の下端 102.55 が 0.44 だけ重なっています。3行目が差の区間 [1.23, 9.30] で、0を含みません。
区間の幅を 3.92 で割ると標準誤差が戻ります。A は 1.41、B は 1.50。差の標準誤差はこれを二乗して足した平方根で 2.06、単純な和は 2.91 です。
和の 2.91 で差の区間を作ると [−0.44, 10.96] になり、0をまたぎます(手計算)。下端の −0.44 は、さきほどの重なり 0.44 とぴったり符号違いです。区間の重なりで判定するとは、差のばらつきを和で見積もることと同じだからです。
A/B テストの報告に「両群の95%区間が重なっているので、差は無いと判断しました」とあります。この判断について言えることはどれですか。
重なる帯と、有意になる帯はずれている
2群の標準誤差が等しく s のときに一般化します(正規近似)。
sig threshold |d|/s > 2.772; overlap iff |d|/s < 3.920'intervals do not overlap' corresponds to |z| > 2.772 -> two-sided p = 0.0056true diff 6, s=2: P(sig)=0.5641 P(overlap | sig)=0.5432
差 d が統計的に有意になるのは d が 2.772s を超えたとき。2つの区間が重ならないのは 3.920s を超えたときです。その間の帯では、区間は重なるのに差は統計的に有意です。
「重ならなければ差あり」を基準にすると、差の区間なら**約99.4%**を使うのと同じになります。95%のつもりで、実際は厳しすぎる判定です。
これは1回の偶然ではありません。真の差 6・標準偏差 20・各群100件の試行を4000回、種を3通りに変えて繰り返すと、統計的に有意になるのは56%前後。そのうち約半数で区間が重なっていました(理論値 54.3%)。
区間を付けずに、1回ずつ比べた例
逆側の失敗もあります。性能分析のレッスン「余力は、待ち時間の購入代金」では、到着率を変えて平均応答を測るスクリプトを2回走らせました。
1回目は到着率を上げるほど平均応答が単調に伸びました。ところが2回目は、最大処理能力の9割の平均が9.5割より大きくなり、大小関係が逆転したのです。
同じレッスンは続けて、これは測定の欠陥ではなく「上限に近い領域では分散が非常に大きく、短い測定では値が安定しない」事実だと書き、数値表をあえて置いていません。ここでも数値は持ち出しません。
この回の見方で読むと、9割と9.5割の差は両方の揺れを受けます。1つずつでも大きく揺れる値の差は、それより大きく揺れます。1回ずつの大小は、差のばらつきを一度も見ていない比較です。順序が入れ替わったのは、その比較が決められないことを示しています。
2群の標準誤差が等しいとき、「95%区間が重ならなければ差あり」という基準は実際には何をしていることになりますか。
区間の重なりで判定した A/B
各群に区間を付けたが、重なりで判定した。差のばらつきを和で見積もるので大きすぎ、統計的に有意な差を「差なし」と読みかける。
見積もり 標準誤差 差の95%区間二乗して足した平方根 2.06 [1.23, 9.30]単純な和(重なり) 2.91 [-0.44, 10.96]
1回ずつの大小で比べた負荷試験
区間を付けず、1回ずつの平均の大小で順序を決めた。上限近くでは各値が大きく揺れ、差はさらに揺れるので、測るたびに順序が入れ替わった。
一方は差を見落としかけ、もう一方は差があるように見えた順序が崩れました。向きが逆の2つの失敗に共通して欠けていたものは何でしょうか。
どちらの例でも、「差そのもの」の幅は計算されていたでしょうか。
この章のまとめ
- 比べたいのは A と B の位置ではなく 差。差は自分のばらつきを持つ。
- 独立なら、差の標準誤差は 二乗して足した平方根。単純な和より小さい。
- seed=7 の例では区間が 0.44 重なるのに、差の区間は [1.23, 9.30] で0を含まない。ただし種を変えると重ならない回も出る。
- 標準誤差が等しいとき、「重ならなければ差あり」は 約99.4%相当の厳しい基準。誤りなのは逆向きの「重なれば差なし」。
- 1回ずつの大小比較は、差のばらつきを見ていないので 順序すら決められない ことがある。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
独立な2群の平均の標準誤差が 1.41 と 1.50 のとき、差の標準誤差に最も近いのはどれですか。
用語集(3語)
- 標準誤差
- 推定値そのもののばらつき(標準偏差)。Kohavi ら(2012)は、n 個の独立な観測の平均なら、推定した標準偏差を √n で割ったものと説明する。95%区間の幅はおよそその 3.92 倍。
- 差の標準誤差
- 2つの推定値の差のばらつき。2群が独立なら、各群の標準誤差を二乗して足した平方根。単純な和より必ず小さい。
- 95%区間(信頼区間)
- 推定値の不確かさを幅で表したもの。2つの区間が重なるかどうかと、差の区間が0を含むかどうかは別の問い。