我正在尝试在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)