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: test of (non-)equivalence of one sample, based on z-test
  
  TOST: two one-sided z-tests
  
  null hypothesis:  m < low or m > upp
  alternative hypothesis:  low < m < upp
  
  where m is the expected value of the sample (mean of the population).
  
  If the pvalue is smaller than a threshold, say 0.05, then we reject the
  hypothesis that the expected value of the sample (mean of the
  population) is outside of the interval given by thresholds low and upp.
  
  Parameters
  ----------
  low, upp : float
      equivalence interval low < mean < upp
  
  Returns
  -------
  pvalue : float
      pvalue of the non-equivalence test
  t1, pv1 : tuple
      test statistic and p-value for lower threshold test
  t2, pv2 : tuple
      test statistic and p-value for upper threshold test
docstr_tok: ["test","of","(","non-",")","equivalence","of","one","sample",",","based","on","z-test","TOST",":","two","one-sided","z-tests","null","hypothesis",":","m","<","low","or","m",">","upp","alternative","hypothesis",":","low","<","m","<","upp","where","m","is","the","expected","value","of","the","sample","(","mean","of","the","population",")",".","If","the","pvalue","is","smaller","than","a","threshold",",","say","0.05",",","then","we","reject","the","hypothesis","that","the","expected","value","of","the","sample","(","mean","of","the","population",")","is","outside","of","the","interval","given","by","thresholds","low","and","upp",".","Parameters","--","--","--","--","--","low",",","upp",":","float","equivalence","interval","low","<","mean","<","upp","Returns","--","--","--","-","pvalue",":","float","pvalue","of","the","non-equivalence","test","t1",",","pv1",":","tuple","test","statistic","and","p-value","for","lower","threshold","test","t2",",","pv2",":","tuple","test","statistic","and","p-value","for","upper","threshold","test"]
code: def ztost_mean(self, low, upp):
      """test of (non-)equivalence of one sample, based on z-test
  
      TOST: two one-sided z-tests
  
      null hypothesis:  m < low or m > upp
      alternative hypothesis:  low < m < upp
  
      where m is the expected value of the sample (mean of the population).
  
      If the pvalue is smaller than a threshold, say 0.05, then we reject the
      hypothesis that the expected value of the sample (mean of the
      population) is outside of the interval given by thresholds low and upp.
  
      Parameters
      ----------
      low, upp : float
          equivalence interval low < mean < upp
  
      Returns
      -------
      pvalue : float
          pvalue of the non-equivalence test
      t1, pv1 : tuple
          test statistic and p-value for lower threshold test
      t2, pv2 : tuple
          test statistic and p-value for upper threshold test
  
      """
  
      t1, pv1 = self.ztest_mean(low, alternative="larger")
      t2, pv2 = self.ztest_mean(upp, alternative="smaller")
      return np.maximum(pv1, pv2), (t1, pv1), (t2, pv2)
  
imports: import numpy
  from scipy import stats
  from statsmodels.tools.decorators import cache_readonly
label_desc: Use image node_id 23 for calling the DescrStatsW obj's underlying member method code with example usage: obj.ztost_mean(low, upp) and returns: np,  t1,  pv1,  t2,  pv2