class_docstr: Descriptive statistics and tests with weights for case weights
  
  Assumes that the data is 1d or 2d with (nobs, nvars) observations in rows,
  variables in columns, and that the same weight applies to each column.
  
  If degrees of freedom correction is used, then weights should add up to the
  number of observations. ttest also assumes that the sum of weights
  corresponds to the sample size.
  
  This is essentially the same as replicating each observations by its
  weight, if the weights are integers, often called case or frequency weights.
  
  Parameters
  ----------
  data : array_like, 1-D or 2-D
      dataset
  weights : None or 1-D ndarray
      weights for each observation, with same length as zero axis of data
  ddof : int
      default ddof=0, degrees of freedom correction used for second moments,
      var, std, cov, corrcoef.
      However, statistical tests are independent of `ddof`, based on the
      standard formulas.
  
  Examples
  --------
  
  >>> import numpy as np
  >>> np.random.seed(0)
  >>> x1_2d = 1.0 + np.random.randn(20, 3)
  >>> w1 = np.random.randint(1, 4, 20)
  >>> d1 = DescrStatsW(x1_2d, weights=w1)
  >>> d1.mean
  array([ 1.42739844,  1.23174284,  1.083753  ])
  >>> d1.var
  array([ 0.94855633,  0.52074626,  1.12309325])
  >>> d1.std_mean
  array([ 0.14682676,  0.10878944,  0.15976497])
  
  >>> tstat, pval, df = d1.ttest_mean(0)
  >>> tstat; pval; df
  array([  9.72165021,  11.32226471,   6.78342055])
  array([  1.58414212e-12,   1.26536887e-14,   2.37623126e-08])
  44.0
  
  >>> tstat, pval, df = d1.ttest_mean([0, 1, 1])
  >>> tstat; pval; df
  array([ 9.72165021,  2.13019609,  0.52422632])
  array([  1.58414212e-12,   3.87842808e-02,   6.02752170e-01])
  44.0
  
  # if weights are integers, then asrepeats can be used
  
  >>> x1r = d1.asrepeats()
  >>> x1r.shape
  ...
  >>> stats.ttest_1samp(x1r, [0, 1, 1])
  ...
docstr: Compute quantiles for a weighted sample.
  
  Parameters
  ----------
  probs : array_like
      A vector of probability points at which to calculate the
      quantiles.  Each element of `probs` should fall in [0, 1].
  return_pandas : bool
      If True, return value is a Pandas DataFrame or Series.
      Otherwise returns a ndarray.
  
  Returns
  -------
  quantiles : Series, DataFrame, or ndarray
      If `return_pandas` = True, returns one of the following:
        * data are 1d, `return_pandas` = True: a Series indexed by
          the probability points.
        * data are 2d, `return_pandas` = True: a DataFrame with
          the probability points as row index and the variables
          as column index.
  
      If `return_pandas` = False, returns an ndarray containing the
      same values as the Series/DataFrame.
  
  Notes
  -----
  To compute the quantiles, first, the weights are summed over
  exact ties yielding distinct data values y_1 < y_2 < ..., and
  corresponding weights w_1, w_2, ....  Let s_j denote the sum
  of the first j weights, and let W denote the sum of all the
  weights.  For a probability point p, if pW falls strictly
  between s_j and s_{j+1} then the estimated quantile is
  y_{j+1}.  If pW = s_j then the estimated quantile is (y_j +
  y_{j+1})/2.  If pW < p_1 then the estimated quantile is y_1.
  
  References
  ----------
  SAS documentation for weighted quantiles:
  
  https://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_univariate_sect028.htm
