The same approach could certainly be applied for DescriptiveStatistics, but the 
variable window complicates things: if a finite window is selected for the 
aggregate statistics then they will be sensitive to the order in which values 
are added to the contributing per-partition statistics.  That problem exists no 
matter when the aggregation is performed, however, and I guess the order we 
would get is reasonably likely to be the desired one.  Also, the 
removeMostRecentValue() and replaceMostRecentValue() methods are a bit tricky 
if they need to cascade to the aggregate statistics because the most recent 
value for one contributor may not be the most recent value for the aggregate.  
Anyway, I'll prepare an AggregateDescriptiveStatistics along the same line as 
my AggregateSummaryStatistics, and then at least we'll have something concrete 
to discuss.  Shall I post it as an additional patch for MATH-224?

DescriptiveStatistics does provide an opportunity for aggregating after the 
fact that SummaryStatistics doesn't, because each contributing statistic 
remembers (some of) the values provided to it.  On the other hand, users 
already can manually aggregate DescriptiveStatistics objects.  What they cannot 
easily do after the fact is duplicate the overall order in which values were 
added to the set of DescriptiveStatistics, and that is exactly what 
AggregateDescriptiveStatistics will provide.  I think I'm rambling now, so I'll 
stop and write some code.


Regards,

John




________________________________
From: Phil Steitz <phil.ste...@gmail.com>
To: Commons Developers List <dev@commons.apache.org>
Sent: Monday, April 20, 2009 7:01:20 AM
Subject: Re: [math] MATH-224 - need a better idea

Ted Dunning wrote:
> That is a fine answer for some things, but the parallel cases fail.
> 
> My feeling is that there are a few cases where there are nice aggregatable
> summary statistics like moments and there are many cases where this just
> doesn't work well (such as rank statistics). 
Yes, this is why not all statistics are "storeless."  We have another "summary" 
class that maintains its data in storage and supports "rolling" behavior in 
DescriptiveStatistics.  The discussion here is focussed on the "storeless" 
case, which is limited to those stats that are computable in this way.  The 
cases of interest are stats that can be computed in one pass through the data 
but which can't be "aggregated" post hoc.  John's approach provides a simple 
solution to this problem.

For completeness, we should probably similarly implement aggregation in the 
sense defined in MATH-224 for DescriptiveStatistics as well. 
Phil
>  For the latter, case I usually
> make do with a surrogate such as a random sub-sample or a recency weighted
> random sub-sample combined with a few aggregatable stats such as total
> samples, max, min, sum and second moment.  That gives me most of what I want
> and if the sub-sample is reasonably large, I can sometimes estimate a few
> parameters such as total uniques.  The sub-sampled data streams can be
> combined trivially so I now have a aggregatable approximation of
> non-aggregatable statistics.  For descriptive quantiles this is generally
> just fine.
> 
> On Sun, Apr 19, 2009 at 2:44 PM, John Bollinger <thinma...@yahoo.com> wrote:
> 
>  
>> The key would be to generate the aggregate statistics at the same time as
>> the per-partition ones, instead of aggregating them after the fact.
>>    
> 
> 
> 
> 
>  


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org


      

Reply via email to