exclude.too.far             package:mgcv             R Documentation

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  the
     corresponding node is too far from data and 'FALSE' otherwise.
     Basically a service routine for  'vis.gam' and 'plot.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 too 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.

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  distance calculations are
     performed in compiled code for speed without storage overheads.

Value:

     A logical array with 'TRUE' indicating a node in the grid defined
     by 'g1', 'g2' that  is `too far' from any datum.

Author(s):

     Simon N. Wood simon.wood@r-project.org

References:

     <URL: http://www.maths.bath.ac.uk/~sw283/>

See Also:

     'vis.gam'

Examples:

     library(mgcv)
     x<-rnorm(100);y<-rnorm(100) # some "data"
     n<-40 # 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)

