

   CCoommppuuttee aa 22DD BBiinnnneedd KKeerrnneell DDeennssiittyy EEssttiimmaattee

        bkde2D(x, bandwidth, gridsize=c(51, 51), range.x=<<see below>>,
               truncate=T)

   AArrgguummeennttss::

          x: a two-column matrix containing the observations
             from the distribution whose density is to be esti-
             mated.  Missing values are not allowed.

   bandwidth: vector containing the bandwidth to be used in
             each coordinate direction.

   gridsize: vector containing the number of equally spaced
             points in each direction over which the density is
             to be estimated.

    range.x: a list containing two vectors, where each vector
             contains the minimum and maximum values of `x' at
             which to compute the estimate for each direction.
             The default minimum in each direction is minimum
             data value minus 1.5 times the bandwidth for that
             direction. The default maximum is the maximum data
             value plus 1.5 times the bandwidth for that direc-
             tion

   truncate: logical flag: if TRUE, data with `x' values out-
             side the range specified by `range.x' are ignored.

   DDeessccrriippttiioonn::

        Returns the set of grid points in each coordinate
        direction, and the matrix of density estimates over the
        mesh induced by the grid points. The kernel is the
        standard bivariate normal density.

   VVaalluuee::

        a list containing the following components:

         x1: vector of values of the grid points in the first
             coordinate direction at which the estimate was
             computed.

         x2: vector of values of the grid points in the second
             coordinate direction at which the estimate was
             computed.

       fhat: matrix of density estimates over the mesh induced
             by `x1' and `x2'.

   DDeettaaiillss::

        This is the binned approximation to the 2D kernel den-
        sity estimate.  Linear binning is used to obtain the
        bin counts and the Fast Fourier Transform is used to
        perform the discrete convolutions.  For each `x1',`x2'
        pair the bivariate Gaussian kernel is centered on that
        location and the heights of the kernel, scaled by the
        bandwidths, at each datapoint are summed.  This sum,
        after a normalization, is the corresponding `fhat'
        value in the output.

   RReeffeerreenncceess::

        Wand, M. P. (1994).  Fast Computation of Multivariate
        Kernel Estimators.  Journal of Computational and Graph-
        ical Statistics, 3, 433-445.

        Wand, M. P. and Jones, M. C. (1995).  Kernel Smoothing.
        Chapman and Hall, London.

   SSeeee AAllssoo::

        `bkde', `density', `hist', `ksmooth'.

   EExxaammpplleess::

        data(geyser)
        x <- cbind(geyser$duration,geyser$waiting)
        est <- bkde2D(x,bandwidth=c(0.7,7))
        contour(est$x1,est$x2,est$fhat)
        # persp(est$fhat) ## not yet in R