docstr_tok: ["Compute","quantiles","for","a","weighted","sample",".","Parameters","--","--","--","--","--","probs",":","array_like","A","vector","of","probability","points","at","which","to","calculate","the","quantiles",".","Each","element","of","`","probs","`","should","fall","in","[","0",",","1","]",".","return_pandas",":","bool","If","True",",","return","value","is","a","Pandas","DataFrame","or","Series",".","Otherwise","returns","a","ndarray",".","Returns","--","--","--","-","quantiles",":","Series",",","DataFrame",",","or","ndarray","If","`","return_pandas","`","=","True",",","returns","one","of","the","following",":","*","data","are","1d",",","`","return_pandas","`","=","True",":","a","Series","indexed","by","the","probability","points",".","*","data","are","2d",",","`","return_pandas","`","=","True",":","a","DataFrame","with","the","probability","points","as","row","index","and","the","variables","as","column","index",".","If","`","return_pandas","`","=","False",",","returns","an","ndarray","containing","the","same","values","as","the","Series\/DataFrame",".","Notes","--","--","-","To","compute","the","quantiles",",","first",",","the","weights","are","summed","over","exact","ties","yielding","distinct","data","values","y_1","<","y_2","<","...",",","and","corresponding","weights","w_1",",","w_2",",","....","Let","s_j","denote","the","sum","of","the","first","j","weights",",","and","let","W","denote","the","sum","of","all","the","weights",".","For","a","probability","point","p",",","if","pW","falls","strictly","between","s_j","and","s_","{","j+1","}","then","the","estimated","quantile","is","y_","{","j+1","}",".","If","pW","=","s_j","then","the","estimated","quantile","is","(","y_j","+","y_","{","j+1","}",")","\/2",".","If","pW","<","p_1","then","the","estimated","quantile","is","y_1",".","References","--","--","--","--","--","SAS","documentation","for","weighted","quantiles",":","https",":","\/\/support.sas.com\/documentation\/cdl\/en\/procstat\/63104\/HTML\/default\/viewer.htm","#","procstat_univariate_sect028.htm"]
code: def quantile(self, probs, return_pandas=True):
      """
      Compute quantiles for a weighted sample.
  
      Parameters
      ----------
      probs : array_like
          A vector of probability points at which to calculate the
          quantiles.  Each element of `probs` should fall in [0, 1].
      return_pandas : bool
          If True, return value is a Pandas DataFrame or Series.
          Otherwise returns a ndarray.
  
      Returns
      -------
      quantiles : Series, DataFrame, or ndarray
          If `return_pandas` = True, returns one of the following:
            * data are 1d, `return_pandas` = True: a Series indexed by
              the probability points.
            * data are 2d, `return_pandas` = True: a DataFrame with
              the probability points as row index and the variables
              as column index.
  
          If `return_pandas` = False, returns an ndarray containing the
          same values as the Series/DataFrame.
  
      Notes
      -----
      To compute the quantiles, first, the weights are summed over
      exact ties yielding distinct data values y_1 < y_2 < ..., and
      corresponding weights w_1, w_2, ....  Let s_j denote the sum
      of the first j weights, and let W denote the sum of all the
      weights.  For a probability point p, if pW falls strictly
      between s_j and s_{j+1} then the estimated quantile is
      y_{j+1}.  If pW = s_j then the estimated quantile is (y_j +
      y_{j+1})/2.  If pW < p_1 then the estimated quantile is y_1.
  
      References
      ----------
      SAS documentation for weighted quantiles:
  
      https://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_univariate_sect028.htm
      """
  
      import pandas as pd
  
      probs = np.asarray(probs)
      probs = np.atleast_1d(probs)
  
      if self.data.ndim == 1:
          rslt = self._quantile(self.data, probs)
          if return_pandas:
              rslt = pd.Series(rslt, index=probs)
      else:
          rslt = []
          for vec in self.data.T:
              rslt.append(self._quantile(vec, probs))
          rslt = np.column_stack(rslt)
          if return_pandas:
              columns = [
                  "col%d" % (j + 1) for j in range(rslt.shape[1])
              ]
              rslt = pd.DataFrame(
                  data=rslt, columns=columns, index=probs
              )
  
      if return_pandas:
          rslt.index.name = "p"
  
      return rslt
  
imports: import numpy
  from scipy import stats
  from statsmodels.tools.decorators import cache_readonly
label_desc: Use image node_id 16 for calling the DescrStatsW obj's underlying member method code with example usage: obj.quantile(probs, return_pandas) and returns: rslt