class_docstr: Nonparametric test for functional form.
  
  Parameters
  ----------
  endog : list
      Dependent variable (training set)
  exog : list of array_like objects
      The independent (right-hand-side) variables
  bw : array_like, str
      Bandwidths for exog or specify method for bandwidth selection
  fform : function
      The functional form ``y = g(b, x)`` to be tested. Takes as inputs
      the RHS variables `exog` and the coefficients ``b`` (betas)
      and returns a fitted ``y_hat``.
  var_type : str
      The type of the independent `exog` variables:
  
          - c: continuous
          - o: ordered
          - u: unordered
  
  estimator : function
      Must return the estimated coefficients b (betas). Takes as inputs
      ``(endog, exog)``.  E.g. least square estimator::
  
          lambda (x,y): np.dot(np.pinv(np.dot(x.T, x)), np.dot(x.T, y))
  
  References
  ----------
  See Racine, J.: "Consistent Significance Testing for Nonparametric
  Regression" Journal of Business & Economics Statistics.
  
  See chapter 12 in [1]  pp. 355-357.
code: def __init__(
      self, endog, exog, bw, var_type, fform, estimator, nboot=100
  ):
      self.endog = endog
      self.exog = exog
      self.var_type = var_type
      self.fform = fform
      self.estimator = estimator
      self.nboot = nboot
      self.bw = KDEMultivariate(exog, bw=bw, var_type=var_type).bw
      self.sig = self._compute_sig()
  
imports: import numpy
  from scipy import optimize
  from scipy.stats.mstats import mquantiles
  from statsmodels.nonparametric.api import KDEMultivariate, KernelReg
  from statsmodels.nonparametric._kernel_base import gpke, LeaveOneOut, _get_type_pos, _adjust_shape
label_desc: Use image node_id 1 to create a new TestFForm object  with example: obj = TestFForm(endog, exog, bw, var_type, fform, estimator, nboot)