# unnormdensity

##### Weighted kernel smoother

An unnormalised version of kernel density estimation where the weights are not required to sum to 1. The weights may be positive, negative or zero.

- Keywords
- smooth

##### Usage

`unnormdensity(x, ..., weights = NULL)`

##### Arguments

- x
Numeric vector of data

- …
Arguments passed to

`density.default`

. Arguments must be*named*.- weights
Optional numeric vector of weights for the data.

##### Details

This is an alternative to the standard R kernel density estimation function
`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*.

##### Value

Object of class `"density"`

as described in
`density.default`

.

##### See Also

##### Examples

```
# NOT RUN {
d <- unnormdensity(1:3, weights=c(-1,0,1))
if(interactive()) plot(d)
# }
```

*Documentation reproduced from package spatstat, version 1.56-1, License: GPL (>= 2)*