unnormdensity(x, ..., weights = NULL)density.default.
    Arguments must be named."density" as described in
  density.default.density.default.  The standard density.default
  requires the weights to be nonnegative numbers that add up to 1,
  and returns a probability density (a function that integrates to 1).
  
  This function unnormdensity does not impose any requirement
  on the weights except that they be finite. Individual weights may be
  positive, negative or zero. The result is a function that does not
  necessarily integrate to 1 and may be negative. The result is
  the convolution of the kernel $k$ with the weighted data,
  $$f(x) = \sum_i w_i k(x- x_i)$$
  where $x_i$ are the data points and $w_i$ are the
  weights.
  The algorithm first selects the kernel bandwidth by
  applying density.default to the data
  x with normalised, positive weight vector
  w = abs(weights)/sum(abs(weights)) and
  extracting the selected bandwidth.
  Then the result is computed by applying
  applying density.default to x twice
  using the normalised positive and negative parts of the weights.
  
  Note that the arguments ... must be passed by name,
  i.e. in the form (name=value). Arguments that do not match
  an argument of density.default will be ignored
  silently.
density.defaultd <- unnormdensity(1:3, weights=c(-1,0,1))
  if(interactive()) plot(d)Run the code above in your browser using DataLab