[Numpy-discussion] Addition of new distributions: Polya-gamma

2020-12-27 Thread Zolisa Bleki
Hi All,

I would like to know if Numpy accepts addition of new distributions since the 
implementation of the Generator interface. If so, what is the criteria for a 
particular distribution to be accepted? The reason why i'm asking is because I 
would like to propose adding the Polya-gamma distribution to numpy, for the 
following reasons:

1) Polya-gamma random variables are commonly used as auxiliary variables during 
data augmentation in Bayesian sampling algorithms, which have wide-spread usage 
in Statistics and recently, Machine learning.
2) Since this distribution is mostly useful for random sampling, it since 
appropriate to have it in numpy and not projects like scipy [1].
3) The only python/C++ implementation of the sampler available is licensed 
under GPLv3 which I believe limits copying into packages that choose to use a 
different license [2].
4) Numpy's random API makes adding the distribution painless.

I have done preliminary work on this by implementing the distribution sampler 
as decribed in [3]; see: 
https://github.com/numpy/numpy/compare/master...zoj613:polyagamma .
There is a more efficient sampling algorithm described in a later paper [4], 
but I chose not to start with that one unless I know it is worth investing time 
in.

I would appreciate your thoughts on this proposal.

Regards,
Zolisa


Refs:
[1] https://github.com/scipy/scipy/issues/11009
[2] https://github.com/slinderman/pypolyagamma
[3] https://arxiv.org/pdf/1205.0310v1.pdf
[4] https://arxiv.org/pdf/1405.0506.pdf



Disclaimer - University of Cape Town This email is subject to UCT policies and 
email disclaimer published on our website at 
http://www.uct.ac.za/main/email-disclaimer or obtainable from +27 21 650 9111. 
If this email is not related to the business of UCT, it is sent by the sender 
in an individual capacity. Please report security incidents or abuse via 
https://csirt.uct.ac.za/page/report-an-incident.php.
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Addition of new distributions: Polya-gamma

2020-12-27 Thread Tom Swirly
I'm just a lurker, but I spent a minute or two to look at that commit,
which looks to be high quality.  While I personally have not used this
distribution, people I know use it all the time (for ML).


A quibble:

#define NPY_PI 3.141592653589793238462643383279502884 /* pi */

and the following defines which appear
in numpy/random/src/distributions/random_polyagamma.c are already defined
in numpy/core/include/numpy/npy_math.h

Probably it would be better to include that file instead, if it isn't
already included.


DISCLAIMER: I checked none of the math other than passing my eyes over it.



On Sun, Dec 27, 2020 at 12:05 PM Zolisa Bleki  wrote:

> Hi All,
>
> I would like to know if Numpy accepts addition of new distributions since
> the implementation of the Generator interface. If so, what is the criteria
> for a particular distribution to be accepted? The reason why i'm asking is
> because I would like to propose adding the Polya-gamma distribution to
> numpy, for the following reasons:
>
> 1) Polya-gamma random variables are commonly used as auxiliary variables
> during data augmentation in Bayesian sampling algorithms, which have
> wide-spread usage in Statistics and recently, Machine learning.
> 2) Since this distribution is mostly useful for random sampling, it since
> appropriate to have it in numpy and not projects like scipy [1].
> 3) The only python/C++ implementation of the sampler available is licensed
> under GPLv3 which I believe limits copying into packages that choose to use
> a different license [2].
> 4) Numpy's random API makes adding the distribution painless.
>
> I have done preliminary work on this by implementing the distribution
> sampler as decribed in [3]; see:
> https://github.com/numpy/numpy/compare/master...zoj613:polyagamma .
> There is a more efficient sampling algorithm described in a later paper
> [4], but I chose not to start with that one unless I know it is worth
> investing time in.
>
> I would appreciate your thoughts on this proposal.
>
> Regards,
> Zolisa
>
>
> Refs:
> [1] https://github.com/scipy/scipy/issues/11009
> [2] https://github.com/slinderman/pypolyagamma
> [3] https://arxiv.org/pdf/1205.0310v1.pdf
> [4] https://arxiv.org/pdf/1405.0506.pdf
>
>
>
> Disclaimer - University of Cape Town This email is subject to UCT policies
> and email disclaimer published on our website at
> http://www.uct.ac.za/main/email-disclaimer or obtainable from +27 21 650
> 9111. If this email is not related to the business of UCT, it is sent by
> the sender in an individual capacity. Please report security incidents or
> abuse via https://csirt.uct.ac.za/page/report-an-incident.php.
> ___
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>


