[ 
https://issues.apache.org/jira/browse/MATH-1153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14249116#comment-14249116
 ] 

Phil Steitz edited comment on MATH-1153 at 12/17/14 5:36 PM:
-------------------------------------------------------------

The RandomDataGenerator test failure is due to the fact that after the patch, 
the Beta distribution sample() method no longer uses the default 
inversion-based method provided by AbstractRealDistribution.  Either the test 
should be dropped, or it should be modified to use a distribution that uses 
inversion-based sampling, which to prevent this happening again should be a 
concrete dist class defined just for this test.  I think the test should be 
dropped.  It was introduced before sampling moved to the distributions and is 
really a test of inversion-based sampling.  If we really want to keep a test of 
the inversion algorithm, it should probably move to 
AbstractRealDistributionTest.  I would be +1 for just dropping it.

The homogeneity test failures are more problematic, as the need to be careful 
with the PRNG seeds may indicate that the generated values do not follow the 
target distribution.  We should investigate using different parameter values 
and sample sizes and also add some Chisquare tests using the TestUtils method 
with a larger number of bins than what the superclass test uses.  If these 
fail, we might be able to see systematic bias in the reported bin failures.




was (Author: psteitz):
The test failure is due to the fact that after the patch, the Beta distribution 
sample() method no longer uses the default inversion-based method provided by 
AbstractRealDistribution.  Either the test should be dropped, or it should be 
modified to use a distribution that uses inversion-based sampling, which to 
prevent this happening again should be a concrete dist class defined just for 
this test.  I think the test should be dropped.  It was introduced before 
sampling moved to the distributions and is really a test of inversion-based 
sampling.  If we really want to keep a test of the inversion algorithm, it 
should probably move to AbstractRealDistributionTest.  I would be +1 for just 
dropping it.

> Sampling from a 'BetaDistribution' is slow
> ------------------------------------------
>
>                 Key: MATH-1153
>                 URL: https://issues.apache.org/jira/browse/MATH-1153
>             Project: Commons Math
>          Issue Type: Improvement
>            Reporter: Sergei Lebedev
>            Priority: Minor
>             Fix For: 3.4
>
>         Attachments: ChengBetaSampler.java, ChengBetaSamplerTest.java
>
>
> Currently the `BetaDistribution#sample` uses inverse CDF method, which is 
> quite slow for sampling-intensive computations. I've implemented a method 
> from the R. C. H. Cheng paper and it seems to work much better. Here's a 
> simple microbenchmark:
> {code}
> o.j.b.s.SamplingBenchmark.algorithmBCorBB       1e-3    1000  thrpt        5  
> 2592200.015    14391.520  ops/s
> o.j.b.s.SamplingBenchmark.algorithmBCorBB       1000    1000  thrpt        5  
> 3210800.292    33330.791  ops/s
> o.j.b.s.SamplingBenchmark.commonsVersion        1e-3    1000  thrpt        5  
>   31034.225      438.273  ops/s
> o.j.b.s.SamplingBenchmark.commonsVersion        1000    1000  thrpt        5  
>   21834.010      433.324  ops/s
> {code}
> Should I submit a patch?
> R. C. H. Cheng (1978). Generating beta variates with nonintegral shape 
> parameters. Communications of the ACM, 21, 317–322.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to