This function computes the maximum likelihood estimates of colonisation and local extinction rate for a given phylogeny and presence-absence data under the DAMOCLES model. These rate estimates are used to simulate null communities under the DAMOCLES model. Standardized effect size of mean nearest taxon distance (mntd), mean phylogentic distance (mpd) and loglikelihood are calculated For comparison, standardised effect sizes are also calculated relative to a "Random-Draw" null model i.e. presence absence randomised across tips
DAMOCLES_bootstrap(
phy = rcoal(10),
pa = matrix(c(phy$tip.label,sample(c(0,1),Ntip(phy),replace = T)),
nrow = Ntip(phy),ncol = 2),
initparsopt = c(0.1,0.1),
idparsopt = 1:length(initparsopt),
parsfix = 0,
idparsfix = (1:3)[-idparsopt],
pars2 = c(1E-3,1E-4,1E-5,1000),
pchoice = 0,
runs = 999,
estimate_pars = FALSE,
conf.int = 0.95
)phylogeny in phylo format
presence-absence table. The first column contains the labels of the species (corresponding to the tip labels in the phylogeny. The second column contains the presence (1) or absence (0) of species in the local community.
The initial values of the parameters that must be optimized
The ids of the parameters that must be optimized, e.g. 1:2 for extinction rate, and offset of immigration rate The ids are defined as follows: id == 1 corresponds to mu (extinction rate) id == 2 corresponds to gamma_0 (offset of immigration rate)
The values of the parameters that should not be optimized. See idparsfix.
The ids of the parameters that should not be optimized, e.g. c(1) if mu should not be optimized, but only gamma_0. In that case idparsopt must be c(2). The default is to fix the parameters not specified in idparsopt.
Vector of settings:
pars2[1] sets the relative tolerance in the parameters
pars2[2] sets the relative tolerance in the function
pars2[3] sets the absolute tolerance in the parameters
pars2[4] sets the maximum number of iterations
sets which p-value to optimize and with which root state to simulate (default pchoice = 0) pchoice == 0 correspond to optimizing sum of p_0f + p_1f, and simulating with an equal number of root states being 0 or 1 pchoice == 1 correspond to optimizing p_0f, and simulating with root state being 0 pchoice == 2 correspond to optimizing p_1f, and simulating with root state being 1
the number null communities to generate.
Whether to estimate parameters on the simulated datasets (default = FALSE).
The width of the conifdence intervals calculated on bootstrapped parameter estimates
mu gives the maximum likelihood estimate of mu and confidence intervals in brackets if estimate_pars = TRUE
gamma_0 gives the maximum likelihood estimate of gamma_0 and confidence intervals in brackets if bootstrap=TRUE
loglik gives the maximum loglikelihood
df gives the number of estimated parameters, i.e. degrees of feedom
conv gives a message on convergence of optimization; conv = 0 means convergence
n.obs gives the number of species locally present in the observed community
mntd.obs gives the MNTD of the observed community
mpd.obs gives the MPD of the observed community
runs gives the number of null communities simulated
mntd.mean.RD mean of MNTD from null communities generated by a "Random Draw" model
mntd.sd.RD standard deviation of MNTD from null communities generated by a "Random Draw" model
mntd.obs.z.RD standardized effect size of MNTD compared to null communities generated by a "Random Draw" model (= -1*(mntd.obs - mntd.mean.RD)/ mntd.sd.RD)
mntd.obs.rank.RD rank of observed MNTD compared to null communities generated by a "Random Draw" model
mntd.obs.q.RD quantile of observed MNTD vs. null communities (= mntd.obs.rank.RD /runs + 1)
mpd.mean.RD mean of MPD from null communities generated by a "Random Draw" model
mpd.sd.RD standard deviation of MPD from null communities generated by a "Random Draw" model
mpd.obs.z.RD standardized effect size of MPD compared to null communities generated by a "Random Draw" model (= -1*(mpd.obs - mpd.mean.RD)/ mpd.sd.RD)
mpd.obs.rank.RD rank of observed MPD compared to null communities generated by a "Random Draw" model
mpd.obs.q.RD quantile of observed MPD vs. null communities (= mpd.obs.rank.RD /runs + 1)
n.mean.DAMOCLES mean number of species locally present in the null communities generated by DAMOCLES
mntd.mean.DAMOCLES mean of MNTD from null communities generated by DAMOCLES
mntd.sd.DAMOCLES standard deviation of MNTD from null communities generated by DAMOCLES
mntd.obs.z.DAMOCLES standardized effect size of MNTD compared to null communities generated by DAMOCLES (= -1*(mntd.obs - mntd.mean.DAMOCLES)/ mntd.sd.DAMOCLES)
mntd.obs.rank.DAMOCLES rank of observed MNTD compared to null communities generated by DAMOCLES
mntd.obs.q.DAMOCLES quantile of observed MNTD vs. null communities (= mntd.obs.rank.DAMOCLES /runs + 1)
mpd.mean.DAMOCLES mean of MPD from null communities generated by DAMOCLES
mpd.sd.DAMOCLES standard deviation of MPD from null communities generated by DAMOCLES
mpd.obs.z.DAMOCLES standardized effect size of MPD compared to null communities generated by DAMOCLES (= -1*(mpd.obs - mpd.mean.DAMOCLES)/ mpd.sd.DAMOCLES)
mpd.obs.rank.DAMOCLES rank of observed MPD compared to null communities generated by DAMOCLES
mpd.obs.q.DAMOCLES quantile of observed MPD vs. null communities (= mpd.obs.rank.DAMOCLES /runs + 1)
loglik.mean.DAMOCLES mean of loglikelihoods from null communities generated by DAMOCLES
loglik.sd.DAMOCLES standard deviation of loglikelihoods from null communities generated by DAMOCLES
loglik.obs.z.DAMOCLES standardized effect size of loglikelihood compared to null communities generated by DAMOCLES (= -1*(loglik.obs - loglik.mean.DAMOCLES)/ loglik.sd.DAMOCLES)
loglik.obs.rank.DAMOCLES rank of observed loglikelihood compared to null communities generated by DAMOCLES
loglik.obs.q.DAMOCLES quantile of observed loglikelihoods vs. null communities (= loglik.obs.rank.DAMOCLES /runs + 1)
run gives the simulation run
root.state.print gives the state of the ancestral species in the local community assumed in the simulation, i.e. present (1) or absent (0)
n gives the number of species locally present in the observed community
n.RD gives the number of species locally present in the null community generated by a "Random Draw" model
mntd.RD gives the MNTD of the null community generated by a "Random Draw" model
mpd.RD gives the MPD of the null community generated by a "Random Draw" model
n.DAMOCLES gives the number of species locally present in the null community generated by DAMOCLES
mntd.DAMOCLES gives the MNTD of the null community generated by DAMOCLES
mpd.DAMOCLES gives the MPD of the null community generated by DAMOCLES
loglik.DAMOCLES gives the maximum loglikelihood for the null community generated by DAMOCLES
mu.DAMOCLES gives the maximum likelihood estimate of mu for the null community generated by DAMOCLES
gamma_0.DAMOCLES gives the maximum likelihood estimate of gamma_0 for the null community generated by DAMOCLES
The output is a list of two dataframes. The first dataframe, summary_table, contains the summary results. The second dataframe, null_community_data, contains decsriptive statistics for each null community.
Pigot, A.L. & R.S. Etienne (2015). A new dynamic null model for phylogenetic community structure. Ecology Letters 18: 153-163.
# NOT RUN {
data(NWPrimates_data)
out = DAMOCLES_bootstrap(
phy = NWPrimates_data[[1]],
pa = NWPrimates_data[[2]],
initparsopt = c(0.01,1.8),
idparsopt = c(1,2),
pars2 = c(1E-3,1E-4,1E-5,1000),
pchoice = 1,
runs = 2,
estimate_pars = TRUE,
conf.int = 0.95)
# }
Run the code above in your browser using DataLab