- Function hfv_qc() now checks the number of individuals with single transitions in hfv datasets.

- Eliminated warnings for multiple similar transitions in mpm_create() when the transitions are of different types.

- Corrected erroneous milepost messages in function modelsearch().

Function miniMod() was developed to create minimum memory vital rate model summaries in vrm_input format useable as substitutes for lefkoMod objects.

Function modelsearch() can now test three annual covariates in addition to the three individual covariates.

All function-based matrix estimation and projection functions can now handle values of three annual covariates.

Function modelsearch() now models fixed factor interactions separately from size and reproductive status, allowing greater flexibility to choose global models.

Some help entries have been corrected and updated.

Error messages standardized throughout much of the package.

Function modelsearch() now outputs linear models with function calls that point to correctly named data subsets, all of which can be exported with the data_out argument.

Function matrix_interp() no longer gives a fatal error when run on a historical lefkoLTRE object with part != 2.

Matrix creation and projection functions using vrm_input objects no longer produce Gaussian output when provided with negative binomial inputs.

Function verticalize3() no longer produces errors when reproductive status, fecundity status, or observation status variables are not provided.

Function matrix_interp() now also handles standard matrix and sparse matrix (dgCMatrix format) inputs.

Zero-inflated Poisson and negative binomial GLMs have been enabled again.

Function overwrite() is now deprecated and links to function supplemental().

Examples for functions involving function-based MPMs have been altered to showcase generalized linear models developed with base R.

Function create_pm() now uses the same model parameter naming conventions as verticalize3() and historicalize3().

Matrix creation and projection examples now use basic linear models rather than function modelsearch().

Function modelsearch() now preferentially removes the most highly categorized random covariate when a global model fails, if using mixed modeling.

Function hfv_qc() now also shows the numbers of categories in variables that can be used as random factors as a part of the output.

Zero-inflation estimation corrected to properly account for the mixture model in Poisson and negative binomial versions.

Function summary.lefkoProj() no longer fails when summarizing appended projections with differing numbers of time steps.

Function modelsearch() no longer improperly subsets data in Leslie MPM searches.

Function modelsearch() now correctly removes independent terms to simplify model structure if global model development fails.

Fixed structural bugs preventing matrix_interp() from working with functions sensitivity3() and elasticity3().

Functions projection3(), f_projection3(), slambda3(), stablestage3(), repvalue3(), sensitivity3(), elasticity3(), and ltre3() can now perform first-order Markovian temporally stochastic simulations.

Functions stablestage3() and repvalue3() can now handle stochastic projections.

Functions sensitivity3() and elasticity3() can now be forced to return output in either standard or sparse matrix format for single matrix inputs.

Function append_lP() created to append projections to each other.

Function matrix_interp() created to aid in summarizing results from analyses of huge matrices.

Function lambda3() now estimates population growth rate and its logarithm in lefkoProj objects.

Some arguments have been standardized across population dynamics functions.

Zero-inflated Poisson and negative binomial GLMs have been disabled in function modelsearch() pending issues in package pscl.

Vignettes updated to deal with breaking changes.

Function f_projection3() no longer fails when non-stochastic projections are conducted with multiple times.

Function f_projection3() no longer fails when the number of times requested is lower than the number of recognized times in the dataset.

Functions stablestage3() and repvalue3() no longer fail when a tweights vector or matrix is entered.

Functions sensitivity3() and elasticity3() no longer fail under some conditions involving sparse matrices.

Function markov_run() created to allow 1st order Markovian temporally stochastic simulations.

Function create_lM() can now handle both regular and sparse matrices.

- Some warning and error messages have been simplified.

- Function projection3() no longer crashes when using a fixed vector of year inputs with lefkoMat objects holding patch-level MPMs.

All MPMs can now be estimated without supplemental tables.

Functions add_lM(), delete_lM(), and subset_lM() no longer fail with sparse matrices.

- Function projection3() no longer adds an extra projection to matrix projections of mean MPMs created through the lmean() function.

Function density_input() no longer throws an error when using shorthand stage group designations with age-by-stage MPMs.

Functions sensitivity3() and elasticity3() no longer produce zero division errors in some stochastic runs with sparse matrix output.

Fixed indexing issue affecting propagation of multipliers for supplement tables used in function-based and raw Leslie MPMs.

Fixed package documentation.

- Function add_stage() has been created to add stages to existing lefkoMat objects.

- Options repmod and fecmod were standardized to fecmod in MPM creation functions.
- Function hfv_qc() now only displays test results for vital rate models listed in the vitalrates argument.
- Functions rleslie() and fleslie() now include an entrystage column in the automatically generated stageframes included as ahstages object.

- Function hfv_qc() can now handle Gaussian checks on variables with more than 5000 data points.
- Function historicalize3() now correctly calculates first seen time, last seen time, observed age, and alive status in time t+1.
- Function supplemental() no longer yields an error for age-based MPM supplements with estage2 option set to all NAs.
- Function start_input() no longer yields errors for age-based MPMs.
- Function density_input() no longer yields errors for age-based MPMs.
- Historical matrix creation functions no longer call warnings that multiple rows in supplement tables show the same transition even when they do not.
- Function lambda3() no longer calls an error when an eigenvalue of 0 is detected.

