class_docstr: Distribution, critical values and p-values from tables
  
  currently only 1 extra parameter, e.g. sample size
  
  Parameters
  ----------
  alpha : array_like, 1d
      probabiliy in the table, could be either sf (right tail) or cdf (left
      tail)
  size : array_like, 1d
      The sample sizes for the table
  crit_table : array_like, 2d
      The sample sizes in the table
      array with critical values for sample size in rows and probability in
      columns
  asymptotic : callable, optional
      Callable function with the form fn(nobs) that returns len(alpha)
      critical values where the critical value in position i corresponds to
      alpha[i]
  min_nobs : int, optional
      Minimum number of observations to use the asymptotic distribution. If
      not provided, uses max(size).
  max_nobs : int, optional
      Maximum number of observations to use the tabular distribution. If not
      provided, uses max(size)
  
  Notes
  -----
  size and alpha must be sorted and increasing.
  
  If both min_nobs and max_nobs are provided, then
  the critical values from the tabular distribution and the asymptotic
  distribution are linearly blended using the formula
  :math:`w cv_a + (1-w) cv_t` where the weight is
  :math:`w = (n - a_{min}) / (a_{max} - a_{min})`. This ensures the
  transition between the tabular and the asymptotic critical values is
  continuous. If these are not provided, then the asymptotic critical value
  is used for nobs > max(size).
docstr: Returns interpolated quantiles, similar to ppf or isf
  
  use two sequential 1d interpolation, first by n then by prob
  
  Parameters
  ----------
  prob : array_like
      probabilities corresponding to the definition of table columns
  n : int or float
      sample size, second parameter of the table
  
  Returns
  -------
  ppf : array_like
      critical values with same shape as prob
code: def crit(self, prob, n):
      """
      Returns interpolated quantiles, similar to ppf or isf
  
      use two sequential 1d interpolation, first by n then by prob
  
      Parameters
      ----------
      prob : array_like
          probabilities corresponding to the definition of table columns
      n : int or float
          sample size, second parameter of the table
  
      Returns
      -------
      ppf : array_like
          critical values with same shape as prob
      """
      prob = np.asarray(prob)
      alpha = self.alpha
      critv = self._critvals(n)
  
      # vectorized
      cond_ilow = prob > alpha[0]
      cond_ihigh = prob < alpha[-1]
      cond_interior = np.logical_or(cond_ilow, cond_ihigh)
  
      # scalar
      if prob.size == 1:
          if cond_interior:
              return interp1d(alpha, critv)(prob)
          else:
              return np.nan
  
      # vectorized
      quantile = np.nan * np.ones(prob.shape)  # nans for outside
      quantile[cond_interior] = interp1d(alpha, critv)(
          prob[cond_interior]
      )
      return quantile
  
file_path: statsmodels/statsmodels/stats/tabledist.py
imports: import numpy
  from scipy.interpolate import interp1d, interp2d, Rbf
  from statsmodels.tools.decorators import cache_readonly
label_desc: Use image node_id 7 for calling the TableDist obj's underlying member method code with example usage: obj.crit(prob, n) and returns: quantile, interp1d, np