python中的加权经验分布函数(ECDF)



我正在尝试在python中生成加权经验CDF。我知道statsmodel.distributions.empirical_distribution提供了ECDF函数,但它是未加权的。有没有一个库我可以使用,或者我如何扩展它来编写一个函数来计算加权ECDF(EWCDF(,就像R中的EWCDF{spatstat}一样。

Seaborn库具有ecdfplot函数,该函数实现了ECDF的加权版本。我研究了seaborn如何计算它的代码

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sample = np.arange(100)
weights = np.random.randint(10, size=100)
estimator = sns.distributions.ECDF('proportion', complementary=True)
stat, vals = estimator(sample, weights=weights)
plt.plot(vals, stat)

Seaborn提供ecdfplot,允许您绘制加权CDF。请参阅seaborn.ecdf。基于deepAgrawal的回答,我对其进行了一点调整,以便绘制的是CDF,而不是1-CDF。

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sample = np.arange(15)
weights = np.random.randint(5, size=15)
df = pd.DataFrame(np.vstack((sample, weights)).T, columns = ['sample', 'weights'])
sns.ecdfplot(data = df, x = 'sample', weights = 'weights', stat = 'proportion', legend = True)

最新更新