# idw

##### Inverse-distance weighted smoothing of observations at irregular points

Performs spatial smoothing of numeric values observed at a set of irregular locations using inverse-distance weighting.

##### Usage

`idw(X, power=2, at="pixels", ...)`

##### Arguments

- X
- A marked point pattern (object of class
`"ppp"`

). - power
- Numeric. Power of distance used in the weighting.
- at
- String specifying whether to compute the intensity values
at a grid of pixel locations (
`at="pixels"`

) or only at the points of`X`

(`at="points"`

). - ...
- Arguments passed to
`as.mask`

to control the pixel resolution of the result.

##### Details

This function performs spatial smoothing of numeric values
observed at a set of irregular locations.
Smoothing is performed by inverse distance weighting. If the
observed values are $v_1,\ldots,v_n$
at locations $x_1,\ldots,x_n$ respectively,
then the smoothed value at a location $u$ is
$$g(u) = \frac{\sum_i w_i v_i}{\sum_i w_i}$$
where the weights are the inverse $p$-th powers of distance,
$$w_i = \frac 1 {d(u,x_i)^p}$$
where $d(u,x_i) = ||u - x_i||$
is the Euclidean distance from $u$ to $x_i$.
The argument `X`

must be a marked point pattern (object
of class `"ppp"`

, see `ppp.object`

).
The points of the pattern are taken to be the
observation locations $x_i$, and the marks of the pattern
are taken to be the numeric values $v_i$ observed at these
locations.

The marks are allowed to be a data frame.
Then the smoothing procedure is applied to each
column of marks.
If `at="pixels"`

(the default), the smoothed mark value
is calculated at a grid of pixels, and the result is a pixel image.
The arguments `...`

control the pixel resolution.
See `as.mask`

.

If `at="points"`

, the smoothed mark values are calculated
at the data points only, using a leave-one-out rule (the mark value
at a data point is excluded when calculating the smoothed value
for that point).

An alternative to inverse-distance weighting is kernel smoothing,
which is performed by `Smooth.ppp`

.

##### Value

*If*`X`

has a single column of marks:- If
`at="pixels"`

(the default), the result is a pixel image (object of class`"im"`

). Pixel values are values of the interpolated function. - If
`at="points"`

, the result is a numeric vector of length equal to the number of points in`X`

. Entries are values of the interpolated function at the points of`X`

.

*If*`X`

has a data frame of marks:- If
`at="pixels"`

(the default), the result is a named list of pixel images (object of class`"im"`

). There is one image for each column of marks. This list also belongs to the class`listof`

, for which there is a plot method. - If
`at="points"`

, the result is a data frame with one row for each point of`X`

, and one column for each column of marks. Entries are values of the interpolated function at the points of`X`

.

- If

##### See Also

`density.ppp`

,
`ppp.object`

,
`im.object`

.

See `Smooth.ppp`

for kernel smoothing
and `nnmark`

for nearest-neighbour interpolation.
To perform other kinds of interpolation, see also the `akima`

package.

##### Examples

```
# data frame of marks: trees marked by diameter and height
data(finpines)
plot(idw(finpines))
idw(finpines, at="points")[1:5,]
```

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