# 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 Rkernel 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

```
d <- unnormdensity(1:3, weights=c(-1,0,1))
if(interactive()) plot(d)
```

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