On 7/31/12 3:21 PM, Gilles Sadowski wrote:
> On Tue, Jul 31, 2012 at 11:52:07AM -0700, Phil Steitz wrote:
>> On 7/31/12 3:34 AM, Dennis Hendriks wrote:
>>> See answers below.
>>>
>>> On 07/31/2012 12:00 PM, Gilles Sadowski wrote:
>>>> On Tue, Jul 31, 2012 at 08:18:13AM +0200, Dennis Hendriks wrote:
>>>>>> * Why doesn't "KolmogorovSmirnovDistribution" implement one of the
>>>>>>     interfaces of the package (and/or inherit from an abstract
>>>>>> class)?
>>>>> See also:
>>>>> http://apache-commons.680414.n4.nabble.com/math-KolmogorovSmirnovDistribution-not-part-of-the-distribution-hierarchy-td4114395.html
>>>> Thanks for digging that thread out.
>>>> Do I rightly deduce that it is unfinished work, which should give
>>>> rise to a
>>>> JIRA ticket?
>>> That would be my guess.
>> Yep.  Per the tread above, the reason this class exists is to enable
>> Kolmogorov-Smirnov tests, which it pretty much does.  See MATH-437. 
>> I have no idea how to implement the missing distribution methods or
>> if anyone would ever use them if we did, so it may be better to just
>> move this class to .stat.inference, which is what it is really for.
> +1
> Shall we deprecate (in "o.a.c.m.distribution") the whole class then?
> [And move the functionality as you propose.]
>
> Is a JIRA ticket needed for this, or a log message referring to MATH-437 is
> enough?
Honestly, I think reopening MATH-437 is probably best.  I will stop
being worthless and do that ;)
>
>>   Making it package scope there and adding a class with some doco
>> and wrapper methods to make setting up and executing K-S tests would
>> likely be more valuable than trying to fill out the distribution
>> methods.  Of course, if anyone has ideas on how to implement the
>> missing methods, patches are welcome :)
>>>>>> * Why is method "probability(double)" part of the
>>>>>> "RealDistribution"
>>>>>>     interface? [All implementations return 0.]
>>>>> My guess would be that it is left over from when integer and real
>>>>> distributions shared a common hierarchy.
>>>> I would agree with the guess.
>>>> Does everyone agree to deprecate this method (in 3.1) and remove
>>>> it (in
>>>> 4.0)?
>>> +1
>> -0 - Without this, we can't represent non-discrete distributions
>> that assign positive mass to singletons.  Could be no big loss, but
>> in the archives there is discussion of non-continuous distributions,
>> which such a beast would have to be, and I think we agreed that we
>> want to be able to support / represent them.
> Adding support later (when we have at least one implementation of such a
> thing) is always feasible.
> Keeping a useless method is mildly confusing.

Yeah, that is why I said -0, not -1.  On the other hand, adding it
back later would be incompatible change as this is an interface, so
may be best to leave as is.
>
>> We have split
>> distributions into Integer (which really means discrete) and "Real"
>> (which means essentially everything else).  So basically while all
>> currently implemented real distributions have probability(-)
>> identically zero, there are (non-discrete) distributions over the
>> reals that do not have this property and we may want to enable users
>> to represent them.
> I still think that CM is far from stable enough that users would base their
> code on CM's set of interfaces.
> IMO, interfaces should collect shared functionality of actual
> implementations, but there there is currently none for which the one-arg
> "probability" method is not trivial.
>
>> Could be these cases are so non-standard as to
>> not be worth worrying about; but I don't see harm in leaving the
>> method in, so -0 for the deprecation.
> I'd propose that, at least, the method is implemented in
> "AbstractRealDistribution", so that actual (non-exotic) distribution
> classes don't need to provide a useless method.

+1 for that.  Could be a good compromise.
>
>>>>>> * Shouldn't the "cumulativeProbability(double x0, double x1)"
>>>>>> method be
>>>>>>    renamed "probability(double x0, double x1)"?
>>>> Does everyone agree to deprecate this method (in 3.1) and remove
>>>> and replace
>>>> it (in 4.0) with a method named "probability(double x0, double x1)"?
>>> I would prefer to:
>>>  - add new method (3.1)
>>>  - deprecate old method (3.1)
>>>  - move impl to new method (3.1)
>>>  - redirect old method to new method (3.1)
>>>  - remove old method (4.0)
>>>
>>> That way, we can now change our code to use the new method, and
>>> not get any deprecation warnings on use of the old deprecated
>>> method, for which no alternative exists...
>> Sounds like a reasonable approach and +1 for the rename.
> All right; only the addition of the new method in the "RealDistribution"
> interface must be postponed to 4.0.

Yes, but the new method could be added to the implementations in 3.1.

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


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

Reply via email to