Extract a relative biomass/abundance index, center of gravity, or effective area occupied
Extract a relative biomass/abundance index, center of gravity, or effective area occupied
get_index( obj, bias_correct =FALSE, level =0.95, area =1, silent =TRUE,...)get_index_split( obj, newdata, bias_correct =FALSE, nsplit =1, level =0.95, area =1, silent =FALSE, predict_args = list(),...)get_cog( obj, bias_correct =FALSE, level =0.95, format = c("long","wide"), area =1, silent =TRUE,...)get_eao(obj, bias_correct =FALSE, level =0.95, area =1, silent =TRUE,...)
Arguments
obj: Output from predict.sdmTMB() with return_tmb_object = TRUE. Alternatively, if sdmTMB() was called with do_index = TRUE or if using the helper function get_index_split(), an object from sdmTMB().
bias_correct: Should bias correction be implemented TMB::sdreport()?
level: The confidence level.
area: Grid cell area. A vector of length newdata from predict.sdmTMB()or a value of length 1 which will be repeated internally to match or a character value representing the column used for area weighting.
silent: Silent?
...: Passed to TMB::sdreport().
newdata: New data (e.g., a prediction grid by year) to pass to predict.sdmTMB() in the case of get_index_split().
nsplit: The number of splits to do the calculation in. For memory intensive operations (large grids and/or models), it can be helpful to do the prediction, area integration, and bias correction on subsets of time slices (e.g., years) instead of all at once. If nsplit > 1, this will usually be slower but with reduced memory use.
predict_args: A list of arguments to pass to predict.sdmTMB() in the case of get_index_split().
format: Long or wide.
Returns
For get_index(): A data frame with a columns for time, estimate, lower and upper confidence intervals, log estimate, and standard error of the log estimate.
For get_cog(): A data frame with a columns for time, estimate (center of gravity in x and y coordinates), lower and upper confidence intervals, and standard error of center of gravity coordinates.
For get_eao(): A data frame with a columns for time, estimate (effective area occupied; EAO), lower and upper confidence intervals, log EAO, and standard error of the log EAO estimates.
Examples
library(ggplot2)# use a small number of knots for this example to make it fast:mesh <- make_mesh(pcod, c("X","Y"), n_knots =60)# fit a spatiotemporal model:m <- sdmTMB( data = pcod, formula = density ~0+ as.factor(year), time ="year", mesh = mesh, family = tweedie(link ="log"))# prepare a prediction grid:nd <- replicate_df(qcs_grid,"year", unique(pcod$year))# Note `return_tmb_object = TRUE` and the prediction grid:predictions <- predict(m, newdata = nd, return_tmb_object =TRUE)# biomass index:ind <- get_index(predictions, bias_correct =TRUE)ind
ggplot(ind, aes(year, est))+ geom_line()+ geom_ribbon(aes(ymin = lwr, ymax = upr), alpha =0.4)+ ylim(0,NA)# do that in 2 chunks# only necessary for very large grids to save memory# will be slower but save memory# note the first argument is the model fit object:ind <- get_index_split(m, newdata = nd, nsplit =2, bias_correct =TRUE)# center of gravity:cog <- get_cog(predictions, format ="wide")cog
ggplot(cog, aes(est_x, est_y, colour = year))+ geom_point()+ geom_linerange(aes(xmin = lwr_x, xmax = upr_x))+ geom_linerange(aes(ymin = lwr_y, ymax = upr_y))+ scale_colour_viridis_c()# effective area occupied:eao <- get_eao(predictions)eao
ggplot(eao, aes(year, est))+ geom_line()+ geom_ribbon(aes(ymin = lwr, ymax = upr), alpha =0.4)+ ylim(0,NA)
References
Geostatistical model-based indices of abundance (along with many newer papers):
Shelton, A.O., Thorson, J.T., Ward, E.J., and Feist, B.E. 2014. Spatial semiparametric models improve estimates of species abundance and distribution. Canadian Journal of Fisheries and Aquatic Sciences 71(11): 1655--1666. tools:::Rd_expr_doi("10.1139/cjfas-2013-0508")
Thorson, J.T., Shelton, A.O., Ward, E.J., and Skaug, H.J. 2015. Geostatistical delta-generalized linear mixed models improve precision for estimated abundance indices for West Coast groundfishes. ICES J. Mar. Sci. 72(5): 1297–1310. tools:::Rd_expr_doi("10.1093/icesjms/fsu243")
Geostatistical model-based centre of gravity:
Thorson, J.T., Pinsky, M.L., and Ward, E.J. 2016. Model-based inference for estimating shifts in species distribution, area occupied and centre of gravity. Methods Ecol Evol 7(8): 990–1002. tools:::Rd_expr_doi("10.1111/2041-210X.12567")
Geostatistical model-based effective area occupied:
Thorson, J.T., Rindorf, A., Gao, J., Hanselman, D.H., and Winker, H. 2016. Density-dependent changes in effective area occupied for sea-bottom-associated marine fishes. Proceedings of the Royal Society B: Biological Sciences 283(1840): 20161853. tools:::Rd_expr_doi("10.1098/rspb.2016.1853")
Bias correction:
Thorson, J.T., and Kristensen, K. 2016. Implementing a generic method for bias correction in statistical models using random effects, with spatial and population dynamics examples. Fisheries Research 175: 66–74. tools:::Rd_expr_doi("10.1016/j.fishres.2015.11.016")