class_docstr: class for two sample comparison
  
  The tests and the confidence interval work for multi-endpoint comparison:
  If d1 and d2 have the same number of rows, then each column of the data
  in d1 is compared with the corresponding column in d2.
  
  Parameters
  ----------
  d1, d2 : instances of DescrStatsW
  
  Notes
  -----
  The result for the statistical tests and the confidence interval are
  independent of the user specified ddof.
  
  TODO: Extend to any number of groups or write a version that works in that
  case, like in SAS and SPSS.
docstr: test of equivalence for two independent samples, based on z-test
  
  Parameters
  ----------
  low, upp : float
      equivalence interval low < m1 - m2 < upp
  usevar : str, 'pooled' or 'unequal'
      If ``pooled``, then the standard deviation of the samples is assumed to be
      the same. If ``unequal``, then Welch ttest with Satterthwait degrees
      of freedom is used
  
  Returns
  -------
  pvalue : float
      pvalue of the non-equivalence test
  t1, pv1 : tuple of floats
      test statistic and pvalue for lower threshold test
  t2, pv2 : tuple of floats
      test statistic and pvalue for upper threshold test
docstr_tok: ["test","of","equivalence","for","two","independent","samples",",","based","on","z-test","Parameters","--","--","--","--","--","low",",","upp",":","float","equivalence","interval","low","<","m1","-","m2","<","upp","usevar",":","str",",","'pooled","'","or","'unequal'","If","``","pooled","``",",","then","the","standard","deviation","of","the","samples","is","assumed","to","be","the","same",".","If","``","unequal","``",",","then","Welch","ttest","with","Satterthwait","degrees","of","freedom","is","used","Returns","--","--","--","-","pvalue",":","float","pvalue","of","the","non-equivalence","test","t1",",","pv1",":","tuple","of","floats","test","statistic","and","pvalue","for","lower","threshold","test","t2",",","pv2",":","tuple","of","floats","test","statistic","and","pvalue","for","upper","threshold","test"]
code: def ztost_ind(self, low, upp, usevar="pooled"):
      """
      test of equivalence for two independent samples, based on z-test
  
      Parameters
      ----------
      low, upp : float
          equivalence interval low < m1 - m2 < upp
      usevar : str, 'pooled' or 'unequal'
          If ``pooled``, then the standard deviation of the samples is assumed to be
          the same. If ``unequal``, then Welch ttest with Satterthwait degrees
          of freedom is used
  
      Returns
      -------
      pvalue : float
          pvalue of the non-equivalence test
      t1, pv1 : tuple of floats
          test statistic and pvalue for lower threshold test
      t2, pv2 : tuple of floats
          test statistic and pvalue for upper threshold test
      """
      tt1 = self.ztest_ind(
          alternative="larger", usevar=usevar, value=low
      )
      tt2 = self.ztest_ind(
          alternative="smaller", usevar=usevar, value=upp
      )
      # TODO: remove tuple return, use same as for function tost_ind
      return np.maximum(tt1[1], tt2[1]), tt1, tt2
  
imports: import numpy
  from scipy import stats
  from statsmodels.tools.decorators import cache_readonly
label_desc: Use image node_id 12 for calling the CompareMeans obj's underlying member method code with example usage: obj.ztost_ind(low, upp, usevar) and returns: np,  tt1,  tt2