- Function ltre3() now uses tolerance limits to determine non-zero elements and contributions in sLTRE and SNA-LTRE analyses.
- Stochastic LTREs are now more easily interruptible.

- Functions summary.lefkoLTRE() and summary.lefkoElas() now properly sort contributions from fecundity transitions.

- Function ltre3() can now handle SNA-LTRE of large historical MPMs.

- Function sf_create() now allows flexible assignment of representative stage sizes and associated minimum and maximum bin boundaries.

- Function rlefko2() now produces an interpretable error message if an incorrectly developed stageframe is applied.
- Warnings added about use of large input matrices for SNA-LTRE analysis.

- Fixed proxy transition issue in function edit_lM().

- Patch variable in labels object of dataset anthyllis has been corrected to match population names in the source paper.

- Function create_lM() now includes an empty dataqc element in lefkoMat output.

- Function edit_lM() no longer requires a dataqc element in input lefkoMat objects.
- Function summary.lefkoMat() correctly interprets lefkoMat objects missing a dataqc element.

- Function summary_hfv() now includes an error checking function that searches hfv data frames for problems in stage assignment.
- New function mpm_create() is now the workhorse function handling all MPM creation. All previous matrix creation functions have been rewritten as wrapper functions for this new function, with arguments and handling as before to prevent compatibility issues.
- Function modelsearch() can now handle fixed factor individual covariates, and can use a different suite of independent factors for the global model of each vital rate.
- Function mpm_create() and all matrix creation functions now handle fixed factor variables as independent covariates, as well as random covariates and fixed quantitative variables.
- Function lmean() can produce arithmetic mean matrices for simple lists of square, equidimensional matrices.
- Functions f_projection3(), projection3(), stablestage3(), repvalue3(), sensitivity3(), elasticity3(), and ltre3() now all have override settings for sparse vs dense matrix encoding, allowing greater control over speed.
- Core matrix functions now allow sparse matrix output.
- Functions lmean(), lambda3(), slambda3(), stablestage3(), repvalue3(), sensitivity3(), elasticity3(), image3(), ltre3(), cond_hmpm(), cond_diff(), projection3(), summary.lefkoElas(), and summary.lefkoMat() can handle sparse matrix format MPMs.
- Functions stablestage3.list() and repvalue3.list() have been added.
- Function supplemental() now also handles age transitions in Leslie and age-by-stage MPMs, and in f_projection3() runs involving them.
- Function edit_lM() has been added to edit MPMs with external data.
- New dataset Pyrola hs been added.
- Function create_lM() now also allows direct imports from the COMPADRE and COMADRE databases as lefkoMat objects.

- Functions utilizing a choice of sparse vs dense matrix approaches have been sped up via the optimization of criteria used to determine which approach to take.
- Functions cond_hmpm() and cond_diff() now perform faster, with better memory management, and with corrected list structure under err_check mode.
- Cpp header files are now visible to other packages.
- Function hist_null() no longer attempts to remove impossible transitions.
- Overhead cut on projection3(), and related function that involve projecting matrices forward or backward.
- Function modelsearch() now throws an informative error if too many parameters are tested for exhaustive model dredging to operate.
- Function modelsearch() now simplifies certain zero-inflated models if they run past the limits of MuMIn’s dredge() function.
- Substantial speed up to function-based matrix creation, particular when reducing matrices.
- All matrix creation functions now have the ability to output only U and F matrices (“simple” option), and to produce error-checking output (“err_check” option).
- Observation status variables may now be set in all raw MPM creation functions.
- NRasRep option added in raw matrix creation functions for cases where stages have not been assigned.
- Functions verticalize3() and historicalize3() now standardize datasets almost 2x more quickly.
- Function modelsearch() now automatically subsets datasets down to complete cases of the variables used in the modeling to prevent failures.
- User-interrupt now enabled in matrix creation functions.
- Function ltre3() is now a generic function that handles lefkoMat, matrix, and matrix list inputs.
- Function lambda3() now handles a variety of input scenarios for the ‘sparse’ argument.
- Function overwrite() has been marked as deprecated.

- Function hfv_qc() no longer gives an error when secondary or tertiary size variable names are provided.
- Functions rleslie() and fleslie() now properly create stageframe age IDs.
- Functions rlefko3() and rlefko2() now properly parse non-standard observation and maturity status variables for stage determination when an hfv data frame is provided without stages already determined.
- Corrected inaccurate age-stage indexing in object agestages resulting from function arlefko2().
- Corrected assignment of population matrix tags to the labels data frame in lefkoMat objects produced by lmean() under the “patch” option.
- Fixed fatal error when using summary.lefkoMat() with vrm_imported function- based MPMs.
- Fixed fatal error occurring when summary.lefkoElas() is used with a lefkoElas object developed from a list of matrices.
- Function sf_skeleton() added to create a basic, empty stageframe.
- Fixed bug yielding incorrect fecundity when prebreeding in fleslie().
- Eliminated bug causing rare glitches in fecunsdity estimation when stage order is altered by MPM creation functions.
- Fixed issue causing survival and fecundity estimation to ignore individuals older than max age in function rleslie() under continue = TRUE.
- Corrected issue in which survival and fecundity multipliers provided via supplemental() were only incorporated into function-based MPMs involving stages if the transitions involved proxy estimation.
- Corrected citation information.

