scipy.stats.mood#
- scipy.stats.mood(x, y, axis=0, alternative='two-sided')[source]#
Perform Mood’s test for equal scale parameters.
Mood’s two-sample test for scale parameters is a non-parametric test for the null hypothesis that two samples are drawn from the same distribution with the same scale parameter.
- Parameters:
- x, yarray_like
Arrays of sample data.
- axisint, optional
The axis along which the samples are tested. x and y can be of different length along axis. If axis is None, x and y are flattened and the test is done on all values in the flattened arrays.
- alternative{‘two-sided’, ‘less’, ‘greater’}, optional
Defines the alternative hypothesis. Default is ‘two-sided’. The following options are available:
‘two-sided’: the scales of the distributions underlying x and y are different.
‘less’: the scale of the distribution underlying x is less than the scale of the distribution underlying y.
‘greater’: the scale of the distribution underlying x is greater than the scale of the distribution underlying y.
New in version 1.7.0.
- Returns:
- resSignificanceResult
An object containing attributes:
- statisticscalar or ndarray
The z-score for the hypothesis test. For 1-D inputs a scalar is returned.
- pvaluescalar ndarray
The p-value for the hypothesis test.
See also
Notes
The data are assumed to be drawn from probability distributions
f(x)
andf(x/s) / s
respectively, for some probability density function f. The null hypothesis is thats == 1
.For multi-dimensional arrays, if the inputs are of shapes
(n0, n1, n2, n3)
and(n0, m1, n2, n3)
, then ifaxis=1
, the resulting z and p values will have shape(n0, n2, n3)
. Note thatn1
andm1
don’t have to be equal, but the other dimensions do.References
- [1] Mielke, Paul W. “Note on Some Squared Rank Tests with Existing Ties.”
Technometrics, vol. 9, no. 2, 1967, pp. 312-14. JSTOR, https://doi.org/10.2307/1266427. Accessed 18 May 2022.
Examples
>>> import numpy as np >>> from scipy import stats >>> rng = np.random.default_rng() >>> x2 = rng.standard_normal((2, 45, 6, 7)) >>> x1 = rng.standard_normal((2, 30, 6, 7)) >>> res = stats.mood(x1, x2, axis=1) >>> res.pvalue.shape (2, 6, 7)
Find the number of points where the difference in scale is not significant:
>>> (res.pvalue > 0.1).sum() 78
Perform the test with different scales:
>>> x1 = rng.standard_normal((2, 30)) >>> x2 = rng.standard_normal((2, 35)) * 10.0 >>> stats.mood(x1, x2, axis=1) SignificanceResult(statistic=array([-5.76174136, -6.12650783]), pvalue=array([8.32505043e-09, 8.98287869e-10]))