Elasticity in Leslie Matrix

7 messages
Open this post in threaded view
|

Elasticity in Leslie Matrix

 Dear R-users, I would like to calculate elasticities and sensitivities of each parameters involved in the following transition matrix: A <- matrix(c( sigma*s0*f1,  sigma*s0*f2,                s,                 v ), nrow=2, byrow=TRUE,dimnames=list(stage,stage)) The command "eigen.analysis" avaliable in package "popbio" provides sensibility matrix and elasticity matrix (same dimension than A). I would like to know if there is a way to calculate separetely the elasticity of sigma, s0, f1, f2, s and v ? Thanks and regards, privalan
Open this post in threaded view
|

Re: Elasticity in Leslie Matrix

 > I would like to calculate elasticities and sensitivities of each parameters > involved in the following transition matrix: > > A <- matrix(c( > sigma*s0*f1,  sigma*s0*f2, >                s,                 v > ), nrow=2, byrow=TRUE,dimnames=list(stage,stage)) > > The command "eigen.analysis" avaliable in package "popbio" provides > sensibility matrix and elasticity matrix (same dimension than A). I would > like to know if there is a way to calculate separetely the elasticity of > sigma, s0, f1, f2, s and v ? > If you want the eigenvalue second derivatives, check the secder and fullsecder functions in the demogR package (also elassens for partial derivatives of the eigenvalue elasticities).  A description of that package is also found in the recent special issue of Ecology in R in Journal of Statistical Software.   Chris ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

Re: Elasticity in Leslie Matrix

Open this post in threaded view
|

Re: Elasticity in Leslie Matrix

 After a short exchange with the original questioner, I wrote the following function to calculate the elasticities of lower level variables in population transition matrices (Leslie matrices etc.) Perhaps it will be of use to others. There is no error-checking, so use with care. Users should consult Caswell (2001) for reference. Cheers, Simon. # example values to construct leslie matrix vl <- list(f1=1, f2=4, s0=.6, s=.4, v=.9, sigma=.5) # Expressions for each matrix element F1 <- expression(sigma*s0*f1) F2 <- expression(sigma*s0*f2) S <- expression(s) V <- expression(v) el <- c(F1, F2, S, V) elas.var <- function (elements, varlist) {   # elements should be a vector of expressions corresponding to the elements   # of the leslie matrix, in terms of the variables in varlist   require(demogR)   res <- vector("list", length(varlist))   deriv.funcs <- sapply(elements, deriv, namevec=names(varlist), function.arg=TRUE)   devs <- lapply(deriv.funcs, function (x) do.call(x, varlist))   leslie.mat <-  matrix(as.numeric(devs), nrow=sqrt(length(elements)), byrow=TRUE)   eig <- eigen.analysis(leslie.mat)   for (i in 1:length(varlist)) {     derivs <- matrix( as.numeric(lapply(devs, function (x) x@gradient[i])), nrow=sqrt(length(elements)), byrow=TRUE)     res[[i]] <- varlist[[i]]/eig\$lambda1*sum(derivs*eig\$sensitivities)     names(res)[i] <- names(varlist)[i]   }   res } # example output > elas.var(el, vl) \$f1 [1] 0.06671376 \$f2 [1] 0.2346064 \$s0 [1] 0.3013201 \$s [1] 0.2346064 \$v [1] 0.4640735 \$sigma [1] 0.3013201 Simon Blomberg, BSc (Hons), PhD, MAppStat. Lecturer and Consultant Statistician Faculty of Biological and Chemical Sciences The University of Queensland St. Lucia Queensland 4072 Australia T: +61 7 3365 2506 email: S.Blomberg1_at_uq.edu.au Policies: 1.  I will NOT analyse your data for you. 2.  Your deadline is your problem. The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. - John Tukey.         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|