- Function modelsearch() now allows “partial” option, which shows model milepost messages but silences all others. Also allows “yes” and “no” in place of TRUE and FALSE.
- Function density_input() has been rewritten to handle all standard stage shorthand codes.

- NEWS file corrected to show version numbers.
- Function modelsearch() now uses a simple R-squared approach to assess accuracy of all models except binomial models, which is assessed as traditional logistic accuracy.
- Vignettes updated to reflect changes to accuracy calculation.
- End-of-line characters added to most warnings to prevent all warnings mixing together into single messages.

- Corrected issue causing Linux-based matrix estimation to yield negative matrix element values in some instances involving truncated distributions.
- Fixed issue in density adjustment protocol used by function f_projection3() that would force all density adjustment onto survival probability.
- Corrected issue causing negative accuracy to be estimated for zero-truncated models in modelsearch().

- NEWS file has been reformatted to conform to CRAN Markdown specifications.

Output to summary_hfv() now fits within screen width.

Exponent tolerance limits and warnings added to functions projection3() and f_projection3(). Warnings and help file notes have also been added.

Function actualstage3() has been rewritten in C++ to handle all stage, age-by-stage, and age inputs. Can now remove stages as necessary, and allows different stages to be removed in times t1 and t2 in historical stage pair assessments.

Function hist_null() can now produce historically-formatted ahistorical matrices that do not include impossible transitions.

Anthyllis matrices are now also provided as a new dataset, in lefkoMat format.

- Updates and corrections to help files.

Lathyrus vignettes corrected to account for duplicated individual identity across subpopulations.

Corrected issue in repvalue3() causing warnings in MPMs with certain rare conditions.

Corrected issue in lambda3() causing rare eigen analysis failure in sparse matrices.

Reference matrix warnings in ltre3() have been corrected.

Function actualstage3() now also outputs proportions of ages and age-stages within hfv datasets.

Function vrm_import() created to allow IPM and other function-based model slope coefficients can now be imported directly without conducting linear model searches through modelsearch().

Functions flefko3(), flefko2(), aflefko2(), fleslie(), and f_projection3() have been updated to allow the use of vrm_input objects, allowing slope coefficients to be imported directly.

Function hfv_qc() developed to test hfv datasets for quality control using the same parameterizations and subsetting strategies used in function modelsearch().

Function create_pm() can now yield paramnames objects with default model variable names used instead of “none” strings.

Vignettes updated with new functions. Particularly, material for sf_distrib() replaced with material for hfv_qc().

Tweaks and corrections to help files.

Fixed bug causing substochasticity setting 2 in functions projection3() and f_projection3() to yield negative survival probabilities under some circumstances in which survival column sums totaled more than 1.0.

Fix bug omitting substochasticity correction in fecundity under some conditions when function f_projection3() is run with substoch = 2.

Function f_projection3() can now run density dependent projections in which the vital rates used are modified by projected density.

Function density_vr() created to provide vital rate density dependence information for function f_projection3().

Option added to functions projection3() and f_projection3() to suppress warnings.

Function summary.lefkoProj() now has an option to interpret NaN values as positive infinity, changing the count of replicates still alive in the milepost section. This option, inf_alive, may also be set to FALSE to count NaNs as evidence of extinction.

A new summary_hfv() function has been created to simplify quality control checks on historical vertical format datasets.

Function verticalize3() now warns the user to check the resulting dataset if the dataset is censored and the blocksize option is used without the censorRepeat option being set to TRUE, as these cases may result in excessive data pruning.

Function summary.lefkoProj() now calculates mean extinction time when prompted.

Function modelsearch() now allows an “age” setting for the suite option, which yields the same results as “cons” but checks to make sure that an age variable is properly added.

Function modelsearch() now allows a “leslie” setting for the vitalrates option, which provides a shorthand for c(“surv”, “fec”) as would be used by fleslie().

The documentation for functions modelsearch() and fleslie() have been updated to provide more information for handling Leslie MPMs.

Added series of new error messages if expected data frame size input in verticalize3() is too large.

Vignettes have been updated with new functions.

Some error messages made more informative.

The stageframe developed with functions rleslie() and fleslie() has been fixed to include stage_id, alive, and almost_born variables, allowing Leslie-formatted lefkoMat objects to be passed to all lefko3 functions analyzing them, including lmean().

Fixed bug yielding vector leaks from other variables when using the blocksize feature in verticalize3().

Fixed incorrect fecundity summation in rlefko3(), resulting from miscounting offspring from individuals dying the transition in which they reproduced.

Added ability to run ordered annual matrix progressions in function projection3().

Function projection3() can now run arithmetic mean matrix projections without any modifications required to the input lefkoMat object.

Function plot.lefkoProj() now has an auto-title feature.

Added cancel handling to verticalize3(), historicalize3(), slambda3(), sensitivity3(), elasticity3(), and ltre3().

