ใช้ Kernel Density Estimation (KDE) ประมาณ Probability Density ของสองชุดข้อมูล แล้วพล็อตความแตกต่าง
ขั้นตอน
- ตั้งค่าขนาด Figure
- สร้างข้อมูล 2 ชุดจาก Gumbel Distribution
- คำนวณ KDE ด้วย
scipy.stats.gaussian_kde - สร้าง Grid สำหรับประเมินค่า
- Plot KDE ทั้งสองและความแตกต่าง
- เพิ่ม Legend และแสดงผล
ตัวอย่างโค้ด
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# ข้อมูล 2 ชุด: Gumbel Distribution
a = np.random.gumbel(50, 28, 100)
b = np.random.gumbel(60, 37, 100)
# KDE
kdea = scipy.stats.gaussian_kde(a)
kdeb = scipy.stats.gaussian_kde(b)
# Grid สำหรับประเมิน
grid = np.linspace(0, 50, 100)
plt.plot(grid, kdea(grid), label="Kde A")
plt.plot(grid, kdeb(grid), label="Kde B")
plt.plot(grid, kdea(grid) - kdeb(grid), label="Difference")
plt.legend(loc='upper left')
plt.show()
การตีความ
- Kde A, Kde B: Probability Density ของแต่ละ Distribution
- Difference: ความแตกต่าง (A - B) ค่าบวก = A มากกว่า B, ค่าลบ = B มากกว่า A
- พื้นที่ใต้ Curve = 1 (Probability Density)
ตัวเลือก KDE อื่นๆ
# ใช้ Seaborn (ง่ายกว่า)
import seaborn as sns
sns.kdeplot(a, label='A')
sns.kdeplot(b, label='B')
# ปรับ Bandwidth
kde = scipy.stats.gaussian_kde(a, bw_method=0.5)
ผลลัพธ์
กราฟแสดง Curve 3 เส้น: KDE ของ A, KDE ของ B, และความแตกต่าง (Difference) ระหว่างทั้งสอง