r2dtable
), 2. connectance is as observed (as in shuffle.web
.)swap.web(N, web, verbose=FALSE, c.crit=1e4)
r2dtable
, i.e. it returns a list of randomised matrices.
In addition to r2dtable
is also keeps the connectance constant!
This function is thought of as a very constrained nullmodel for the analysis of bipartite webs.
It keeps two web properties constant: The marginal totals (as in r2dtable
and the
number of links (and hence connectance). A comparison of swap.web
- and r2dtable
-based
webs allows to elucidate the effect of evolutionary specialisation, since the non-realised connections may
represent swap.web
starts with an r2dtable
-web and successively
swap.web
works. It starts with a random web created by r2dtable
. Then, it finds,
randomly, 2x2 submatrices with entries all larger than 0. Next, it subtracts the minimum value from the diagonal and
adds it to the off-diagonal (minor diagonal). Thereby one cell becomes 0, but the column and row sums do not change.
This idea is adapted from the swap-algorithm used in various binary null models by Nick Gotelli. If the random web has
too few 0s (which is I have yet to encounter), then the opposite strategy is applied.
The algorithm in our implementation has some variations on finding the submatrix and constraining the number of
successless trials before starting on a new random matrix, but they are only for speeding up the process.r2dtable
and shuffle.web
data(Safariland)
swap.web(Safariland, N=2)
Run the code above in your browser using DataLab