Added transitions to some supplemental() in function examples and vignettes, reflecting more exact transition specification.

Fixed incorrect substochastic correction in projection3() and f_projection3() when substoch = 2 and negative survival entries occur.

Cleaned up minor memory issues in some functions.

Corrected class lefkoProj structure output by function f_projection3() to correspond exactly to that produced by function projection3().

Fixed bug preventing proxy multipliers from being properly integrated in function-based and raw MPMs.

Corrected issue in which truncated distributions occasionally led to NA size probabilities when the probability of a 0 under the un-truncated distribution was sufficiently high.

- Updated help files for projection functions.

- Updated primitive class checks in some functions.

New function arlefko2() created to handle raw age-by-stage MPM estimation.

Function aflefko2() now fixes the starting age by whether the life history model is pre-breeding or post-breeding.

Functions verticalize3() and historicalize3() now handle age offsets and automatically offset age by 1 if set to prebreeding = TRUE.

Further output has been added when err_check = TRUE is set in all function-based matrix estimators.

New function f_projection3() runs MPM and IPM projections in which matrices are developed from vital rate models at each step.

Default final_age in function aflefko2() is now the final age at time t in the original dataset.

All function-based matrix estimators have been sped up.

Population dynamics functions have been sped up.

All population dynamics functions involving actual projection can now be cancelled during runs.

Function create_lM() now produces a properly edited stageframe usable with all other functions taking lefkoMat objects as input.

Function plot.lefkoProj() now uses the correct default axis labels when conducting a state-space plot.

Function hist_null() now correctly estimates the numbers of survival and fecundity elements.

Eliminated bug in functions flefko3(), flefko2(), and aflefko2() preventing incorporation of random year effects into matrix estimation.

Eliminated bug causing inflation of lambda under some instances of the Poisson distribution in function-based matrix estimation.

Fixed erroneous mixing of QC information in lmean() output.

Fixed issue preventing multiple replicates from being displayed in plot.lefkoProj under the timeseries option.

Fixed issue causing certain impossible transitions linked to the prior stage to be estimated as non-zero in deVries-format function-based hMPMs.

Fixed incorrect formatting of deVries hMPMs resulting from function hist_null().

Function create_pm() updated to handle maturity status models.

Functions rleslie() and fleslie() created to estimate raw and function-based Leslie MPMs, respectively.

Added a beta term setting K as hard maximum in the logistic function using functions density_input() and projection3().

Accuracy check added to size and fecundity models in modelsearch().

Function modelsearch() new runs exhaustive model selection under the

`suite = "cons"`

setting if age, density, or any individual covariate is added to the analysis.Function modelsearch() now performs accuracy checks by default, and allows an opt-out.

Function actualstage3() now removes stages if desired, including stage NotAlive, which is now the default.

New plot.lefkoProj() function added.

All function-based matrix estimators now incorporate a default method for continuous distributions using cumulative density functions to estimate size transition probabilities. The midpoint rule is now only an option.

New standalone density dependence functions ricker3(), beverton3(), usher3(), and logistic3() added.

Substochasticity options for projection3() now include the option to force fecundity to stay non-negative.

Function projection3() now issues warnings if density dependence yields matrix impossible matrix values.

Function modelsearch() now also estimates maturity status probability in juveniles.

Functions supplemental(), density_input(), and start_input() now also include automated handling of keywords “obs” and “nobs”, which specify the use of all observable or unobservable stages, respectively.

Functions rlefko2() and rlefko3() now provide warnings if individual identity variable name or column number is not provided.

Function summary.lefkoMat() now provides appropriate descriptions of data quality control sections with missing values.

Added spatial coordinates to cypdata and cypvert.

Function modelsearch() is now more flexible with input errors in some key settings.

Ended dependence on package stringr.

Expanded data frame output with actualstage3() to give individual stage designations in times t and t-1.

Function summary.lefkoMat() now yields warnings if any fecundity matrix contains a negative value, and if any matrix contains an NA value.

Added equations in key help files.

Corrections and updates to all vignettes.

Function modelsearch() now tries several more parameterizations if the global model fails.

Function lmean() now also incorporates modelqc and dataqc elements for quality control purposes.

Function aflefko2() now treats missing minimum ages as zeroes, allowing estimation even when age info is missing from stageframes.

Matrix quality control summaries corrected when functions add_lM(), delete_lM(), and subset_lM() are used.

Corrected errors in documentation regatding censoring variables used in rlefko3() and rlefko2().

Corrected issue yielding fatal error in historicalize3() when spatial coordinates are set and reduce = TRUE.

Corrected improper matrix formatting in some integer variables used in historicalize3().

Fixed bug ignoring coordsRepeat setting in verticalize3().

Fixed bug causing inconsistent coordinate assignment under unobserved stages in historicalize3().

Corrected bug capable of causing the logistic function to yield negative matrix elements.

Fixed improper handling of numeric entries for year and patch options in function modelsearch().

Corrected issue in flefko3(), flefko2(), and aflefko2() affecting the incorporation of zero-inflated Poisson and negative binomial models.

Fixed fecundity estimation issue arising in some circumstances with deVries-formatted historical models.

Fixed bug leading size of 0 to be treated as zero-inflated in Poisson and negative binomial models.

Added tolerance limit to binomial probability estimation in all function-based matrix estimators, to prevent some conditions yielding NA probabilities.

Eliminated bug causing rare error in formulae creation in modelsearch().

Eliminated bug causing unrealistic pseudo-R^2 in rare runs of modelsearch().

Eliminated fatal error in modelsearch() occurring under rare instances when all attempts to build a working global model fail.

Fixed bug incorrectly importing non-standard variable names into modelsearch().

Fixed error causing density dependent projections under large, historical MPMs in projection3() to issue substochasticity warnings continuously regardless of actual substochasticity violation.

- Fixed C++ runtime error in function hist_null().

Included option to ignore observation status during stage assignment in verticalize3() and historicalize3().

Included option to quiet all warnings in verticalize3() and historicalize3().

New options to prevent display of overdispersion and zero-inflation tests in sf_distrib().

Added hist_null() function to create historically-structured MPM to serve as a null model MPM assuming no individual history.

Created function diff_lM() that creates lefkoDiff objects, which are MPM style objects that are actually matrix differences between two lefkoMat objects with equivalent dimensions.

Added cond_diff() function to create conditional difference matrices from supplied lefkoDiff objects.

Created actualstage3() function to calculate actual stage frequencies and proportions from input hfv dataset.

Created create_pm() function to create a skeleton paramnames object for users building vital rate models manually.

Introduced an integer check in function sf_distrib() that stops tests on non-integer variables.

All vignettes have been updated to the latest functions and results.

Fixed incorrect time step calculation in summary.lefkoMat().

Fixed incorrect P values for zero-inflation when fewer than expected 0s found in function sf_distrib().

Fixed fatal issue affecting certain kinds of proxy transitions in function-based matrix estimation.

Fixed incorrect stage distribution calculation in stochastic stablestage3() and projection3().

Fixed fatal error in summary.lefkoProj() that occurred when summarizing projections with single replicates.

Fixed fatal errors in flefko2(), flefko3(), aflefko2(), and summary.lefkoMat() relating to the use of user-defined vital rate functions.

Corrected incorrect assignment of stages in flefko3(), flefko2(), and aflefko2() based on use of groups in supplement tables.

Function aflefko2() now properly removes agestages rows when reduce = TRUE.

Problems with mathjaxr integration fixed.

Function projection3() can now run density dependent projections using the Ricker, Beverton-Holt, Usher, and logistic functions.

Functions start_input() and density_input() have been created to describe starting vectors and density dependence in the simplest format possible.

Function modelsearch() now also calculates the accuracy of binomial models and adds the output to the QC section of the output. Function summary.lefkoMod() reports this output.

Function sf_create() now handles dual- and triple-size classification.

Functions sf_create() and supplemental() now handle the designation of core stage groups.

Functions verticalize3() and historicalize3() now handle dual- and triple-size metric classification.

Function modelsearch() can now test the impacts of three different size variables, and can also develop vital rate models for up to three separate response size variables.

Function modelsearch() can now test the impacts of spatial density and stage group.

Function modelsearch() now allows individual covariates to be incorporated as random categorical variables, as well as fixed continuous quantitative variables.

Function modelsearch() now also allows the Gamma distribution for size and fecundity.

Function flefko2() now handles up to three size metrics, stage groups, random categorical variables, and density.

Function sf_distrib() now handles up to three size metrics, and also handles fecundity estimation in both times t and t+1.

Function projection3() now allows two forms of enforced substochasticity. The first keeps all survival-transition probabilities within bounds, while the second keeps all stage survival probabilities within bounds.

Function projection3() now creates easier-to-understand output structures clearly dividing numbers of individuals from stage distributions from reproductive values and population sizes.

Function supplemental() now takes proxy multipliers, and gives errors for negative given rates and multipliers.

Corrected some figure dimensions in vignettes.

Corrected help text for some functions.

Functions sf_distrib(), summary.lefkoMat(), summary.lefkoCondMat(), summary.lefkoMod(), and image3() no longer return a NULL to the console.

The default for option censorRepeat in function verticalize3() has been changed to FALSE, in order to prevent overzealous censoring by default.

Text output from summary functions and sf_distrib() has been altered to fit within standard output consoles, including typical page widths.

Added sparse matrix override to slambda3() in case of errors incurred in eigen analysis.

Corrected bug causing code “npr” to yield propagule stages in time t+1 in supplement and overwrite tables.

Fixed issue preventing estimation of size transition into observable classes with size 0 under the Poisson distribution in flefko3() and flefko2().

Corrected porous stage assignment handling in historicalize3().

Eliminated incorrect projection set assignment when running multiple patches or populations through function projection3().

Eliminated bug giving warnings when running rlefko2() and rlefko3() with specific choices of patches or populations given as input options.

Fixed issue causing rlefko2() and rlefko3() to estimate only some transition-survival probabilities and fecundities when patchcol or popcol is given without any respective specific patch or pop options given.

Function projection3() now includes the ability to produce replicate simulations.

Function summary.lefkoProj() created to summarize the results of population projection using function projection3().

Functions verticalize3() and historicalize3() now handle true radial density estimation, if X and Y coordinates and a valid spacing threshold are supplied.

Functions add_lM() and delete_lM() added to add and delete matrices from lefkoMat objects.

Function subset_lM() added to create new lefkoMat objects as subsets of other lefkoMat objects.

Sensitivity and elasticity descriptions corrected in vignettes.

Increased consistency in terminology used in output for stablestage3() and repvalue3().

Function create_lM() now handles age-by-stage matrices.

Fixed issue that could lead rlefko2() and rlefko3() to stop processing matrices if specific years or patches are called.

Fixed issue affecting stochastic reproductive value estimation in historical lefkoMat objects.

Fixed issue affecting some deterministic reproductive value estimates, particularly in large historical MPMs, where a base reference value for standardization cannot be determined.

Fixed issue preventing proper handling of historical matrix inputs in function create_lM().

Function ltre3() developed to conduct deterministic and stochastic life table response experiments.

Function create_lM() developed to allow the incorporation of lists of matrices developed outside of package lefko3.

Function summary.lefkoLTRE() developed to quickly summarize LTRE contributions according to transition type.

Added new vignette to showcase LTRE and sLTRE analysis, and the import of matrices as lefkoMat objects.

Altered some terminology in help files and vignettes to reflect most recent best practice in population ecology. Updated vignettes with new information, particularly related to LTRE and sLTRE analysis.

Option append_mats has been added to sensitivity3.lefkoMat(), sensitivity3.list(), elasticity3.lefkoMat(), and elasticity3.list(). This option allows users to prevent the incorporation of the original matrices into output lefkoSens and lefkoElas objects, resulting in lower memory usage.

Function summary.lefkoElas() can now handle age-by-stage MPMs.

Corrected problematic Cypripedium examples involving the construction of matrices with stage survival probabilities rising above 1.0.

Fixed indexing bug in function summary.lefkoElas() that had led to incorrect elasticity summation.

Fixed memory leak affecting sparse matrices in projection3() and related functions.

- Automatic sparse matrix detection and override options have been added to all population dynamics functions.

- All population dynamics analysis functions have been substantially sped up through better memory management techniques.

- Function summary.lefkoMat() now also displays column sums from all U (survival-transition) matrices as a quality control check.

Package glmmTMB has been reintegrated, allowing mixed modeling of negative binomial, zero-inflated, and zero-truncated response distributions again.

Error and warning messages from compiled functions provide cleaner messages.

Corrected incorrect handling of missing patch terms in lm, glm, vglm, and zeroinfl objects.

Corrected static_cast issue that might prevent package installation in Solaris systems.

Negative binomial response, zero-truncated, and zero-inflated have been temporarily disabled in function modelsearch() while package glmmTMB() is being reprogrammed for compatibility with R 4.1.0. These distributions are still available through the glm approach.

Examples have been updated for clarity and consistency.

Function supplemental() now allows entry stage proxies to be marked for raw historical MPMs.

Shortcuts included covering non-propagule stages and non-reproductive mature stages for functions overwrite() and supplemental().

Updated Lathyrus vignettes to correct improper handling of entry stages.

Negative binomial response in mixed modeling has been moved to package lme4, and zero-truncated and zero-inflated distributions are available only through the glm approach in modelsearch() for the time being.

- Corrected improper handling of prior forms of entry stages in raw historical MPMs.

Historical MPM estimating functions can now estimate hMPMs in deVries format, in which newborns have an unique prior stage. All population dynamics functions have also been reworked to handle this format.

New output has been added showing the exact order of age-stage combinations across all rows in estimated age-by-stage MPMs, as output from function aflefko2().

Stochastic sensitivities of historical MPMs now yield ahistorical equivalents in all output.

Added manual designation of ahistorical vs. historical output in functions sensitivity3.list() and elasticity3.list().

Function modelsearch() can now handle invariant response terms.

Functions flefko3() and flefko2() can now handle invariant fecundity.

Function verticalize3() can now handle horizontal datasets without clear patterns in order.

Amended overwrite() and supplemental() functions to account for possible prior newborn stage in deVries formatted hMPMs.

Function supplemental() now details stage names not accounted for in the input stageframe in error messages.

Some error and warning messages have been clarified.

Many examples have been expanded to include extra conditions.

Function rlefko3() now handles dimension reduction properly.

Function cond_hmpm() now produces conditional matrices from all combinations of population, subpopulation, and year, and also properly labels them.

Typos and other issues corrected in vignettes.

Zero-truncated Poisson and negative binomial distributions have been added to function modelsearch(), and as underlying size and fecundity distributions in flefko3(), flefko2(), and aflefko2().

New function image3() created to easily create matrix images for lefkoMat and other objects. Function acts as a wrapper for the image() function in package SparseM.

New vignette showcasing the estimation and analysis of age x stage MPMs.

Added err_check option to function-based matrix estimators, allowing the output of vital rates used in the estimation of U matrices.

The test used to assess overdispersion in size and fecundity has been changed to deal more accurately with count-based variance (including tests performed and how data are subsetted), and to offer more choices in which tests to run.

