On Fri, 29 May 2009, Edzer Pebesma wrote:
Can I use gwr for interpolation?
I would for example use something like
library(spgwr)
data(meuse)
coordinates(meuse) = ~x+y
data(meuse.grid)
gridded(meuse.grid) = ~x+y
x = gwr(cadmium ~ dist, meuse, bandwidth = 228, fit.points = meuse.grid)
spplot(x$SDF["gwr.e"])
Since GWR was created to look at *coefficient* variability, prediction
isn't a natural, and fit.points are assumed just to be points, not points
with attributes; there is nothing in Forthingham et al. (2002) about
prediction. So:
spplot(x$SDF, "dist")
But it doesn't give what I'd expected - somehow nicely interpolated
cadmium values. I probably misused fit.points, but I couldn't see any
predict method. Is this possible at all?
fortune("Yoda")
gwrcoefs <- as.matrix(as(x$SDF, "data.frame")[,2:3])
X <- model.matrix( ~ dist, meuse.grid)
meuse.grid$pred <- apply(gwrcoefs * X, 1, sum)
spplot(meuse.grid, "pred")
It could be written into gwr(), or as a predict() method, but that might
require changes in the gwr object to make sure that the predicted
attribute values were properly keyed to the fit point locations. To get
standard errors, you'd need to store more of the objects returned by
lm.wfit() for each fit point, which could be done, but should it?
Hope this helps,
Roger
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: roger.biv...@nhh.no
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo