The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Sampling communities with mobsim

Felix May

2024-03-22

In addition to the simulation and analysis of spatially-explicit communities, mobsim provides a function to generate samples from simulated or observed communities. The combination of simulated data AND simulated sampling is a powerful approach to test the validity and power of empirical approaches.

1 Random sampling

Here, we simulate a community and then generate samples with the function sample_quadrats. By default sample_quadrats distributes a user-defined number of quadrats with user-defined size in the landscape and provides the number of individuals for each species in each quadrat.

The function returns two dataframes. The first includes the abundance of every species in every sampling quadrat and the second the positions of the lower left corners of the quadrats.

The community matrix of samples by species can then be analysed using additional software. For instance the R package vegan is perfectly suited for the analysis of community data. See the vignette Introduction to mobsim for a worked example.

library(mobsim)
sim_com1 <- sim_poisson_community(s_pool = 100, n_sim = 20000)
sample1 <- sample_quadrats(sim_com1)

head(sample1$spec_dat[,1:6])
##       species_001 species_002 species_003 species_004 species_005 species_006
## site1          20          13           6          10           8           4
## site2          19           8          10           5           6           5
## site3          14          10           7           5           6           5
## site4          25           5          13           4          10           2
## site5          14          11          13           4           5           7
## site6          21           7           6           8           3           7
head(sample1$xy_dat)
##               x         y
## site1 0.5202372 0.1874358
## site2 0.8584040 0.7274013
## site3 0.7264336 0.8210651
## site4 0.5469540 0.8664260
## site5 0.8192766 0.3386090
## site6 0.2988451 0.1028196

In sample_quadrats() there is an option to exclude overlapping quadrats from the random sampling design, which is shown here in two examples with different numbers and sizes of the quadrats.

sample2 <- sample_quadrats(sim_com1, n_quadrats = 2, quadrat_area = 0.1,
                           avoid_overlap = TRUE)

sample3 <- sample_quadrats(sim_com1, n_quadrats = 20, quadrat_area = 0.001,
                           avoid_overlap = TRUE)

2 Transect sampling

In addition to random designs also transects can be sampled-. This requires specifying a position for the lower left quadrat as well as x and y distances between neighbouring quadrats.

sample4 <- sample_quadrats(sim_com1, n_quadrats = 10, quadrat_area = 0.005,
                           method = "transect", x0 = 0, y0 = 0.5, delta_x = 0.1,
                           delta_y = 0)

sample5 <- sample_quadrats(sim_com1, n_quadrats = 10, quadrat_area = 0.005,
                           method = "transect", x0 = 0, y0 = 0, delta_x = 0.1,
                           delta_y = 0.1)

3 Grid sampling

Finally, sampling quadrats can be arranged in a regular lattice. For this design users have to choose distances among the quadrats in x and y dimension as shown in the example.

sample6 <- sample_quadrats(sim_com1, n_quadrats = 25, quadrat_area = 0.005,
                           method = "grid", x0 = 0, y0 = 0, delta_x = 0.1,
                           delta_y = 0.1)

sample7 <- sample_quadrats(sim_com1, n_quadrats = 25, quadrat_area = 0.005,
                           method = "grid", x0 = 0.05, y0 = 0.05, delta_x = 0.2,
                           delta_y = 0.2)

By default, sample_quadrats() plots the chosen design. However, the plotting can be also deactivated for more efficient computations:

sample7a <- sample_quadrats(sim_com1, n_quadrats = 25, quadrat_area = 0.005,
                           method = "grid", x0 = 0.05, y0 = 0.05, delta_x = 0.2,
                           delta_y = 0.2, plot = FALSE)
head(sample7a$spec_dat[,1:10])
##       species_001 species_002 species_003 species_004 species_005 species_006
## site1          10           8           5           4           2           2
## site2          12           4           7           3           4           3
## site3          14           8           3           3           4           6
## site4          13           9           3           4           1           1
## site5          12           3           3           2           4           2
## site6          10           1           5           0           2           1
##       species_007 species_008 species_009 species_010
## site1           2           6           3           2
## site2           0           2           2           2
## site3           2           1           2           3
## site4           2           2           0           4
## site5           0           3           4           1
## site6           3           1           2           2

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.