Spatial data are generally auto-correlated, meaning that if two units
selected are close to each other, then it is likely that they share the
same properties. For this reason, when sampling in the population it is
often needed that the sample is well spread over space. A new method to
draw a sample from a population with spatial coordinates is proposed.
This method is called wave
(weakly associated vectors)
sampling. It uses the less correlated vector to a spatial weights matrix
to update the inclusion probabilities vector into a sample. For more
details see Raphaël Jauslin and Yves Tillé (2020) https://doi.org/10.1007/s13253-020-00407-1.
install.packages("WaveSampling")
You can install the latest version of the package
WaveSampling
with the following command:
# install.packages("devtools")
::install_github("Rjauslin/WaveSampling") devtools
This basic example shows you how to solve a common problem. Spatial
coordinates from the function runif()
are firstly
generated.
library(WaveSampling)
#> Le chargement a nécessité le package : Matrix
<- 144
N <- 48
n <- cbind(runif(N),runif(N))
X head(X,10)
#> [,1] [,2]
#> [1,] 0.35000373 0.2557976
#> [2,] 0.87553309 0.6370745
#> [3,] 0.09019367 0.9000345
#> [4,] 0.97906235 0.3576902
#> [5,] 0.32768335 0.1444912
#> [6,] 0.41488141 0.5468550
#> [7,] 0.67789730 0.4799551
#> [8,] 0.21604234 0.8712608
#> [9,] 0.38741250 0.6283276
#> [10,] 0.78754375 0.6948966
Inclusion probabilities pik
is set up all equal with the
function rep()
.
<- rep(n/N,times = N) pik
It only remains to use the function wave()
,
<- wave(X,pik) s
We can also generate a plot to observe the result.
library(ggplot2)
ggplot() +
geom_point(data = data.frame(x = X[,1],y = X[,2]),
aes(x = x,y = y),
shape = 1,
alpha = 0.2)+
geom_point(data = data.frame(x = X[s == 1,1],y = X[s == 1,2]),
aes(x,y),
shape = 16,
colour = "black")+
theme_void()