R: Gets IPM output from a list of P matrices (only survival and...
sampleIPMOutput
R Documentation
Gets IPM output from a list of P matrices (only survival and size information) or full IPMs (P matrices + F matrices; the latter include sexual reproduction information).
Description
Gets synthetic values including life expectancy, passage time, and, if a fecundity matrix is available, population growth rate (lambda), stable stage distribution, reproductive output, etc. It is helpful when building multiple IPMs for study of parameter uncertainty or stochastic dynamics.
List of survival-size IPM matrices for which summary statistics desired. When this information is included, population growth rate (lambda), and stable stage distribution will be provided.
PMatrixList
List of survival-growth (P) matrices for which summary statistics desired. When this information is included, only passage time and sizeToAge calculations will be provided
passageTimeTargetSize
Target size for passage time. If none is provided defaults to the median of the IPM meshpoints.
sizeToAgeStartSize
Starting size to determine the expected age which sizeToAgeTargetSize will be reached. If none is provided defaults to the minimum of the IPM meshpoints.
sizeToAgeTargetSize
Target size to determine the expected age which sizeToAgeTargetSize will be reached. If none is provided defaults to the IPM meshpoints.
warn
turn warning messages on/off.
Value
LE
matrix of life expectancies, columns correspond to
meshpoints, rows corresponding to each element of the list of P matrices
pTime
matrix of passage times to the targetSize from each of
the meshpoints (columns) and for each element in the P matrix list
(columns).
lambda
vector of population growth rates corresponding to value obtained
combining each element of the list of P matrices with the
corresponding element in the list of F matrices; if no F matrix list
is provided, it returns a vector of NAs.
stableStage
matrix of stable stage distributions rows corresponding to values obtained.
combining each element of the list of Pmatrices with the
corresponding element in the list of Fmatrices; if no Fmatrix list
is provided, this is a matrix of NAs.
meshpoints
matrix meshpoints.
resSize
matrix providing target sizes for size to age estimate (assuming age=1
at sizeStart), of length nsizeToAge space equally between the smallest and largest meshpoints.
resAge
matrix providing time in time-steps to get to resSize,
rows corresponding sequential elements in the list of P matrices.
Note
This function has replaced the functionality of getIPMoutput and getIPMoutputDirect. Those functions are no longer supported but have been hidden (.getIPMoutput and .getIPMoutputDirect) and can be accessed for backward compatibility.
Author(s)
Cory Merow, C. Jessica E. Metcalf, Sean M. McMahon, Roberto Salguero-Gomez, Eelke Jongejans.
References
Zuidema, Jongejans, Chien, During & Schieving. Integral projection models for trees: a new parameterization method and a validation of model output. Journal of Ecology 98, p345-355.
# ===========================================================================
# Sample Vital Rate Objects
# Parametric bootstrap sample for a growth object
dff <- generateData(type='discrete')
gr1 <- makeGrowthObj(dff)
gr1List=sampleVitalRateObj(gr1,nSamp=9)
# Parametric bootstrap sample for a survival object
sv1 <- makeSurvObj(dff)
sv1List=sampleVitalRateObj(sv1,nSamp=9)
# Parametric bootstrap sample for a fecundity object
fv1 <- makeFecObj(dff)
fv1List=sampleVitalRateObj(
fv1,nSamp=9,
nDiscreteOffspringTransitions =100,
nOffspring=100)
# Parametric bootstrap sample for a discrete transition object
dt1 <- makeDiscreteTrans(dff)
dt1List=sampleVitalRateObj(
dt1,nSamp=9,
nDiscreteGrowthTransitions=100)
# ===========================================================================
# Make a list of growth/survival (P) matrices (omitting fecundity)
Pmatrixlist=sampleIPM(
growObjList=gr1List,
survObjList=sv1List,
fecObjList =NULL,
nBigMatrix = 20, minSize = -5, maxSize = 20)
# plot results
par(mfrow=c(3,3))
lapply(Pmatrixlist,image)
# Combine the list of fecundity objects with a single survival
# and growth object in a list of IPMs to look at just the impact
# of uncertainty in fecundity parameter estimates on population growth rate
IPMlist2=sampleIPM(
growObjList=list(gr1),
survObjList=list(sv1),
fecObjList =fv1List,
discreteTransList=list(dt1),
nBigMatrix = 20, minSize = -5, maxSize = 20)
# plot results
lapply(IPMlist2,image)
# Combine the lists of all vital rate objects in a list of IPMs
# to look at the impact of uncertainty in all parameters on population
# growth rate
IPMlist3=sampleIPM(
growObjList=gr1List,
survObjList=sv1List,
fecObjList =fv1List,
discreteTransList=list(dt1),
nBigMatrix = 20, minSize = -5, maxSize = 20)
# plot results
lapply(IPMlist3,image)
# ===========================================================================
# Summarize the outputs
# Get uncertainty in passage time from the list of growth/survival matrices
IPMout1=sampleIPMOutput(PMatrixList=Pmatrixlist)
qLE=apply(IPMout1[['LE']],2,quantile,probs=c(.025,.5,.975))
plot(IPMout1$meshpoints,qLE[2,],type='l',ylim=c(0,max(qLE)))
lines(IPMout1$meshpoints,qLE[1,],type='l',lty=3)
lines(IPMout1$meshpoints,qLE[3,],type='l',lty=3)
# Get uncertainty in lambda from the list of IPMs where only
# fecundity varied
IPMout2=sampleIPMOutput(IPMList=IPMlist2)
qlambda=quantile(IPMout2[['lambda']],probs=c(.025,.5,.975))
boxplot(IPMout2[['lambda']])
# Get uncertainty in lambda and passage time from size 5 to a
# series of size from the list of IPMs where all vital rates varied
IPMout3=sampleIPMOutput(
IPMList=IPMlist3,
passageTimeTargetSize=c(10),
sizeToAgeStartSize=c(5),
sizeToAgeTargetSize=c(6,7,8,9,10))
qlambda=quantile(IPMout3[['lambda']],probs=c(.025,.5,.975))
boxplot(IPMout3[['resAge']])
Results
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(IPMpack)
Loading required package: Matrix
Loading required package: MASS
Loading required package: nlme
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/IPMpack/sampleIPMOutput.Rd_%03d_medium.png", width=480, height=480)
> ### Name: sampleIPMOutput
> ### Title: Gets IPM output from a list of P matrices (only survival and
> ### size information) or full IPMs (P matrices + F matrices; the latter
> ### include sexual reproduction information).
> ### Aliases: sampleIPMOutput .getIPMoutput .getIPMoutputDirect
>
> ### ** Examples
>
> # ===========================================================================
> # Sample Vital Rate Objects
> # Parametric bootstrap sample for a growth object
> dff <- generateData(type='discrete')
> gr1 <- makeGrowthObj(dff)
> gr1List=sampleVitalRateObj(gr1,nSamp=9)
Loading required package: mvtnorm
Loading required package: MCMCpack
Loading required package: coda
##
## Markov Chain Monte Carlo Package (MCMCpack)
## Copyright (C) 2003-2016 Andrew D. Martin, Kevin M. Quinn, and Jong Hee Park
##
## Support provided by the U.S. National Science Foundation
## (Grants SES-0350646 and SES-0350613)
##
>
> # Parametric bootstrap sample for a survival object
> sv1 <- makeSurvObj(dff)
> sv1List=sampleVitalRateObj(sv1,nSamp=9)
>
> # Parametric bootstrap sample for a fecundity object
> fv1 <- makeFecObj(dff)
[1] "Warning - offspring splitter indicates more than just continuous stages. No fecundity by the discrete stages supplied in fecByDiscrete; assumed that is 0"
> fv1List=sampleVitalRateObj(
+ fv1,nSamp=9,
+ nDiscreteOffspringTransitions =100,
+ nOffspring=100)
>
> # Parametric bootstrap sample for a discrete transition object
> dt1 <- makeDiscreteTrans(dff)
> dt1List=sampleVitalRateObj(
+ dt1,nSamp=9,
+ nDiscreteGrowthTransitions=100)
> # ===========================================================================
> # Make a list of growth/survival (P) matrices (omitting fecundity)
> Pmatrixlist=sampleIPM(
+ growObjList=gr1List,
+ survObjList=sv1List,
+ fecObjList =NULL,
+ nBigMatrix = 20, minSize = -5, maxSize = 20)
> # plot results
> par(mfrow=c(3,3))
> lapply(Pmatrixlist,image)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
>
> # Combine the list of fecundity objects with a single survival
> # and growth object in a list of IPMs to look at just the impact
> # of uncertainty in fecundity parameter estimates on population growth rate
> IPMlist2=sampleIPM(
+ growObjList=list(gr1),
+ survObjList=list(sv1),
+ fecObjList =fv1List,
+ discreteTransList=list(dt1),
+ nBigMatrix = 20, minSize = -5, maxSize = 20)
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
Warning messages:
1: In sampleIPM(growObjList = list(gr1), survObjList = list(sv1), fecObjList = fv1List, :
Length of growth object list is less than the length of another vital rate object list, so some members of the growth object list have been repeated.
2: In sampleIPM(growObjList = list(gr1), survObjList = list(sv1), fecObjList = fv1List, :
Length of survival object list is less than the length of another vital rate object list, so some members of the survival object list have been repeated.
> # plot results
> lapply(IPMlist2,image)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
>
> # Combine the lists of all vital rate objects in a list of IPMs
> # to look at the impact of uncertainty in all parameters on population
> # growth rate
> IPMlist3=sampleIPM(
+ growObjList=gr1List,
+ survObjList=sv1List,
+ fecObjList =fv1List,
+ discreteTransList=list(dt1),
+ nBigMatrix = 20, minSize = -5, maxSize = 20)
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
[1] "Warning: fertility values < 0 exist in matrix, consider transforms. Negative values set to zero"
> # plot results
> lapply(IPMlist3,image)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
>
> # ===========================================================================
> # Summarize the outputs
> # Get uncertainty in passage time from the list of growth/survival matrices
> IPMout1=sampleIPMOutput(PMatrixList=Pmatrixlist)
[1] "no target size for passage time provided; taking meshpoint median"
[1] "no starting size for size to age provided; taking minimum size"
[1] "no target size for size to age provided; taking meshpoint values"
> qLE=apply(IPMout1[['LE']],2,quantile,probs=c(.025,.5,.975))
> plot(IPMout1$meshpoints,qLE[2,],type='l',ylim=c(0,max(qLE)))
> lines(IPMout1$meshpoints,qLE[1,],type='l',lty=3)
> lines(IPMout1$meshpoints,qLE[3,],type='l',lty=3)
>
> # Get uncertainty in lambda from the list of IPMs where only
> # fecundity varied
> IPMout2=sampleIPMOutput(IPMList=IPMlist2)
[1] "no target size for passage time provided; taking meshpoint median"
[1] "no starting size for size to age provided; taking minimum size"
[1] "no target size for size to age provided; taking meshpoint values"
> qlambda=quantile(IPMout2[['lambda']],probs=c(.025,.5,.975))
> boxplot(IPMout2[['lambda']])
>
> # Get uncertainty in lambda and passage time from size 5 to a
> # series of size from the list of IPMs where all vital rates varied
> IPMout3=sampleIPMOutput(
+ IPMList=IPMlist3,
+ passageTimeTargetSize=c(10),
+ sizeToAgeStartSize=c(5),
+ sizeToAgeTargetSize=c(6,7,8,9,10))
> qlambda=quantile(IPMout3[['lambda']],probs=c(.025,.5,.975))
> boxplot(IPMout3[['resAge']])
>
>
>
>
>
> dev.off()
null device
1
>