2024-05-19 00:00:11 发布
网友
我一直在使用statsmodels.distributions的经验累积分布函数(ECDF)来绘制一些数据的CDF。然而,ECDF使用了一个step函数,因此我得到了看起来参差不齐的图。
所以我的问题是:scipy或statsmodels是否有一个不带step函数的ECDF?
顺便说一下,我知道我能做到:
hist, bin_edges = histogram(b_oz, normed=True) plot(np.cumsum(hist))
但我没有正确的尺度。
谢谢!
如果只想更改绘图,则可以让matplotlib在观察到的值之间进行插值。
>>> xx = np.random.randn(nobs) >>> ecdf = sm.distributions.ECDF(xx) >>> plt.plot(ecdf.x, ecdf.y) [<matplotlib.lines.Line2D object at 0x07A872D0>] >>> plt.show()
或对原始数据排序并绘图
>>> xx.sort() >>> plt.plot(xx, ecdf(xx)) [<matplotlib.lines.Line2D object at 0x07A87090>] >>> plt.show()
这和直接绘制是一样的
>>> a=0; plt.plot(xx, np.arange(1.,nobs+1)/(nobs+a)) [<matplotlib.lines.Line2D object at 0x07A87D30>] >>> plt.show()
注意:根据您希望ecdf在边界处的行为方式以及它将如何居中,对于“打印位置”有不同的规范化是常用的,例如我作为示例a=1添加的参数a是常用的选择。
a
作为使用经验cdf的替代方法,还可以使用插值或平滑的ecdf或直方图,或核密度估计。
如果只想更改绘图,则可以让matplotlib在观察到的值之间进行插值。
或对原始数据排序并绘图
这和直接绘制是一样的
注意:根据您希望ecdf在边界处的行为方式以及它将如何居中,对于“打印位置”有不同的规范化是常用的,例如我作为示例a=1添加的参数
a
是常用的选择。作为使用经验cdf的替代方法,还可以使用插值或平滑的ecdf或直方图,或核密度估计。
相关问题 更多 >
编程相关推荐