ผล A/B test หรือรีเกรสชันควรแสดงช่วงความเชื่อมั่นควบคู่กับค่าประมาณจุด เพื่อให้ข้อสรุปน่าเชื่อถือ อินเทอร์วัลดอตพล็อตอ่านง่ายและกระชับ
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()

อ่านอย่างไร #
- ความยาวเส้นคือความไม่แน่นอน เส้นสั้นแปลว่าประมาณคงที่กว่า
- เส้นศูนย์ช่วยดูว่าเอฟเฟ็กต์ข้ามจุดเป็นกลางหรือไม่
- ปรับขนาดจุดเพื่อสื่อหนักเบาหรือขนาดข้อมูลได้