scipy 1.10.1 Pypi GitHub Homepage
Other Docs

NotesParametersReturns
gzscore(a, *, axis=0, ddof=0, nan_policy='propagate')

Compute the geometric z score of each strictly positive value in the sample, relative to the geometric mean and standard deviation. Mathematically the geometric z score can be evaluated as

gzscore = log(a/gmu) / log(gsigma)

where gmu (resp. gsigma) is the geometric mean (resp. standard deviation).

Notes

This function preserves ndarray subclasses, and works also with matrices and masked arrays (it uses asanyarray instead of asarray for parameters).

Parameters

a : array_like

Sample data.

axis : int or None, optional

Axis along which to operate. Default is 0. If None, compute over the whole array a.

ddof : int, optional

Degrees of freedom correction in the calculation of the standard deviation. Default is 0.

nan_policy : {'propagate', 'raise', 'omit'}, optional

Defines how to handle when input contains nan. 'propagate' returns nan, 'raise' throws an error, 'omit' performs the calculations ignoring nan values. Default is 'propagate'. Note that when the value is 'omit', nans in the input also propagate to the output, but they do not affect the geometric z scores computed for the non-nan values.

Returns

gzscore : array_like

The geometric z scores, standardized by geometric mean and geometric standard deviation of input array a.

Compute the geometric standard score.

See Also

gmean

Geometric mean

gstd

Geometric standard deviation

zscore

Standard score

Examples

Draw samples from a log-normal distribution:
import numpy as np
from scipy.stats import zscore, gzscore
import matplotlib.pyplot as plt
rng = np.random.default_rng()
mu, sigma = 3., 1.  # mean and standard deviation
x = rng.lognormal(mu, sigma, size=500)
Display the histogram of the samples:
fig, ax = plt.subplots()
ax.hist(x, 50)
plt.show()
Display the histogram of the samples standardized by the classical zscore. Distribution is rescaled but its shape is unchanged.
fig, ax = plt.subplots()
ax.hist(zscore(x), 50)
plt.show()
Demonstrate that the distribution of geometric zscores is rescaled and quasinormal:
fig, ax = plt.subplots()
ax.hist(gzscore(x), 50)
plt.show()
See :

Local connectivity graph

Hover to see nodes names; edges to Self not shown, Caped at 50 nodes.

Using a canvas is more power efficient and can get hundred of nodes ; but does not allow hyperlinks; , arrows or text (beyond on hover)

SVG is more flexible but power hungry; and does not scale well to 50 + nodes.

scipy.stats._stats_py:gstd_stats_py:gstdscipy.stats._stats_py:gmean_stats_py:gmeanzscorezscore

All aboves nodes referred to, (or are referred from) current nodes; Edges from Self to other have been omitted (or all nodes would be connected to the central node "self" which is not useful). Nodes are colored by the library they belong to, and scaled with the number of references pointing them


GitHub : /scipy/stats/_stats_py.py#2716
type: <class 'function'>
Commit: