| discrete.sample {PrevMap} | R Documentation |
Spatially discrete sampling
Description
Draws a sub-sample from a set of units spatially located irregularly over some defined geographical region by imposing a minimum distance between any two sampled units.
Usage
discrete.sample(xy.all, n, delta, k = 0)
Arguments
xy.all |
set of locations from which the sample will be drawn. |
n |
size of required sample. |
delta |
minimum distance between any two locations in preliminary sample. |
k |
number of locations in preliminary sample to be replaced by nearest neighbours of other preliminary sample locations in final sample (must be between 0 and |
Details
To draw a sample of size n from a population of spatial locations X_{i} : i = 1,\ldots,N, with the property that the distance between any two sampled locations is at least delta, the function implements the following algorithm.
Step 1. Draw an initial sample of size
ncompletely at random and call thisx_{i} : i = 1,\dots, n.Step 2. Set
i = 1and calculate the minimum,d_{\min}, of the distances fromx_{i}to all otherx_{j}in the initial sample.Step 3. If
d_{\min} \ge \delta, increaseiby 1 and return to step 2 ifi \le n, otherwise stop.Step 4. If
d_{\min} < \delta, draw an integerjat random from1, 2,\ldots,N, setx_{i} = X_{j}and return to step 3.
Samples generated in this way will exhibit a more regular spatial arrangement than would a random sample of the same size. The degree of regularity achievable will be influenced by the spatial arrangement of the population X_{i} : i = 1,\ldots,N, the specified value of delta and the sample size n. For any given population, if n and/or delta are too large, a sample of the required size with the distance between any two sampled locations at least delta will not be achievable; the suggested solution is then to run the algorithm with a smaller value of delta.
Sampling close pairs of points.
For some purposes, it is desirable that a spatial sampling scheme include pairs of closely spaced points. In this case, the above algorithm requires the following additional steps to be taken.
Let k be the required number of close pairs.
Step 5. Set
j = 1and draw a random sample of size 2 from the integers1, 2,\ldots,n, say(i_{1}, i_{2} ).Step 6. Find the integer
rsuch that the distances fromx_{i_{1}}toX_{r}is the minimum of allN-1distances fromx_{i_{1}}to theX_{j}.Step 7. Replace
x_{i_{2}}byX_{r}, increaseiby 1 and return to step 5 ifi \le k, otherwise stop.
Value
A matrix of dimension n by 2 containing the final sampled locations.
Author(s)
Emanuele Giorgi e.giorgi@lancaster.ac.uk
Peter J. Diggle p.diggle@lancaster.ac.uk
Examples
x<-0.015+0.03*(1:33)
xall<-rep(x,33)
yall<-c(t(matrix(xall,33,33)))
xy<-cbind(xall,yall)+matrix(-0.0075+0.015*runif(33*33*2),33*33,2)
par(pty="s",mfrow=c(1,2))
plot(xy[,1],xy[,2],pch=19,cex=0.25,xlab="Easting",ylab="Northing",
cex.lab=1,cex.axis=1,cex.main=1)
set.seed(15892)
# Generate spatially random sample
xy.sample<-xy[sample(1:dim(xy)[1],50,replace=FALSE),]
points(xy.sample[,1],xy.sample[,2],pch=19,col="red")
points(xy[,1],xy[,2],pch=19,cex=0.25)
plot(xy[,1],xy[,2],pch=19,cex=0.25,xlab="Easting",ylab="Northing",
cex.lab=1,cex.axis=1,cex.main=1)
set.seed(15892)
# Generate spatially regular sample
xy.sample<-discrete.sample(xy,50,0.08)
points(xy.sample[,1],xy.sample[,2],pch=19,col="red")
points(xy[,1],xy[,2],pch=19,cex=0.25)