rcpp_states_list_to_DEmat {cladoRcpp} | R Documentation |
C++ conversion of a states list to a dispersal-extinction matrix (DEmat)
Description
This function takes a list of states/ranges, a matrix describing relative dispersal probability (dmat) for each pair of areas, and a list describing the local extirpation probability for each area (elist), and calculates a transition matrix Qmat accordingly.
Usage
rcpp_states_list_to_DEmat(areas_list, states_list, dmat, elist,
amat = NULL, include_null_range = TRUE, normalize_TF = TRUE,
makeCOO_TF = FALSE, min_precision = 1e-26)
Arguments
areas_list |
a list of lists of areas (numbers, starting with 0) |
states_list |
a list of lists of areas (numbers, starting with 0) |
dmat |
dispersal matrix from area to area |
elist |
a list of extinction probabilities |
amat |
A matrix specifying the probability of instantaneous transition from one area to another (as in standard character rate matrices). |
include_null_range |
include the null () range (NA) in the matrix (LAGRANGE default=TRUE) |
normalize_TF |
should the columns be -1 * rowsums? |
makeCOO_TF |
should the returned matrix be COO or standard dense (the latter is default). |
min_precision |
what is the effective minimum size for 0 |
Details
The size of the matrix will expand dramatically with the number of areas. See numstates_from_numareas
for the calculation.
Above 7 or so areas, making Qmat
a COO-formatted matrix (COO=Coordinate list, see wikipedia, http://en.wikipedia.org/wiki/Sparse_matrix#Coordinate_list_.28COO.29 ) which can then be used in rexpokit
's sparse-matrix algorithms,
should be more efficient. (Sparse matrices are matrices made of mostly 0s.)
Value
dmat (a standard Q matrix)
Author(s)
Nicholas Matzke matzke@berkeley.edu
References
http://en.wikipedia.org/wiki/Sparse_matrix#Coordinate_list_.28COO.29 #bibliography /Dropbox/_njm/__packages/cladoRcpp_setup/cladoRcpp_refs.bib @cite Matzke_2013 @cite Matzke_2014 @cite ReeSmith2008
See Also
numstates_from_numareas
, convolve
Examples
# Specify the areas
areas_list_txt = c("A", "B", "C")
areas_list_txt
# rcpp_states_list_to_DEmat function requires a 0-based list of areas
areas_list = seq(0, length(areas_list_txt)-1, 1)
areas_list
## Not run:
# Calculate the list of 0-based indices for each possible
#geographic range, i.e. each combination of areas
states_list = rcpp_areas_list_to_states_list(areas=areas_list, maxareas=3,
include_null_range=FALSE)
states_list
states_list = rcpp_areas_list_to_states_list(areas=areas_list, maxareas=3,
include_null_range=TRUE)
states_list
states_list = rcpp_areas_list_to_states_list(areas=areas_list, maxareas=2,
include_null_range=TRUE)
states_list
states_list = rcpp_areas_list_to_states_list(areas=areas_list, maxareas=1,
include_null_range=TRUE)
states_list
# Hard-code the along-branch dispersal and extinction rates
d = 0.2
e = 0.1
# Calculate the dispersal weights matrix and the extinction weights matrix
# Equal dispersal in all directions (unconstrained)
areas = areas_list
distances_mat = matrix(1, nrow=length(areas), ncol=length(areas))
dmat = matrix(d, nrow=length(areas), ncol=length(areas))
dmat
# Equal extinction probability for all areas
elist = rep(e, length(areas))
elist
# Set up the instantaneous rate matrix (Q matrix, Qmat)
# DON'T force a sparse-style (COO-formatted) matrix here
force_sparse = FALSE
Qmat = rcpp_states_list_to_DEmat(areas_list, states_list, dmat, elist,
include_null_range=TRUE, normalize_TF=TRUE, makeCOO_TF=force_sparse)
Qmat
# DO force a sparse-style (COO-formatted) matrix here
force_sparse = TRUE
Qmat = rcpp_states_list_to_DEmat(areas_list, states_list, dmat, elist,
include_null_range=TRUE, normalize_TF=TRUE, makeCOO_TF=force_sparse)
Qmat
# Repeat with an amat
amat = dmat
amat[is.numeric(amat)] = 0.33
# Set up the instantaneous rate matrix (Q matrix, Qmat)
# DON'T force a sparse-style (COO-formatted) matrix here
force_sparse = FALSE
Qmat = rcpp_states_list_to_DEmat(areas_list, states_list, dmat, elist, amat,
include_null_range=TRUE, normalize_TF=TRUE, makeCOO_TF=force_sparse)
Qmat
# DO force a sparse-style (COO-formatted) matrix here
force_sparse = TRUE
Qmat = rcpp_states_list_to_DEmat(areas_list, states_list, dmat, elist, amat,
include_null_range=TRUE, normalize_TF=TRUE, makeCOO_TF=force_sparse)
Qmat
## End(Not run)