from scipy.stats import gaussian_kde
# note: `bw_method`, `weights`, and `factor` are arguments which can be
# specified in seaborn.kdeplot()
def _fit(self, fit_data, weights=None):
"""Fit the scipy kde while adding bw_adjust logic and version check."""
fit_kws = {"bw_method": self.bw_method}
if weights is not None:
fit_kws["weights"] = weights
kde = gaussian_kde(fit_data, **fit_kws)
kde.set_bandwidth(kde.factor * self.bw_adjust)
return kde
def _eval_univariate(self, x, weights):
"""Inner function for ECDF of one variable."""
sorter = x.argsort()
x = x[sorter]
weights = weights[sorter]
y = weights.cumsum()
if self.stat in ["percent", "proportion"]:
y = y / y.max()
if self.stat == "percent":
y = y * 100
x = np.r_[-np.inf, x]
y = np.r_[0, y]
if self.complementary:
y = y.max() - y
return y, x
1条答案
按热度按时间u0njafvf1#
摘要:
seaborn.kdeplot()
和seaborn.ecdfplot()
都不允许您直接访问其图表中拟合的模型曲线。但是,使用下面的链接代码,应该可以通过直接运行底层seaborn代码来复制结果。核密度估计
seaborn
库包含适合_statistics.py
中的KDE的代码。在该脚本中,_fit
方法利用scipy
的实现,如下所示:不幸的是,
_fit()
没有被分配给任何属性,无论是在_statistics.py
还是在distributions.py
中,其中seaborn.kdeplot()
id已定义。因此,**虽然不可能直接从图表中检索拟合的KDE
,但拟合KDE
的代码非常简单,您可以直接使用上面的代码轻松复制拟合曲线。经验累积分布函数(ECDF)
首先,我假设
Empirical Fourier
是指ECDF
。与KDE
类似,统计代码可以在_statistics.py
中找到,seaborn.ecdfplot()
的实现在distributions.py中。和以前一样,我无法在类中识别出任何允许您从图表中检索信息的属性。但是,**和KDE
一样,代码定义应该允许您直接复制经验累积分布函数。**获取ECDF的seaborn
代码如下: