Is there a standard function or practice for plotting the CDF of a series? (I am aware of the output of hist.) Thank you, Alan Isaac
On Sep 26, 2007, at 5:09 PM, Alan Isaac wrote: > Is there a standard function or practice for > plotting the CDF of a series? (I am aware > of the output of hist.) Without really knowing what CDF is (I am assuming it is Cumulative Density Fucntion or something similar). I would suggest taking a look at numpy and the histogram and cumsum functions therein. Cheers Tommy
Alan Isaac wrote: > Is there a standard function or practice for > plotting the CDF of a series? (I am aware > of the output of hist.) import numpy as np from matplotlib import pylab x = ... # whatever n = len(x) x2 = np.repeat(x, 2) y2 = np.hstack([0.0, np.repeat(np.arange(1,n) / float(n), 2), 1.0]) pylab.plot(x2, y2) -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
On 2007年9月26日, Robert Kern apparently wrote: > n = len(x) > x2 = np.repeat(x, 2) > y2 = np.hstack([0.0, np.repeat(np.arange(1,n) / float(n), 2), 1.0]) > pylab.plot(x2, y2) OK, that's pretty slick. I did not think about ``repeat``. Thanks, Alan
After thinking it over, I did not go for Robert or David's cool numpy tricks, but I'll append a simple object in case someone else wants to do more. Cheers, Alan Isaac class EmpiricalCDF(object): '''Empirical cdf. First point will be (xmin,0). Last point will be (xmax,1). ''' def __init__(self, data, sortdata=True): if sortdata: data = N.sort(data) self.data = data self.nobs = len(data) def gen_xp(self): data, nobs = self.data, self.nobs prob = N.linspace(0, 1, nobs+1) xsteps = ( data[(idx)//2] for idx in xrange(2*nobs) ) psteps = ( prob[(idx+1)//2] for idx in xrange(2*nobs) ) return xsteps, psteps def get_steps(self): '''Return: 2-tuple of arrays, the data values and corresponding cumulative probabilities. ''' xsteps, psteps = self.gen_xp() return N.fromiter(xsteps,'f'), N.fromiter(psteps,'f')
Hi Alan, There is an empiricalcdf function in scipy/sandbox/dhuard/stats.py It's not fancy but it might do what you want. David 2007年9月26日, Alan Isaac <ai...@am...>: > > Is there a standard function or practice for > plotting the CDF of a series? (I am aware > of the output of hist.) > > Thank you, > Alan Isaac > > > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2005. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users >
On 2007年9月27日, David Huard apparently wrote: > scipy/sandbox/dhuard/stats.py Well, I also did not think of a double application of argsort to rank the observations. Nice. OK, I've got plenty to work with now. Thanks, Alan