#### Previous topic

scipy.stats.mstats.moment

#### Next topic

scipy.stats.mstats.msign

# scipy.stats.mstats.mquantiles

`scipy.stats.mstats.``mquantiles`(a, prob=[0.25, 0.5, 0.75], alphap=0.4, betap=0.4, axis=None, limit=())

  Computes empirical quantiles for a data array.

  Samples quantile are defined by `Q(p) = (1-gamma)*x[j] + gamma*x[j+1]`, where `x[j]` is the j-th order statistic, and gamma is a function of `j = floor(n*p + m)`, `m = alphap + p*(1 - alphap - betap)` and `g = n*p + m - j`.

  Reinterpreting the above equations to compare to R lead to the equation: `p(k) = (k - alphap)/(n + 1 - alphap - betap)`

  Typical values of (alphap,betap) are:
    - (0,1) : `p(k) = k/n` : linear interpolation of cdf (R type 4)
    - (.5,.5) : `p(k) = (k - 1/2.)/n` : piecewise linear function (R type 5)
    - (0,0) : `p(k) = k/(n+1)` : (R type 6)
    - (1,1) : `p(k) = (k-1)/(n-1)`: p(k) = mode[F(x[k])]. (R type 7, R default)
    - (1/3,1/3): `p(k) = (k-1/3)/(n+1/3)`: Then p(k) ~ median[F(x[k])]. The resulting quantile estimates are approximately median-unbiased regardless of the distribution of x. (R type 8)
    - (3/8,3/8): `p(k) = (k-3/8)/(n+1/4)`: Blom. The resulting quantile estimates are approximately unbiased if x is normally distributed (R type 9)
    - (.4,.4) : approximately quantile unbiased (Cunnane)
    - (.35,.35): APL, used with PWM

  Parameters:

  a : array_like

  > Input data, as a sequence or array of dimension at most 2.

  prob : array_like, optional

  > List of quantiles to compute.

  alphap : float, optional

  > Plotting positions parameter, default is 0.4.

  betap : float, optional

  > Plotting positions parameter, default is 0.4.

  axis : int, optional

  > Axis along which to perform the trimming. If None (default), the input array is first flattened.

  limit : tuple, optional

  > Tuple of (lower, upper) values. Values of a outside this open interval are ignored.

  Returns:

  mquantiles : MaskedArray

  > An array containing the calculated quantiles.

  Notes

  This formulation is very similar to R except the calculation of `m` from `alphap` and `betap`, where in R `m` is defined with each type.

  References

  [R419] | R statistical software: http://www.r-project.org/

  [R420] | R `quantile` function: http://stat.ethz.ch/R-manual/R-devel/library/stats/html/quantile.html

  Examples

      >>> from scipy.stats.mstats import mquantiles
      >>> a = np.array([6., 47., 49., 15., 42., 41., 7., 39., 43., 40., 36.])
      >>> mquantiles(a)
      array([ 19.2,  40. ,  42.8])

  Using a 2D array, specifying axis and limit.

      >>> data = np.array([[   6.,    7.,    1.],
      ...                  [  47.,   15.,    2.],
      ...                  [  49.,   36.,    3.],
      ...                  [  15.,   39.,    4.],
      ...                  [  42.,   40., -999.],
      ...                  [  41.,   41., -999.],
      ...                  [   7., -999., -999.],
      ...                  [  39., -999., -999.],
      ...                  [  43., -999., -999.],
      ...                  [  40., -999., -999.],
      ...                  [  36., -999., -999.]])
      >>> print(mquantiles(data, axis=0, limit=(0, 50)))
      [[ 19.2   14.6    1.45]
       [ 40.    37.5    2.5 ]
       [ 42.8   40.05   3.55]]

      >>> data[:, 2] = -999.
      >>> print(mquantiles(data, axis=0, limit=(0, 50)))
      [[19.200000000000003 14.6 --]
       [40.0 37.5 --]
       [42.800000000000004 40.05 --]]