class_docstr: Conditional multivariate kernel density estimator.
  
  Calculates ``P(Y_1,Y_2,...Y_n | X_1,X_2...X_m) =
  P(X_1, X_2,...X_n, Y_1, Y_2,..., Y_m)/P(X_1, X_2,..., X_m)``.
  The conditional density is by definition the ratio of the two densities,
  see [1]_.
  
  Parameters
  ----------
  endog : list of ndarrays or 2-D ndarray
      The training data for the dependent variables, used to determine
      the bandwidth(s).  If a 2-D array, should be of shape
      (num_observations, num_variables).  If a list, each list element is a
      separate observation.
  exog : list of ndarrays or 2-D ndarray
      The training data for the independent variable; same shape as `endog`.
  dep_type : str
      The type of the dependent variables:
  
          c : Continuous
          u : Unordered (Discrete)
          o : Ordered (Discrete)
  
      The string should contain a type specifier for each variable, so for
      example ``dep_type='ccuo'``.
  indep_type : str
      The type of the independent variables; specified like `dep_type`.
  bw : array_like or str, optional
      If an array, it is a fixed user-specified bandwidth.  If a string,
      should be one of:
  
          - normal_reference: normal reference rule of thumb (default)
          - cv_ml: cross validation maximum likelihood
          - cv_ls: cross validation least squares
  
  defaults : Instance of class EstimatorSettings
      The default values for the efficient bandwidth estimation
  
  Attributes
  ----------
  bw : array_like
      The bandwidth parameters
  
  See Also
  --------
  KDEMultivariate
  
  References
  ----------
  .. [1] https://en.wikipedia.org/wiki/Conditional_probability_distribution
  
  Examples
  --------
  >>> import statsmodels.api as sm
  >>> nobs = 300
  >>> c1 = np.random.normal(size=(nobs,1))
  >>> c2 = np.random.normal(2,1,size=(nobs,1))
  
  >>> dens_c = sm.nonparametric.KDEMultivariateConditional(endog=[c1],
  ...     exog=[c2], dep_type='c', indep_type='c', bw='normal_reference')
  >>> dens_c.bw   # show computed bandwidth
  array([ 0.41223484,  0.40976931])
class_docstr_tok: ["Conditional","multivariate","kernel","density","estimator",".","Calculates","``","P","(","Y_1",",","Y_2",",","...","Y_n","|","X_1",",","X_2","...","X_m",")","=","P","(","X_1",",","X_2",",","...","X_n",",","Y_1",",","Y_2",",","...",",","Y_m",")","\/P","(","X_1",",","X_2",",","...",",","X_m",")","``",".","The","conditional","density","is","by","definition","the","ratio","of","the","two","densities",",","see","[","1","]","_.","Parameters","--","--","--","--","--","endog",":","list","of","ndarrays","or","2-D","ndarray","The","training","data","for","the","dependent","variables",",","used","to","determine","the","bandwidth","(","s",")",".","If","a","2-D","array",",","should","be","of","shape","(","num_observations",",","num_variables",")",".","If","a","list",",","each","list","element","is","a","separate","observation",".","exog",":","list","of","ndarrays","or","2-D","ndarray","The","training","data","for","the","independent","variable",";","same","shape","as","`","endog","`",".","dep_type",":","str","The","type","of","the","dependent","variables",":","c",":","Continuous","u",":","Unordered","(","Discrete",")","o",":","Ordered","(","Discrete",")","The","string","should","contain","a","type","specifier","for","each","variable",",","so","for","example","``","dep_type='ccuo","'","``",".","indep_type",":","str","The","type","of","the","independent","variables",";","specified","like","`","dep_type","`",".","bw",":","array_like","or","str",",","optional","If","an","array",",","it","is","a","fixed","user-specified","bandwidth",".","If","a","string",",","should","be","one","of",":","-","normal_reference",":","normal","reference","rule","of","thumb","(","default",")","-","cv_ml",":","cross","validation","maximum","likelihood","-","cv_ls",":","cross","validation","least","squares","defaults",":","Instance","of","class","EstimatorSettings","The","default","values","for","the","efficient","bandwidth","estimation","Attributes","--","--","--","--","--","bw",":","array_like","The","bandwidth","parameters","See","Also","--","--","--","--","KDEMultivariate","References","--","--","--","--","--","..","[","1","]","https",":","\/\/en.wikipedia.org\/wiki\/Conditional_probability_distribution","Examples","--","--","--","--",">",">",">","import","statsmodels.api","as","sm",">",">",">","nobs","=","300",">",">",">","c1","=","np.random.normal","(","size=","(","nobs,1",")",")",">",">",">","c2","=","np.random.normal","(","2,1",",","size=","(","nobs,1",")",")",">",">",">","dens_c","=","sm.nonparametric.KDEMultivariateConditional","(","endog=","[","c1","]",",","...","exog=","[","c2","]",",","dep_type=","'","c","'",",","indep_type=","'","c","'",",","bw='normal_reference","'",")",">",">",">","dens_c.bw","#","show","computed","bandwidth","array","(","[","0.41223484",",","0.40976931","]",")"]
docstr: Evaluate the probability density function.
  
  Parameters
  ----------
  endog_predict : array_like, optional
      Evaluation data for the dependent variables.  If unspecified, the
      training data is used.
  exog_predict : array_like, optional
      Evaluation data for the independent variables.
  
  Returns
  -------
  pdf : array_like
      The value of the probability density at `endog_predict` and `exog_predict`.
  
  Notes
  -----
  The formula for the conditional probability density is:
  
  .. math:: f(y|x)=\frac{f(x,y)}{f(x)}
  
  with
  
  .. math:: f(x)=\prod_{s=1}^{q}h_{s}^{-1}k
                      \left(\frac{x_{is}-x_{js}}{h_{s}}\right)
  
  where :math:`k` is the appropriate kernel for each variable.
docstr_tok: ["Evaluate","the","probability","density","function",".","Parameters","--","--","--","--","--","endog_predict",":","array_like",",","optional","Evaluation","data","for","the","dependent","variables",".","If","unspecified",",","the","training","data","is","used",".","exog_predict",":","array_like",",","optional","Evaluation","data","for","the","independent","variables",".","Returns","--","--","--","-","pdf",":","array_like","The","value","of","the","probability","density","at","`","endog_predict","`","and","`","exog_predict","`",".","Notes","--","--","-","The","formula","for","the","conditional","probability","density","is",":","..","math",":",":","f","(","y|x",")","=\\frac","{","f","(","x",",","y",")","}","{","f","(","x",")","}","with","..","math",":",":","f","(","x",")","=\\prod_","{","s=1","}","^","{","q","}","h_","{","s","}","^","{","-1","}","k","\\left","(","\\frac","{","x_","{","is","}","-x_","{","js","}","}","{","h_","{","s","}","}","\\right",")","where",":","math",":","`","k","`","is","the","appropriate","kernel","for","each","variable","."]
code: def pdf(self, endog_predict=None, exog_predict=None):
      r"""
      Evaluate the probability density function.
  
      Parameters
      ----------
      endog_predict : array_like, optional
          Evaluation data for the dependent variables.  If unspecified, the
          training data is used.
      exog_predict : array_like, optional
          Evaluation data for the independent variables.
  
      Returns
      -------
      pdf : array_like
          The value of the probability density at `endog_predict` and `exog_predict`.
  
      Notes
      -----
      The formula for the conditional probability density is:
  
      .. math:: f(y|x)=\frac{f(x,y)}{f(x)}
  
      with
  
      .. math:: f(x)=\prod_{s=1}^{q}h_{s}^{-1}k
                          \left(\frac{x_{is}-x_{js}}{h_{s}}\right)
  
      where :math:`k` is the appropriate kernel for each variable.
      """
      if endog_predict is None:
          endog_predict = self.endog
      else:
          endog_predict = _adjust_shape(endog_predict, self.k_dep)
      if exog_predict is None:
          exog_predict = self.exog
      else:
          exog_predict = _adjust_shape(exog_predict, self.k_indep)
  
      pdf_est = []
      data_predict = np.column_stack((endog_predict, exog_predict))
      for i in range(np.shape(data_predict)[0]):
          f_yx = gpke(
              self.bw,
              data=self.data,
              data_predict=data_predict[i, :],
              var_type=(self.dep_type + self.indep_type),
          )
          f_x = gpke(
              self.bw[self.k_dep :],
              data=self.exog,
              data_predict=exog_predict[i, :],
              var_type=self.indep_type,
          )
          pdf_est.append(f_yx / f_x)
  
      return np.squeeze(pdf_est)
  
imports: import numpy
  from .None import kernels
  from ._kernel_base import GenericKDE, EstimatorSettings, gpke, LeaveOneOut, _adjust_shape
label_desc: Use image node_id 4 for calling the KDEMultivariateConditional obj's underlying member method code with example usage: obj.pdf(endog_predict, exog_predict) and returns: np