Learn R Programming

mgcv (version 0.9-6)

exclude.too.far: Exclude prediction grid points too far from data

Description

Takes two arrays defining the nodes of a grid over a 2D covariate space and two arrays defining the location of data in that space, and returns a logical vector with elements TRUE if corresponding node is too far from data and FALSE otherwise. Basically a service routine for vis.gam.

Usage

exclude.too.far(g1,g2,d1,d2,dist)

Arguments

g1
co-ordinates of grid relative to first axis.
g2
co-ordinates of grid relative to second axis.
d1
co-ordinates of data relative to first axis.
d2
co-ordinates of data relative to second axis.
dist
how far away counts as two far. Grid and data are first scaled so that the grid lies exactly in the unit square, and dist is a distance within this unit square.

Value

  • An logical array with TRUE indicating a node in the grid defined by g1, g2 that is too far from any datum to be included.

WARNING

Routine is vectorized w.r.t. the data and not the grid: it will be very inefficient if d1 and d2 are very short while g1 and g2 are very long.

Details

Linear scalings of the axes are first determined so that the grid defined by the nodes in g1 and g2 lies exactly in the unit square (i.e. on [0,1] by [0,1]). These scalings are applied to g1, g2, d1 and d2. The minimum Euclidean distance from each node to a datum is then determined and if it is greater than dist the corresponding entry in the returned array is set to TRUE (otherwise to FALSE). The calculations are performed by looping through the nodes (although they are vectorized with respect to the data): unless there are very few data this is not overly ineffeicient, and avoids using excessive amounts of memory.

References

http://www.stats.gla.ac.uk/~simon/

See Also

vis.gam

Examples

Run this code
library(mgcv)
x<-rnorm(100);y<-rnorm(100) # some "data"
n<-20 # generate a grid....
mx<-seq(min(x),max(x),length=n)
my<-seq(min(y),max(y),length=n)
gx<-rep(mx,n);gy<-rep(my,rep(n,n))
tf<-exclude.too.far(gx,gy,x,y,0.1)
plot(gx[!tf],gy[!tf],pch=".");points(x,y,col=2)

Run the code above in your browser using DataLab