Function modelsearch() has been rewritten to result in a smaller installed package size.

Function parasearch() has been removed pending revision of modeling methodology.

Reproductive value vectors are now all standardized to the first non-zero value in the vector.

Function sf_create() can now handle stage comments as input.

Functions sensitivity3() and elasticity3() have been redesigned for increased speed with unusually large matrices.

Stochastic analysis functions have been streamlined for speed and efficiency.

Expanded all examples to include both Lathyrus and Cypripedium versions.

Corrections and expansions to package vignettes.

Fixed issue in which loss of one of the year or patch terms in modeling of zero-inflated mixed models could lead to errors in function-based matrix estimation.

Corrected error in estimation algorithm for size transition probability under negative binomial distribution, and difficulty in handling low levels of overdispersion in some negative binomial models.

Fixed issue making lmean() unable to take element-wise mean matrices of age-by-stage MPMs produced using aflefko2().

Fixed bug yielding erroneous reproductive values in historical matrices.

Fixed bug yielding erroneous sensitivity elements in historically-corrected ahistorical sensitivity matrices.

Fixed bug occasionally yielding 3d arrays in response to stochastic calls of sensitivity3() and elasticity3().

Corrected stablestage3() and repvalue3() to properly handle age x stage MPMs.

Corrected memory leak issue in aflefko2().

Fixed Imports field related to function parasearch().

Fixed loss of fecundity placement in age-by-stage matrices when using function supplemental() with function aflefko2().

Fixed default year and patch settings in aflefko2().

Corrected memory allocation issue in historicalize3().

Corrections to vignettes.

Help file typos fixed.

Function supplemental() created to allow greater flexibility in the input of reproductive multipliers. All matrix creation functions can now handle its output.

Stochastic sensitivity and elasticity analyses now enabled through functions sensitivity3() and elasticity3(), respectively.

Functions sensitivity3() and elasticity3() now handle simple lists of A matrices, in addition to lefkoMat objects and simple matrices.

Function parasearch() created to allow parallelized model building and selection.

Censoring options in verticalize3() and historicalize3() can now handle both static and temporally-variable censor variables.

Overwrite and supplemental tables can now include “prop”, “immat”, and “mat” as shorthand for suites of all propagule, immature, and mature stages.

Function modelsearch() now gives warning if a dataset is used with NAs in individual ID when a mixed modeling approach is requested. It now also provides standard diagnostic messages at each step.

Corrections and additions to help files.

Fixed censoring protocols in verticalize3(), historicalize3() rlefko3(), and rlefko2().

Corrected distribution algorithm for zero inflation and text output in sf_distrib().

Eliminated bug causing high overdispersion parameters from negative binomial-based size models to yield function-based matrices with NA values for all transitions to stages with positive size.

Fixed issue in which mixed models with a non-zero-inflated negative binomial distribution fail to yield function-based matrices.

Fixed compatibility issues in matrix creation functions with R 3.6.3.

Fixed minor issue in summary.lefkoMat() output text.

Function cond_hmpm() added to create conditional hMPMs.

Function slambda3() added to estimate the log stochastic growth rate.

Function summary.lefkoElas() added to summarize elasticities by kind of transition.

Added citation() data for package.

Added NEWS section, using package lme4 NEWS as a template.

Corrected inconsistent stage name variable in stage frame creation and manipulation functions.

Updated and reorganized vignettes.

Modified stageframes exported by matrix creation functions now include entry status variable.

Objects of class lefkoElas now include the original A, U, and F matrices.

Elasticity and sensitivity outputs for lefkoMat objects now include the original A, U, and F matrices used as input.

Matrix estimation function now create loy tables treating pop and patch as strings by default, eliminating possible conversion errors.

Corrected incorrect overwrite() call in lathyrus example used in function flefko3() and all population dynamics analysis functions.

- Corrected auto-conversion of characters to factors occurring on R 3.6.3, which affected the creation and interpretation of the $labels element in atrix estimation.

- Fixed bug in lmean() function resulting from an implicit cast and affecting users operating lefko3 on Solaris systems.

Added function sfdistrib() to test whether mean = var and the level of zero-inflation in count variable data to be used for size and fecundity.

Added zero-inflated Poisson and negative binomial distributions as choices for the underlying distribution of size and fecundity.

Added individual and environmental covariates to function-based MPM estimation functions.

- Corrected, updated, and reorganized vignettes.

- Corrected parameterization of negative binomial distribution in function modelsarch().

Added function aflefko2() function to estimate age x stage MPMs.

Added function sensitivity3() to estimate sensitivity matrices of historical and ahistorical MPMs.

Added Function elasticity3() to estimate elasticity matrices of historical and ahistorical MPMs.

Increased consistency of output variable names across functions.

Corrected, updated, and reorganized vignettes.

Eliminated faulty parameterization of matrix geometric mean in lmean() function.

Corrected core kernel underlying lmean(), and redeveloped in C++ to yield faster results.

Corrected parameterization of negative binomial distribution.

Function summary.lefkoMat() now also shows which vital rate models were not estimated.

All matrix estimators sped up through lapply()-based calls to C++ kernels.

Function lmean() now keeps the original names of populations and patches.

