xidulu commented on a change in pull request #17524: add np.random.chisquare
URL: https://github.com/apache/incubator-mxnet/pull/17524#discussion_r375414682
##########
File path: python/mxnet/ndarray/numpy/random.py
##########
@@ -629,6 +629,85 @@ def beta(a, b, size=None, dtype=None, ctx=None):
return out.astype(dtype)
+def chisquare(df, size=None, dtype=None, ctx=None):
+ r"""
+ chisquare(df, size=None, dtype=None, ctx=None)
+
+ Draw samples from a chi-square distribution.
+
+ When `df` independent random variables, each with standard normal
+ distributions (mean 0, variance 1), are squared and summed, the
+ resulting distribution is chi-square (see Notes). This distribution
+ is often used in hypothesis testing.
+
+ Parameters
+ ----------
+ df : float or ndarray of floats
+ Number of degrees of freedom, must be > 0.
+ size : int or tuple of ints, optional
+ Output shape. If the given shape is, e.g., ``(m, n, k)``, then
+ ``m * n * k`` samples are drawn. If size is ``None`` (default),
+ a single value is returned if ``df`` is a scalar. Otherwise,
+ ``np.array(df).size`` samples are drawn.
+ dtype : {'float16', 'float32', 'float64'}, optional
+ Data type of output samples. Default is 'float32'.
+ Dtype 'float32' or 'float64' is strongly recommended,
+ since lower precision might lead to out of range issue.
+ ctx : Context, optional
+ Device context of output. Default is current context.
+
+ Returns
+ -------
+ out : ndarray or scalar
+ Drawn samples from the parameterized chi-square distribution.
+
+ Raises
+ ------
+ ValueError
+ When `df` <= 0 or when an inappropriate `size` (e.g. ``size=-1``)
+ is given.
+
+ Notes
+ -----
+ The variable obtained by summing the squares of `df` independent,
+ standard normally distributed random variables:
+
+ .. math:: Q = \sum_{i=0}^{\mathtt{df}} X^2_i
+
+ is chi-square distributed, denoted
+
+ .. math:: Q \sim \chi^2_k.
+
+ The probability density function of the chi-squared distribution is
+
+ .. math:: p(x) = \frac{(1/2)^{k/2}}{\Gamma(k/2)}
+ x^{k/2 - 1} e^{-x/2},
+
+ where :math:`\Gamma` is the gamma function,
+
+ .. math:: \Gamma(x) = \int_0^{-\infty} t^{x - 1} e^{-t} dt.
+
+ References
+ ----------
+ .. [1] NIST "Engineering Statistics Handbook"
+ https://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm
+
+ Examples
+ --------
+ >>> np.random.chisquare(2,4)
+ array([ 1.89920014, 9.00867716, 3.13710533, 5.62318272]) # random
+ """
+ if dtype is None:
+ dtype = 'float32'
+ if ctx is None:
+ ctx = current_context()
+ if size == ():
+ size = None
+ if (isinstance(size, int) and size < 0) or (isinstance(size, tuple) and
min(size) < 0):
Review comment:
No need for this check, negative number in `size` will possibly be used in
the future, as a secret feature.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services