code: def nnlf_fr(self, thetash, x, frmask):
      # new frozen version
      # - sum (log pdf(x, theta),axis=0)
      #   where theta are the parameters (including loc and scale)
      #
      try:
          if frmask is not None:
              theta = frmask.copy()
              theta[np.isnan(frmask)] = thetash
          else:
              theta = thetash
          loc = theta[-2]
          scale = theta[-1]
          args = tuple(theta[:-2])
      except IndexError:
          raise ValueError("Not enough input arguments.")
      if not self._argcheck(*args) or scale <= 0:
          return np.inf
      x = np.array((x - loc) / scale)
      cond0 = (x <= self.a) | (x >= self.b)
      if np.any(cond0):
          return np.inf
      else:
          N = len(x)
          # raise ValueError
          return self._nnlf(x, *args) + N * np.log(scale)
  
file_path: statsmodels/statsmodels/sandbox/distributions/sppatch.py
imports: from statsmodels.compat.python import lmap
  import numpy
  from scipy import stats, optimize, integrate
label_desc: Use image node_id 4 for calling a global function with example usage: nnlf_fr(thetash, x, frmask) and returns: np, np, unknown