Corrected incorrect reference links in vignettes.

Fixed memory leak in kernel powering function historicalize3().

Fixed faulty indexing affecting all matrix estimators under certain conditions.

Bugs in Cypripedium candidum vignettes and examples caused by incomplete overwrite tables fixed.

- Major speed up to flefko2() and flefko3() through the incorporation of C++ core kernels.

Bug fixed that could lead to the erroneous incorporation of mature stages as immature in flefko3() under certain rare circumstances.

Bug fixed that could fit proxy rates into the wrong elements in all matrix construction routines under certain rare circumstances.

Bug fixed that could, under some circumstances, lead to individuals being treated as dead when not observed for a period of more than a year.

First version available on CRAN.

Revised vignettes.

Improved default handling of reproductive ratio and fecundity ratio.

- Fixed calculation of observed lifespan in functions verticalize3() and historicalize3().

Removed some vignettes to reduce size.

Added greater detail to Metadata in DESCRIPTION file

Added on.exit() to modelsearch() to keep user options through that routine.

Fixed bugs in repvalue3.lefkoMat() and repvalue3.matrix().

All internal function documentation now complete.

Reduced vignette sizes.

- Fixed bugs in summary.lefkoMod().

- Advanced routines developed for deterministic analysis functions, including repvalue3() and stablestage3().

- Cleaned up all help pages.

- Scattered bugs eliminated.

Stageframe objects now have their own class, and stageframes now handle log-size based bin widths.

Function sf_create() also now stops if vector lengths are not equal, and can create stageframes for IPMs.

Mean matrix function lmean() created.

Added size in time t to juvenile models.

Fecundity models can now use fecundity in t+1 as a response.

Integrated estimation function into verticalize3() and historicalize3().

All matrix creation functions have been fully rewritten for speed (eliminated extraneous find() calls and long loops).

Vignettes split up across chapter files.

- Eliminated problems with class interpretation in modelsearch().

Lathyrus dataset added.

Examples added to all core functions.

All matrix estimation functions have been rewritten to include core C++ functions, for speed up and memory efficiency.

Added patch functionality to modelsearch(), flefko3(), and flefko2().

- Bugs corrected in probability and rate estimation functions.

- Reorganized flefko2() around Rcpp functions.

- Cleaned up bugs discovered in rlefko3().

- Re-developed core functions of rlefko3() with Rcpp and RcppArmadillo, substantially reducing run time.

- Re-developed rlefko3() function per new approach to rlefko2().

- Developed rlefko2() function.

Redesigned all matrix functions to handle different populations and patches.

Made core matrix creation kernels quiet.

Increased standardization of inputs.

Eliminated class lefkoMatMulti.

Created the hfvdata class for standardized, vertical demographic data frames.

Added quality control sections to lefkoMod and lefkoMatMulti objects, including functions that create these objects.

Created new S3 summary.lefkoMatMulti() function.

- Added negative binomial functionality to vital rate estimators.

- Massive changes and improvements to tutorials.

Added negative binomial functionality to modelsearch().

Added an S3 summary function for class lefkoMod.

Added Cypripedium candidum vignette.

Data mgmt functions can now prune unused variables from output.

- Replaced all flw and frt entries with repst and fec.

- Added cypdata data file.

- Formatted code and help files.

- Eliminated year effect warnings by option.

Added the lefkoMatMulti class.

Gave matrix creation functions the ability to create output with lists of A, T, and F matrices for all years requested.

- Added greater flexibility to modelsearch() function to allow it to estimate binomial models under constant response.

- Synchronized data management function to modelsearch() function.

- Added modelsearch() function to handle model building and selection workflow.

- All workhorse functions are now generally debugged C++ functions.

- Fixed overwriting and estimating portions of matrix creation functions.

- Fixed overwriting portion of matrix design, so that given transitions are properly added to historical matrices.

- Fully rebuilt flefko3() and flefko2() so that fecundity is now estimated using binaries written in C++.

- Matrix design reworked to make everything faster.

- Rebuilt flefko2() to use C++ precompiled probability density functions.

Rewrote workhorse portions of survival transition estimators as precompiled binaries in C++.

Rewrote historical matrix function (flefko3()) to handle reworked pxy functions.

- Corrected issues in help files.

- Added a patch term to ahv2hv() function.

- Changed plantid variable name to individ.

- Added density3() function.

- Sped up verticalize3() and ahv2hv() functions.

- Corrected links throughout.

- Added ability to handle character column names to verticalize_h().

- Corrected issues in verticalize_h function.

- Added RSpectra-based population matrix projection analysis functions.

- Added GPL license.

Corrected bug leading to infinite mu values in probbin for some models.

Corrected the method of using proxy transitions from certain juvenile stages to mature stages in all lefko functions.

Increased ability to choose which unobserved stages lead to which observed stages.

Standardized terms in more functions for cross-compatibility and easier workflow.

Added Gaussian probability calculation.

Developed sf_create() function.

First version of rlefko3() created.

- Matrix creation functions now discriminate size and fecundity on the basis of probability distribution.

Added numeric class recognition.

Documentation improvements.

- First development version. Main 2d and 3d matrix functions created.