Свен показав, як користуватися класом gaussian_kde
від Scipy, але ви помітите, що він не схожий на те, що ви створили з R. Це тому, що gaussian_kde
намагається автоматично провести смугу пропускання. Ви можете грати з пропускною спроможністю таким чином, змінюючи функцію covariance_factor
з gaussian_kde
класу. По-перше, ось що ви отримуєте, не змінюючи цю функцію:
Однак якщо я використовую такий код:
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8
density = gaussian_kde(data)
xs = np.linspace(0,8,200)
density.covariance_factor = lambda : .25
density._compute_covariance()
plt.plot(xs,density(xs))
plt.show()
я отримав
що досить близько до того, що ви отримуєте від Р. Що я зробив? gaussian_kde
використовує змінну функцію covariance_factor
для обчислення її пропускної здатності. Перед зміною функції значення, повернене коваріацією_фактор для цих даних, становило близько .5. Понизивши це, зменшилася пропускна здатність. Мені довелося зателефонувати _compute_covariance
після зміни цієї функції, щоб усі фактори були обчислені правильно. Це не точне відповідність параметру bw від R, але, сподіваємось, це допоможе вам дістатись у правильному напрямку.
seaborn
stackoverflow.com/a/32803224/1922302