rcpp_states_list_to_DEmat {cladoRcpp} | R Documentation |
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.
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)
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 |
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.)
dmat (a standard Q matrix)
Nicholas Matzke matzke@berkeley.edu
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
numstates_from_numareas
, convolve
# 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)