[
https://issues.apache.org/jira/browse/STATISTICS-62?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17686634#comment-17686634
]
Alex Herbert commented on STATISTICS-62:
----------------------------------------
Some items in the API for consideration:
Tests use *with* to change properties that are from an enum. This makes them
self documenting. Tests which accept a primitive argument use withXXX to change
properties. Boolean options have been specified in an enum. This could be
changed, for example withEqualVariances(true/false) in place of the
DataDispersion enum.
A notable outlier is the KolmogorovSmirnovTest which can accept a
UniformRandomProvider but the method is only named *with* and not *withRNG* as
the object type of the argument is quite unique amongst possible options (i.e.
is not a general primitive value).
{code:java}
TTest.withDefaults()
.with(DataDispersion.HOMOSCEDASTIC)
.withMu(1.23)
KolmogorovSmirnovTest.withDefaults()
.with(PValueMethod.ESTIMATE)
.with(RandomSource.create(123){code}
The KolmogorovSmirnovTest is the only test which can use the ESTIMATE p-value
method. This requires a RNG of which there is no default value. The test will
throw an IllegalStateException if you try and use this p-value method without
providing a source of randomness.
> Port o.a.c.math.stat.inference to a commons-statistics-inference module
> -----------------------------------------------------------------------
>
> Key: STATISTICS-62
> URL: https://issues.apache.org/jira/browse/STATISTICS-62
> Project: Commons Statistics
> Issue Type: New Feature
> Components: inference
> Affects Versions: 1.0
> Reporter: Alex Herbert
> Priority: Major
>
> The o.a.c.math4.legacy.stat.inference package contains:
>
> {noformat}
> AlternativeHypothesis.java
> BinomialTest.java
> ChiSquareTest.java
> GTest.java
> InferenceTestUtils.java
> KolmogorovSmirnovTest.java
> MannWhitneyUTest.java
> OneWayAnova.java
> TTest.java
> WilcoxonSignedRankTest.java{noformat}
> The are few dependencies on other math packages. The notable exceptions are:
>
> 1. KolmogorovSmirnovTest which requires matrix support. This is for
> multiplication of a square matrix to support a matrix power function. This
> uses a double matrix and the same code is duplicated for a BigFraction
> matrix. Such code can be ported internally to support only the required
> functions. It can also drop the defensive copy strategy used by Commons Math
> in matrices to allow multiply in-place where appropriate for performance
> gains.
> 2. OneWayAnova which collates the sum, sum of squares and count using
> SummaryStatistics. This can be done using an internal class. It is possible
> to call the test method using already computed SummaryStatistics. The method
> that does this using the SummaryStatistics as part of the API can be dropped,
> or supported using an interface that returns: getSum, getSumOfSquares, getN.
> All the inference Test classes have instance methods but no state. The
> InferenceTestUtils is a static class that holds references to a singleton for
> each class and provides static methods to pass through the underlying
> instances.
> I suggest changing the test classes to have only static methods and dropping
> InferenceTestUtils.
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)