K_DM Book
用語集
対象者 標準
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

インターバルドットプロットで推定値と不確実性を管理

中級

06.7.21

インターバルドットプロットで推定値と不確実性を管理

最終更新 2020-01-21 読了時間 2 分
まとめ
インターバルドットプロットは、グループごとの推定値を点、その不確実性(信頼区間)を点を貫く水平線で表し、「効果があると言えるか」を区間が基準線 0 を跨ぐかどうかで判定できる図です。棒グラフに誤差バーを付けるより線と点だけの方が、区間の幅と点の位置に目が向きます。matplotlib では ax.hlines(y, low, high) で区間、ax.scatter(effect, y) で点推定、ax.axvline(0, linestyle="--") で基準線を引くだけで完成します。読み終えると、無料会員の改善率 12% ± 5% の区間が 0 を含まないので効果が有意だと読み取り、AB テストや回帰係数の表を同じ形で図にできるようになります。

直感 #

AB テストで「無料会員の改善率は 12%、プレミアム会員は 35%」と点推定だけを報告すると、サンプルが少ないセグメントの大きな数字をそのまま信じることになります。インターバルドットプロットは、各セグメントの点の左右に信頼区間の線を伸ばし、「本当の効果はこの線のどこかにある」と幅で見せます。線が短いほど推定は確かです。長いほど不確かで、線が 0 の基準線を跨いでいれば「効果がないという可能性を否定できない」と読み、この図ではプレミアム会員の区間が最も長い(+9/−8 ポイント)ので、サンプルが少ないか分散が大きいことも同時に伝わります。

Python で描く #

次のコードは 4 セグメントの点推定 effect と、下限 low・上限 high を用意し、hlines で区間、scatter で点推定を描きます。右端に推定値と上下の幅をテキストで添えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import matplotlib.pyplot as plt

segments = ["無料会員", "ライトプラン", "スタンダード", "プレミアム"]
effect = np.array([0.12, 0.18, 0.27, 0.35])
low = effect - np.array([0.05, 0.06, 0.07, 0.08])
high = effect + np.array([0.05, 0.06, 0.07, 0.09])

fig, ax = plt.subplots(figsize=(6.4, 3.6))
ax.hlines(range(len(segments)), low, high, color="#94a3b8", linewidth=3)
ax.scatter(effect, range(len(segments)), color="#0ea5e9", s=90, zorder=3)

ax.axvline(0, color="#475569", linestyle="--", linewidth=1)
ax.set_yticks(range(len(segments)), labels=segments)
ax.set_xlabel("改善率(対照比)")
ax.set_title("施策効果の推定値と90%信頼区間")
ax.set_xlim(-0.05, 0.45)
ax.grid(axis="x", alpha=0.2)

for idx, (eff, lo, hi) in enumerate(zip(effect, low, high)):
    ax.text(hi + 0.01, idx, f"{eff*100:.1f}% (+{(hi - eff)*100:.1f}/-{(eff - lo)*100:.1f})", va="center")

fig.tight_layout()

plt.show()

水平線と点で構成するインターバルドットプロットは読みやすいフォーマットですの図

実行結果の読み方 #

各行の点が改善率の点推定、左右の線が 90% 信頼区間です。線が短い無料会員(±5 ポイント)は推定が安定しています。線が長いプレミアム(+9/−8 ポイント)は不確かさが大きく、4 本の線はいずれも破線の 0 より右側にあるので、どのセグメントでも効果が 0 である可能性は 90% 区間の外にあります。区間どうしが重なっている無料会員とライトプラン(12% と 18%)の差は、重なりが大きい分「2 つの間に差がある」とは言い切れません。

使いどころと落とし穴 #

インターバルドットプロットは、AB テストのセグメント別効果、回帰係数の一覧、調査の平均値比較のように「推定値と不確かさを 3〜15 グループで比べる」場面に向いています。信頼水準(90% か 95% か)とサンプルサイズを図のタイトルか注釈に書かないと、区間の幅の意味が伝わらないので、必ず併記してください。区間が広い行を読者は「大きな効果」と誤読しやすいため、「線が長い = 不確か」であることを注記します。グループが 20 を超えるなら Y 方向に jitter を加えます。メタ分析の文脈では、同じ構造でサンプルサイズを点の大きさに反映させたフォレストプロットが標準の表現です。