1 回答
TA贡献1851条经验 获得超3个赞
获得更平滑结果的一种可能性是使用更多样本,通过使用,我得到以下图像:10^5 samples100 bins
ws = norm.rvs(loc=4.0, scale=1.5, size=100000)
density, bins = np.histogram(ws, bins=100, normed=True, density=True)
通常,您可以使用 scipys 插值模块来平滑 CDF。对于和平滑因子我得到:100 sampless=0.01
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import splev, splrep
density1 = unity_density.cumsum()
x = bins[:-1]
y = density1
# Interpolation
spl = splrep(x, y, s=0.01, per=False)
x2 = np.linspace(x[0], x[-1], 200)
y2 = splev(x2, spl)
# Plotting
fig, ax = plt.subplots()
plt.plot(x, density1, 'o')
plt.plot(x2, y2, 'r-')
第三种可能性是分析计算CDF。如果你自己用一个/函数生成噪音,大多数时候已经有可用的实现,否则你应该在维基百科上找到它。如果您的样品来自测量值,那当然是另一回事。numpyscipyCDF
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = np.linspace(-2, 10)
y = norm(loc=4.0, scale=1.5).cdf(x)
ax.plot(x, y, 'bo-')
添加回答
举报