scipy.stats.

abs#

scipy.stats.abs(X, /)[source]#

Absolute value of a random variable

Parameters:
XContinuousDistribution

The random variable \(X\).

Returns:
YContinuousDistribution

A random variable \(Y = |X|\).

Notes

Array API Standard Support

abs has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

Library

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

Dask

n/a

See Support for the array API standard for more information.

Examples

Suppose we have a normally distributed random variable \(X\):

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Normal()

We wish to have a random variable \(Y\) distributed according to the folded normal distribution; that is, a random variable \(|X|\).

>>> Y = stats.abs(X)

The PDF of the distribution in the left half plane is “folded” over to the right half plane. Because the normal PDF is symmetric, the resulting PDF is zero for negative arguments and doubled for positive arguments.

>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 5, 300)
>>> ax = plt.gca()
>>> Y.plot(x='x', y='pdf', t=('x', -1, 5), ax=ax)
>>> plt.plot(x, 2 * X.pdf(x), '--')
>>> plt.legend(('PDF of `Y`', 'Doubled PDF of `X`'))
>>> plt.show()
../../_images/scipy-stats-abs-1.png