[R] Point estimate from loess contour plot
Gavin Simpson
gavin.simpson at ucl.ac.uk
Fri Feb 9 13:49:59 CET 2007
On Thu, 2007-02-08 at 19:09 +0000, Laura Quinn wrote:
> Hi,
>
> I was wondering if anyone knows of a way by which one can estimate values
> from a contour plot created by using the loess function? I am hoping to
> use the loess contour plot as a means of interpolation to identify
> the loess created values at points at pre-defined (x,y) locations.
>
> Could anyone point me in the right direction please?
>
> Thanks.
>
> Laura Quinn
Hi Laura,
Using an example from MASS (the book by Venables and Ripley, page 423 in
4th Ed (2002)) and the topo data set:
require(MASS)
## loess surface
topo.lo <- loess(z ~ x * y, topo, degree = 1, span = 0.25,
normalize = FALSE)
topo.mar <- list(x = seq(0, 6.5, 0.1), y = seq(0, 6.5, 0.1))
new.dat <- expand.grid(topo.mar)
topo.pred <- predict(topo.lo, new.dat)
## draw the contour map based on loess predictions
eqscplot(topo.mar, type = "n")
contour(topo.mar$x, topo.mar$y, topo.pred,
levels = seq(700, 1000, 25), add = TRUE)
## original points
points(topo, col = "red")
So now we have a loess surface defined by the model (topo.lo) and we can
use the predict.loess method to get point predictions based on the
model. This is what was used to produce the points draw the contour
surface, but on a regular grid. For some new point, not on this regular
grid we can use the same approach:
> predict(topo.lo, data.frame(x = 4.8, y = 3.1))
[1] 824.0046
which yields a height of 824 and a bit feet for those coordinates. You
can get the standard errors of the predicted value as well:
> predict(topo.lo, data.frame(x = 4.8, y = 3.1), se = TRUE)
$fit
[1] 824.0046
$se.fit
[1] 7.677035
$residual.scale
[1] 18.95324
$df
[1] 34.00484
And of course, you aren't restricted to doing this one point at a time:
> predict(topo.lo, data.frame(x = c(4.8, 4.9, 3.1, 2.6),
+ y = c(3.1, 2.3, 4.5, 5.6)),
+ se = TRUE)
$fit
[1] 824.0046 849.2514 760.2926 744.2987
$se.fit
[1] 7.677035 7.127979 6.364493 7.093619
$residual.scale
[1] 18.95324
$df
[1] 34.00484
Is this what you were looking for?
HTH
G
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson [t] +44 (0)20 7679 0522
ECRC, UCL Geography, [f] +44 (0)20 7679 0565
Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/
UK. WC1E 6BT. [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
More information about the R-help
mailing list