class_docstr: Multivariate kernel density estimator.
  
  This density estimator can handle univariate as well as multivariate data,
  including mixed continuous / ordered discrete / unordered discrete data.
  It also provides cross-validated bandwidth selection methods (least
  squares, maximum likelihood).
  
  Parameters
  ----------
  data : list of ndarrays or 2-D ndarray
      The training data for the Kernel Density Estimation, 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.
  var_type : str
      The type of the variables:
  
          - c : continuous
          - u : unordered (discrete)
          - o : ordered (discrete)
  
      The string should contain a type specifier for each variable, so for
      example ``var_type='ccuo'``.
  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 : EstimatorSettings instance, optional
      The default values for (efficient) bandwidth estimation.
  
  Attributes
  ----------
  bw : array_like
      The bandwidth parameters.
  
  See Also
  --------
  KDEMultivariateConditional
  
  Examples
  --------
  >>> import statsmodels.api as sm
  >>> nobs = 300
  >>> np.random.seed(1234)  # Seed random generator
  >>> c1 = np.random.normal(size=(nobs,1))
  >>> c2 = np.random.normal(2, 1, size=(nobs,1))
  
  Estimate a bivariate distribution and display the bandwidth found:
  
  >>> dens_u = sm.nonparametric.KDEMultivariate(data=[c1,c2],
  ...     var_type='cc', bw='normal_reference')
  >>> dens_u.bw
  array([ 0.39967419,  0.38423292])
class_docstr_tok: ["Multivariate","kernel","density","estimator",".","This","density","estimator","can","handle","univariate","as","well","as","multivariate","data",",","including","mixed","continuous","\/","ordered","discrete","\/","unordered","discrete","data",".","It","also","provides","cross-validated","bandwidth","selection","methods","(","least","squares",",","maximum","likelihood",")",".","Parameters","--","--","--","--","--","data",":","list","of","ndarrays","or","2-D","ndarray","The","training","data","for","the","Kernel","Density","Estimation",",","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",".","var_type",":","str","The","type","of","the","variables",":","-","c",":","continuous","-","u",":","unordered","(","discrete",")","-","o",":","ordered","(","discrete",")","The","string","should","contain","a","type","specifier","for","each","variable",",","so","for","example","``","var_type='ccuo","'","``",".","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",":","EstimatorSettings","instance",",","optional","The","default","values","for","(","efficient",")","bandwidth","estimation",".","Attributes","--","--","--","--","--","bw",":","array_like","The","bandwidth","parameters",".","See","Also","--","--","--","--","KDEMultivariateConditional","Examples","--","--","--","--",">",">",">","import","statsmodels.api","as","sm",">",">",">","nobs","=","300",">",">",">","np.random.seed","(","1234",")","#","Seed","random","generator",">",">",">","c1","=","np.random.normal","(","size=","(","nobs,1",")",")",">",">",">","c2","=","np.random.normal","(","2",",","1",",","size=","(","nobs,1",")",")","Estimate","a","bivariate","distribution","and","display","the","bandwidth","found",":",">",">",">","dens_u","=","sm.nonparametric.KDEMultivariate","(","data=","[","c1",",","c2","]",",","...","var_type='cc","'",",","bw='normal_reference","'",")",">",">",">","dens_u.bw","array","(","[","0.39967419",",","0.38423292","]",")"]
code: def __init__(self, data, var_type, bw=None, defaults=None):
      self.var_type = var_type
      self.k_vars = len(self.var_type)
      self.data = _adjust_shape(data, self.k_vars)
      self.data_type = var_type
      self.nobs, self.k_vars = np.shape(self.data)
      if self.nobs <= self.k_vars:
          raise ValueError(
              "The number of observations must be larger "
              "than the number of variables."
          )
      defaults = EstimatorSettings() if defaults is None else defaults
      self._set_defaults(defaults)
      if not self.efficient:
          self.bw = self._compute_bw(bw)
      else:
          self.bw = self._compute_efficient(bw)
  
imports: import numpy
  from .None import kernels
  from ._kernel_base import GenericKDE, EstimatorSettings, gpke, LeaveOneOut, _adjust_shape
label_desc: Use image node_id 1 to create a new KDEMultivariate object from inherited base classes: GenericKDE with example: obj = KDEMultivariate(data, var_type, bw, defaults)