-- 
 /t

PGP Key: https://flowcrypt.com/pub/tom.ritchf...@gmail.com
*https://tom.ritchford.com *
*https://tom.swirly.com *
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] Addition of new distributions: Polya-gamma

2020-12-27 Thread Stephan Hoyer
Thanks for putting together this clean implementation!

My concern is that Polya-Gamma is not popular enough to warrant inclusion
in NumPy, which tries very hard to limit scope these days. For example,
Polya-Gamma isn’t implemented in scioy.stats and doesn’t have a Wikipedia
page, both of which are generally much more inclusive than NumPy.

On Sun, Dec 27, 2020 at 3:29 AM Tom Swirly  wrote:

> I'm just a lurker, but I spent a minute or two to look at that commit,
> which looks to be high quality.  While I personally have not used this
> distribution, people I know use it all the time (for ML).
>
>
> A quibble:
>
> #define NPY_PI 3.141592653589793238462643383279502884 /* pi */
>
> and the following defines which appear
> in numpy/random/src/distributions/random_polyagamma.c are already defined
> in numpy/core/include/numpy/npy_math.h
>
> Probably it would be better to include that file instead, if it isn't
> already included.
>
>
> DISCLAIMER: I checked none of the math other than passing my eyes over it.
>
>
>
> On Sun, Dec 27, 2020 at 12:05 PM Zolisa Bleki 
> wrote:
>
>> Hi All,
>>
>> I would like to know if Numpy accepts addition of new distributions since
>> the implementation of the Generator interface. If so, what is the criteria
>> for a particular distribution to be accepted? The reason why i'm asking is
>> because I would like to propose adding the Polya-gamma distribution to
>> numpy, for the following reasons:
>>
>> 1) Polya-gamma random variables are commonly used as auxiliary variables
>> during data augmentation in Bayesian sampling algorithms, which have
>> wide-spread usage in Statistics and recently, Machine learning.
>> 2) Since this distribution is mostly useful for random sampling, it since
>> appropriate to have it in numpy and not projects like scipy [1].
>> 3) The only python/C++ implementation of the sampler available is
>> licensed under GPLv3 which I believe limits copying into packages that
>> choose to use a different license [2].
>> 4) Numpy's random API makes adding the distribution painless.
>>
>> I have done preliminary work on this by implementing the distribution
>> sampler as decribed in [3]; see:
>> https://github.com/numpy/numpy/compare/master...zoj613:polyagamma .
>> There is a more efficient sampling algorithm described in a later paper
>> [4], but I chose not to start with that one unless I know it is worth
>> investing time in.
>>
>> I would appreciate your thoughts on this proposal.
>>
>> Regards,
>> Zolisa
>>
>>
>> Refs:
>> [1] https://github.com/scipy/scipy/issues/11009
>> [2] https://github.com/slinderman/pypolyagamma
>> [3] https://arxiv.org/pdf/1205.0310v1.pdf
>> [4] https://arxiv.org/pdf/1405.0506.pdf
>>
>>
>>
>> Disclaimer - University of Cape Town This email is subject to UCT
>> policies and email disclaimer published on our website at
>> http://www.uct.ac.za/main/email-disclaimer or obtainable from +27 21 650
>> 9111. If this email is not related to the business of UCT, it is sent by
>> the sender in an individual capacity. Please report security incidents or
>> abuse via https://csirt.uct.ac.za/page/report-an-incident.php.
>> ___
>> NumPy-Discussion mailing list
>> NumPy-Discussion@python.org
>> https://mail.python.org/mailman/listinfo/numpy-discussion
>>
>
>
> --
>  /t
>
> PGP Key: https://flowcrypt.com/pub/tom.ritchf...@gmail.com
> *https://tom.ritchford.com *
> *https://tom.swirly.com *
>
>
> ___
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion