class_docstr: Semiparametric partially linear model, ``Y = Xb + g(Z) + e``.
  
  Parameters
  ----------
  endog : array_like
      The dependent variable
  exog : array_like
      The linear component in the regression
  exog_nonparametric : array_like
      The nonparametric component in the regression
  var_type : str
      The type of the variables in the nonparametric component;
  
          - c: continuous
          - o: ordered
          - u: unordered
  
  k_linear : int
      The number of variables that comprise the linear component.
  
  Attributes
  ----------
  bw : array_like
      Bandwidths for the nonparametric component exog_nonparametric
  b : array_like
      Coefficients in the linear component
  nobs : int
      The number of observations.
  k_linear : int
      The number of variables that comprise the linear component.
  
  Methods
  -------
  fit
      Returns the fitted mean and marginal effects dy/dz
  
  Notes
  -----
  This model uses only the local constant regression estimator
  
  References
  ----------
  See chapter on Semiparametric Models in [1]
docstr: Computes fitted values and marginal effects
docstr_tok: ["Computes","fitted","values","and","marginal","effects"]
code: def fit(self, exog_predict=None, exog_nonparametric_predict=None):
      """Computes fitted values and marginal effects"""
  
      if exog_predict is None:
          exog_predict = self.exog
      else:
          exog_predict = _adjust_shape(exog_predict, self.k_linear)
  
      if exog_nonparametric_predict is None:
          exog_nonparametric_predict = self.exog_nonparametric
      else:
          exog_nonparametric_predict = _adjust_shape(
              exog_nonparametric_predict, self.K
          )
  
      N_data_predict = np.shape(exog_nonparametric_predict)[0]
      mean = np.empty((N_data_predict,))
      mfx = np.empty((N_data_predict, self.K))
      Y = self.endog - np.dot(exog_predict, self.b)[:, None]
      for i in range(N_data_predict):
          mean_mfx = self.func(
              self.bw,
              Y,
              self.exog_nonparametric,
              data_predict=exog_nonparametric_predict[i, :],
          )
          mean[i] = mean_mfx[0]
          mfx_c = np.squeeze(mean_mfx[1])
          mfx[i, :] = mfx_c
  
      return mean, mfx
  
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 4 for calling the SemiLinear obj's underlying member method code with example usage: obj.fit(exog_predict, exog_nonparametric_predict) and returns: mean,  mfx