| smooth.map | R Documentation |
Increases the resolution of data aggregated over map regions, by either smoothing or interpolation. Also fills in missing values.
smooth.map(m, z, res = 50, span = 1/10, averages = FALSE, type = c("smooth",
"interp"), merge = FALSE)
m |
a map object |
z |
a named vector |
res |
a vector of length two, specifying the resolution of the sampling grid in each dimension. If a single number, it is taken as the vertical resolution, with double taken as the horizontal resolution. |
span |
kernel parameter (larger = smoother).
|
averages |
If |
type |
see details. |
merge |
If |
For type = "smooth", the region totals are first converted
into point measurements on the
sampling grid, by dividing the total for a region among all sample
points inside it. Then it is a regular kernel smoothing
problem. Note that the region totals are not preserved.
The prediction z_o for
location x_o (a vector) is the average of z for
nearby sample points:
z_o = \frac{\sum_x k(x, x_o) z(x)}{\sum_x k(x, x_o)}
k(x, x_o) = exp(-\lambda ||x - x_o||^2)
\lambda is determined from span.
Note that x_o is over the same sampling grid as
x, but z_o is not necessarily the same as
z(x_o).
For type = "interp", the region totals are preserved by the
higher-resolution function.
The function is assumed to come from a
Gaussian process with kernel k. The measurement z[r]
is assumed to be the sum of the function over the discrete sample
points inside region r.
This leads to a simple formula for the covariance matrix of z
and the cross-covariance between zo and z.
The prediction is the cross-covariance times the inverse covariance
times z. Unlike Tobler's method, the predictions are not
constrained to live within the original data range,
so there tends to be "ringing" effects.
See the references for more details.
A data frame with columns x, y, and z
giving the smoothed value z for locations (x, y).
Currently the (x, y) values form a grid, but this is not
guaranteed in the future.
Tom Minka
W.F. Eddy and A. Mockus. An example of the estimation and display of a smoothly varying function of time and space - the incidence of disease mumps. Journal of the American Society for Information Science, 45(9):686-693, 1994. https://web.eecs.utk.edu/~audris/papers/jasis.pdf
W. R. Tobler. Smooth pycnophylactic interpolation for geographical regions. Journal of the American Statistical Association 74:519-530, 1979.
# compare to the example for match.map
data(state, package = "datasets")
data(votes.repub)
z = votes.repub[, "1900"]
m = map("state", fill = TRUE, plot = FALSE)
# use a small span to fill in, but not smooth, the data
# increase the resolution to get better results
fit = smooth.map(m, z, span = 1/100, merge = TRUE, ave = TRUE)
mat = tapply(fit$z, fit[1:2], mean)
gray.colors <- function(n) gray(rev(0:(n - 1))/n)
par(bg = "blue")
filled.contour(mat, color.palette = gray.colors, nlev = 32, asp = 1)
# another way to visualize:
image(mat, col = gray.colors(100))
# for a higher degree of smoothing:
# fit = smooth.map(m, z, merge = TRUE, ave = TRUE)
# interpolation, state averages are preserved:
# fit = smooth.map(m, z, merge = TRUE, ave = TRUE, type = "interp")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.