optimalSplitConnMat {ConnMatTools} | R Documentation |
Iteratively, optimally split a connectivity matrix
Description
Algorithm for iteratively determining subpopulations of highly-connected sites. Uses an iterative method described in Jacobi et al. (2012)
Usage
optimalSplitConnMat(
conn.mat,
normalize.cols = TRUE,
make.symmetric = "mean",
remove.diagonal = FALSE,
cycles = 2,
betas = betasVectorDefault(ifelse(normalize.cols, dim(conn.mat)[2],
prod(dim(conn.mat))/sum(conn.mat)), steps),
steps = 10,
...
)
Arguments
conn.mat |
A square connectivity matrix. |
normalize.cols |
A boolean indicating if columns of conn.mat should be normalized by the sum of all elements in the column. Defaults to TRUE. |
make.symmetric |
A string indicating how to force conn.mat to be symmetric. "mean" (the default) will replace C_ij by (C_ij + C_ji)/2. "max" will replace C_ij by the maximum of C_ij and C_ji. |
remove.diagonal |
A boolean indicating if the diagonal elements of conn.mat should be removed before determining the subpopulations. Defaults to FALSE. |
cycles |
Number of times to pass over values in betas. |
betas |
Vector of beta values to try. If not given, will
default to |
steps |
Number of beta values to produce using betasVectorDefault. Ignored if betas argument is explicitly given. |
... |
further arguments to be passed to |
Value
A list with the following elements:
betas |
Vector of all beta values tested |
num.subpops |
Vector of number of subpopulations found for each value of beta |
qualities |
Vector of the quality statistic for each subpopulation division |
subpops |
A matrix with dimensions dim(conn.mat)[2] X length(betas) indicating which subpopulation each site belongs to |
best.splits |
A list indicating for each number of
subpopulations, which column of subpops contains the division with
the lowest quality statistic. E.g.,
|
Note
In Jacobi et al. (2012) paper, the connectivity matrix is
oriented so that C_ij
is dispersal from i to j, whereas in this R
package, the connectivity matrix is oriented so that C_ij
is
dispersal from j to i. This choice of orientation is arbitrary,
but one must always be consistent. From j to i is more common in
population dynamics because it works well with matrix
multiplication (e.g., settlers = conn.mat %*% eggs
).
Author(s)
David M. Kaplan dmkaplan2000@gmail.com
References
Jacobi, M. N., Andre, C., Doos, K., and Jonsson, P. R. 2012. Identification of subpopulations from connectivity matrices. Ecography, 35: 1004-1016.
See Also
See also splitConnMat
,
recSplitConnMat
, mergeSubpops
,
qualitySubpops
Examples
library(ConnMatTools)
data(chile.loco)
num <- prod(dim(chile.loco)) / sum(chile.loco)
betas <- betasVectorDefault(n=num,steps=4)
chile.loco.split <- optimalSplitConnMat(chile.loco,normalize.cols=FALSE,
betas=betas)
# Extra 3rd division
print(paste("Examining split with",names(chile.loco.split$best.splits)[1],
"subpopulations."))
pops <- subpopsVectorToList(chile.loco.split$subpops[,chile.loco.split$best.splits[[1]]$index])
reduce.loco <- reducedConnMat(pops,chile.loco)
sr <- selfRecruitment(reduce.loco)
lr <- localRetention(reduce.loco)
rlr <- relativeLocalRetention(reduce.loco)