Wallenius hypergeometric distribution
Hi all, new (potential) contributor here! I'm working on a project using Wallenius' non-central hypergeometric distribution atm and noticed it's not yet available in scipy.stats, so thought I'd volunteer to add it. Could possibly also do Fisher's hypergeom while I'm at it. Anything I ought to know before just writing some code and making a pull request? How can I best help? Thanks! Harry
Funny that you should mention this now! On Tuesday we got permission from Agner Fog to use his C++ implementation (used in the R package BiasedUrn, https://cran.r-project.org/web/packages/BiasedUrn/index.html) under SciPy's license. Would you be interested in wrapping a C++ implementation? On Fri, Jul 24, 2020, 2:53 AM Harry Gulliver <gulliver.harry@gmail.com> wrote:
Hi all, new (potential) contributor here!
I'm working on a project using Wallenius' non-central hypergeometric distribution atm and noticed it's not yet available in scipy.stats, so thought I'd volunteer to add it. Could possibly also do Fisher's hypergeom while I'm at it.
Anything I ought to know before just writing some code and making a pull request? How can I best help?
Thanks! Harry _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
Hi Team, Here's the noncentral hypergeometric distribution code we have permission to distribute under the BSD license: https://www.agner.org/random/stocc.zip Ralf suggested I send it around to see if there are any opinions about using it. It doesn't include two files that are needed to build it (mersenne.cpp and userintf.cpp), but we want to replace those anyway. In the meantime, you can find those files here <https://www.agner.org/random/randomc.zip>. Alternatively, you can check out my branch: https://github.com/mdhaber/scipy/tree/nchg in which I've started a wrapper for Fisher's noncental hypergeometric distribution. Everything we'd be using is in scipy/stats/biasedurn <https://github.com/mdhaber/scipy/tree/nchg/scipy/stats/biasedurn>. The Cython files are BiasedUrn.pxd <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/BiasedUrn.pxd> and biasedurn.pyx <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/biasedurn.pyx>. After building, this should work: from scipy.stats.biasedurn import _PyFishersNCHypergeometric as PyFishersNCHypergeometric n, m, N, odds, accuracy = 8, 25, 50, 5, 1e-8 py_fnch = PyFishersNCHypergeometric(n, m, N, odds, accuracy) print(py_fnch.mode()) print(py_fnch.mean()) print(py_fnch.variance()) print(py_fnch.probability(7)) print(py_fnch.moments()) (Of course, we still need to add it to stats as a proper distribution.) Thanks for your thoughts! Matt On Fri, Jul 24, 2020 at 7:54 AM Matt Haberland <mhaberla@calpoly.edu> wrote:
Funny that you should mention this now! On Tuesday we got permission from Agner Fog to use his C++ implementation (used in the R package BiasedUrn, https://cran.r-project.org/web/packages/BiasedUrn/index.html) under SciPy's license. Would you be interested in wrapping a C++ implementation?
On Fri, Jul 24, 2020, 2:53 AM Harry Gulliver <gulliver.harry@gmail.com> wrote:
Hi all, new (potential) contributor here!
I'm working on a project using Wallenius' non-central hypergeometric distribution atm and noticed it's not yet available in scipy.stats, so thought I'd volunteer to add it. Could possibly also do Fisher's hypergeom while I'm at it.
Anything I ought to know before just writing some code and making a pull request? How can I best help?
Thanks! Harry _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Professor BioResource and Agricultural Engineering 08A-3K, Cal Poly
Does it need to carry its own Mersenne Twister implementation? Mixing different random streams is prone to surprises, can the scipy version rely on numpy.random instead? вс, 9 авг. 2020 г., 23:26 Matt Haberland <mhaberla@calpoly.edu>:
Hi Team,
Here's the noncentral hypergeometric distribution code we have permission to distribute under the BSD license: https://www.agner.org/random/stocc.zip Ralf suggested I send it around to see if there are any opinions about using it.
It doesn't include two files that are needed to build it (mersenne.cpp and userintf.cpp), but we want to replace those anyway. In the meantime, you can find those files here <https://www.agner.org/random/randomc.zip>.
Alternatively, you can check out my branch: https://github.com/mdhaber/scipy/tree/nchg in which I've started a wrapper for Fisher's noncental hypergeometric distribution. Everything we'd be using is in scipy/stats/biasedurn <https://github.com/mdhaber/scipy/tree/nchg/scipy/stats/biasedurn>. The Cython files are BiasedUrn.pxd <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/BiasedUrn.pxd> and biasedurn.pyx <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/biasedurn.pyx>.
After building, this should work: from scipy.stats.biasedurn import _PyFishersNCHypergeometric as PyFishersNCHypergeometric n, m, N, odds, accuracy = 8, 25, 50, 5, 1e-8 py_fnch = PyFishersNCHypergeometric(n, m, N, odds, accuracy) print(py_fnch.mode()) print(py_fnch.mean()) print(py_fnch.variance()) print(py_fnch.probability(7)) print(py_fnch.moments()) (Of course, we still need to add it to stats as a proper distribution.)
Thanks for your thoughts! Matt
On Fri, Jul 24, 2020 at 7:54 AM Matt Haberland <mhaberla@calpoly.edu> wrote:
Funny that you should mention this now! On Tuesday we got permission from Agner Fog to use his C++ implementation (used in the R package BiasedUrn, https://cran.r-project.org/web/packages/BiasedUrn/index.html) under SciPy's license. Would you be interested in wrapping a C++ implementation?
On Fri, Jul 24, 2020, 2:53 AM Harry Gulliver <gulliver.harry@gmail.com> wrote:
Hi all, new (potential) contributor here!
I'm working on a project using Wallenius' non-central hypergeometric distribution atm and noticed it's not yet available in scipy.stats, so thought I'd volunteer to add it. Could possibly also do Fisher's hypergeom while I'm at it.
Anything I ought to know before just writing some code and making a pull request? How can I best help?
Thanks! Harry _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Professor BioResource and Agricultural Engineering 08A-3K, Cal Poly _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
No, it can use NumPy's `Generator` and `RandomState` like all other distributions. I have already eliminated dependency on mersenne.cpp locally. On Mon, Aug 10, 2020, 5:00 AM Evgeni Burovski <evgeny.burovskiy@gmail.com> wrote:
Does it need to carry its own Mersenne Twister implementation? Mixing different random streams is prone to surprises, can the scipy version rely on numpy.random instead?
вс, 9 авг. 2020 г., 23:26 Matt Haberland <mhaberla@calpoly.edu>:
Hi Team,
Here's the noncentral hypergeometric distribution code we have permission to distribute under the BSD license: https://www.agner.org/random/stocc.zip Ralf suggested I send it around to see if there are any opinions about using it.
It doesn't include two files that are needed to build it (mersenne.cpp and userintf.cpp), but we want to replace those anyway. In the meantime, you can find those files here <https://www.agner.org/random/randomc.zip>.
Alternatively, you can check out my branch: https://github.com/mdhaber/scipy/tree/nchg in which I've started a wrapper for Fisher's noncental hypergeometric distribution. Everything we'd be using is in scipy/stats/biasedurn <https://github.com/mdhaber/scipy/tree/nchg/scipy/stats/biasedurn>. The Cython files are BiasedUrn.pxd <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/BiasedUrn.pxd> and biasedurn.pyx <https://github.com/mdhaber/scipy/blob/nchg/scipy/stats/biasedurn.pyx>.
After building, this should work: from scipy.stats.biasedurn import _PyFishersNCHypergeometric as PyFishersNCHypergeometric n, m, N, odds, accuracy = 8, 25, 50, 5, 1e-8 py_fnch = PyFishersNCHypergeometric(n, m, N, odds, accuracy) print(py_fnch.mode()) print(py_fnch.mean()) print(py_fnch.variance()) print(py_fnch.probability(7)) print(py_fnch.moments()) (Of course, we still need to add it to stats as a proper distribution.)
Thanks for your thoughts! Matt
On Fri, Jul 24, 2020 at 7:54 AM Matt Haberland <mhaberla@calpoly.edu> wrote:
Funny that you should mention this now! On Tuesday we got permission from Agner Fog to use his C++ implementation (used in the R package BiasedUrn, https://cran.r-project.org/web/packages/BiasedUrn/index.html) under SciPy's license. Would you be interested in wrapping a C++ implementation?
On Fri, Jul 24, 2020, 2:53 AM Harry Gulliver <gulliver.harry@gmail.com> wrote:
Hi all, new (potential) contributor here!
I'm working on a project using Wallenius' non-central hypergeometric distribution atm and noticed it's not yet available in scipy.stats, so thought I'd volunteer to add it. Could possibly also do Fisher's hypergeom while I'm at it.
Anything I ought to know before just writing some code and making a pull request? How can I best help?
Thanks! Harry _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
-- Matt Haberland Assistant Professor BioResource and Agricultural Engineering 08A-3K, Cal Poly _______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
_______________________________________________ SciPy-Dev mailing list SciPy-Dev@python.org https://mail.python.org/mailman/listinfo/scipy-dev
participants (3)
-
Evgeni Burovski -
Harry Gulliver -
Matt Haberland