# lefko3 6.7.3 (2026-04-24)

## NEW FEATURES

* Function `lambda3()` can now calculate the dominant eigenvalue of the `A`,
  `U`, or `F` matrices, using the `style` argument.
  
* Function `bootstrap3()` now replaces individual identity with unique values if
  `rename = TRUE`.

## USER VISIBLE CHANGES

* Matrix creation functions now give more meaningful error messages when
  lefkoMod objects are input without their original `hfvdata` datasets.
  
## BUG FIXES

* Corrected issue in which ahistorical or age-by-stage MPMs can be misidentified
  as historical by function `stage_weight()`.
  
* Function `bootstrap3()` no longer throws an exception when using string-based
  individual identities.

# lefko3 6.7.2 (2026-02-11)

## NEW FEATURES

* Functions `mpm_create()`, `flefko3()`, `flefko2()`, `arlefko2()`, and
  `fleslie()` now can create matrices initialized with `NaN` values, using
  argument `initial_nan`.
  
## BUG FIXES
  
* Fixed issue with memory management in some cases when density_input() is used.

# lefko3 6.7.1 (2026-01-31)

## NEW FEATURES

* The additive limit function is now usable as a new density dependence function
  in projection via function density_input().
  
* Function projection3() can now handle density dependent projections using
  simple lists of matrices.
  
* Function projection3() can use lists of density dependence inputs and
  stage weight inputs, with one entry per A matrix.
  
* New function sup_skeleton() creates skeleton supplement data frames.
  
## USER VISIBLE CHANGES

* Function create_lM() no longer gives a warning that no supplements were
  provided to infer fecundity pathways.
  
* Fixed inaccurate documentation for functions aflefko2() and arlefko2().

* A number of underlying changes have been made to integrate lefko3 with adapt3.
  These should lead to fewer fatal errors when users use less correct inputs.
  
* Vignettes have been updated to deal with changes to some functions.

## BUG FIXES

* Fixed fatal error in historicalize3() caused under situations in which some
  individuals encounter undefined states.
  
* Corrected issues with matrix list imports with function create_lM() leading to
  fatal errors in certain situations.
  
* Fixed incorrect assignment of logistic density dependence to the Ricker
  function in function density_input().
  
# lefko3 6.6.0 (2025-10-28)

## NEW FEATURES

* Function bootstrap3() now adds hfvdata bootstrapping capability.

* All MPM creation functions can now create bootstrapped MPMs, and all
  projection functions can run bootstrapped projections.

* Function summary_hfv() can now summarize hfvlist objects.

* Functions add_lM(), add_stage(), delete_lM(), edit_lM(), elasticity3(),
  f_projection3(), lambda3(), lmean(), projection3(), repvalue3(),
  sensitivity3(), slambda3(), subset_lM(), and stablestage3() can now handle
  lefkoMatList objects.

* Function summary.lefkoMatList() created to summarize lefkoMatList objects.

* Function stage_weight() created to provide stage weight vector for density
  dependent projection.

## USER VISIBLE CHANGES

* Vignettes have been updated for bootstrap3() and new versions of related
  functions.
  
* Functions projection3() and f_projection3() now throw errors when a density
  frame is entered with stages undefined in the associated stage frame.
  
* User interrupt added to function cycle_check().

## BUG FIXES

* Function historicalize3() no longer crashes when string-based individual
  covariates are entered, and no longer gives botches row order of individual
  covariates under numeric and integer entries.
  
* Function edit_lM() now handles offset values without yielding fatal errors.

* Fixed fatal error with stage_id occurring when importing matrices from
  COMPADRE or COMADRE with create_lM().

# lefko3 6.5.1 (2025-08-27)

## USER VISIBLE CHANGES

* Functions projection3() and f_projection3() now use integeronly = FALSE by
  default.
  
* Corrections to documentation.

# lefko3 6.5.0 (2025-05-02)

## USER VISIBLE CHANGES

* Functions projection3() and f_projection3() now operate more quickly, and use
  integeronly = TRUE by default.

* Main development site moved to GitHub, with links updated.

* Vignettes updated, including links, function output, and text errors.

## BUG FIXES

* Function miniMod() now correctly retains zero-inflation models.

* Empirical age-by-stage MPMs created with mpm_create() and arlefko2() no longer
  lead to fatal errors when a final age is used less than the maximum in the
  dataset.

* Function modelsearch() no longer fails on historical model runs with vital
  rate variable name vectors with 2 entries.
  
* Indexing of hstages element corrected for deVries-format historical MPMs.

# lefko3 6.4.0 (2025-03-13)

## NEW FEATURES

* Function cycle_check() created to test for stage discontinuities in matrices.

* Function-based matrix building procedures now test for NA values of model
  coefficients, and display warnings if found.
  
* Function supplemental() now allows additive offsets to transition elements in
  MPMs and projections.

## USER VISIBLE CHANGES

* Updated project URL.

* Function summary.lefkoMat() now also checks for stage discontinuities.

* Updated and standardized error messages.

* Vignette 1 updated with offset info.

## BUG FIXES

* Fixed error in projection3() resulting in shuffled starting frames under
  some conditions in which stageframes are shuffled from their original state.
  
* Fixed error in function f_projection3() coming from handling of tertiary
  individual covariate.

# lefko3 6.3.2 (2025-01-06)

## NEW FEATURES

* Function hfv_qc() now checks the number of singleton categories in all random
  variables.

## BUG FIXES

* Fixed incompatibility of lefkoMod objects created prior to version 6.3.0 with
  all matrix creation and projection functions in newer versions.

* Fixed incompatibility between integer vector inputs supplied to individual
  covariate arguments in function f_projection3().
  
* Fixed error causing incompatibility between ipm classification and certain
  combinations of minsize, maxsize, and halfbinwidths in sf_create().

# lefko3 6.3.1 (2024-08-20)

## NEW FEATURES

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

## USER VISIBLE CHANGES

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

## BUG FIXES

* Corrected erroneous milepost messages in function modelsearch().

# lefko3 6.3.0 (2024-08-05)

## NEW FEATURES

* 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.

## USER VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 6.2.1 (2024-02-24)

## USER VISIBLE CHANGES

* 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.
  
## BUG FIXES

* 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().

# lefko3 6.2.0 (2024-01-27)

## NEW FEATURES

* 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.

## USER VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 6.1.3 (2023-11-30)

## NEW FEATURES

* Function markov_run() created to allow 1st order Markovian temporally
  stochastic simulations.
  
* Function create_lM() can now handle both regular and sparse matrices.

## USER VISIBLE CHANGES

* Some warning and error messages have been simplified.

## BUG FIXES

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

# lefko3 6.1.2 (2023-11-07)

## BUG FIXES

* All MPMs can now be estimated without supplemental tables.

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

# lefko3 6.1.1 (2023-10-13)

## NEW FEATURES

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

## BUG FIXES

* 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.

# lefko3 6.1.0 (2023-07-08)

## NEW FEATURES

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

## USER VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 6.0.5 (2023-05-03)

## USER VISIBLE CHANGES

* 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.

## BUG FIXES

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

# lefko3 6.0.4 (2023-04-11)

## USER VISIBLE CHANGES

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

# lefko3 6.0.3 (2023-04-07)

## NEW FEATURES

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

## USER VISIBLE CHANGES

* 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.

## BUG FIXES

* Fixed proxy transition issue in function edit_lM().

# lefko3 6.0.2 (2023-03-31)

## USER VISIBLE CHANGES

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

# lefko3 6.0.1 (2023-03-30)

## NEW FEATURES

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

## USER VISIBLE CHANGES

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

# lefko3 6.0.0 (2023-03-27)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 5.5.0 (2022-09-14)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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().

# lefko3 5.4.2 (2022-08-08)

## USER-VISIBLE CHANGES

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

# lefko3 5.4.1 (2022-07-29)

## USER-VISIBLE CHANGES

* 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.

# lefko3 5.4.0 (2022-07-21)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* Updates and corrections to help files.

## BUG FIXES

* 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.

# lefko3 5.3.0 (2022-06-24)

## NEW FEATURES

* 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().

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 5.2.0 (2022-05-18)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 5.1.0 (2022-04-01)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 5.0.1 (2022-03-08)

## USER-VISIBLE CHANGES

* Updated help files for projection functions.

## BUG FIXES

* Updated primitive class checks in some functions.

# lefko3 5.0.0 (2022-03-01)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 4.2.0 (2022-01-17)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 4.1.1 (2021-12-07)

## BUG FIXES

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

# lefko3 4.1.0 (2021-12-06)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 4.0.1 (2021-11-15)

## BUG FIXES

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

* Problems with mathjaxr integration fixed.

# lefko3 4.0.0 (2021-11-14)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 3.8.0 (2021-09-08)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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().

# lefko3 3.7.0 (2021-08-18)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 3.6.0 (2021-07-21)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

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

# lefko3 3.5.3 (2021-07-14)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 3.5.2 (2021-07-12)

## USER-VISIBLE CHANGES

* 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.

# lefko3 3.5.1 (2021-07-07)

## NEW FEATURES

* 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().

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

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

# lefko3 3.5.0 (2021-06-29)

## NEW FEATURES

* 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().

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 3.4.0 (2021-03-31)

## NEW FEATURES

* 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.
  
## USER-VISIBLE CHANGES

* 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.
  
## BUG FIXES

* 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().

# lefko3 3.3.2 (2021-02-25)

## BUG FIXES

* 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().

# lefko3 3.3.1 (2021-02-23)

## USER-VISIBLE CHANGES

* Corrections to vignettes.

* Help file typos fixed.

# lefko3 3.3.0 (2021-02-21)

## NEW FEATURES

* 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.
  
## USER-VISIBLE CHANGES

* 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.
  
## BUG FIXES

* 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.

# lefko3 3.2.0 (2021-01-03)

## NEW FEATURES

* 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.
    
## USER-VISIBLE CHANGES

* 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.
  
## BUG FIXES

* 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.

# lefko3 3.1.2 (2020-11-16)

## BUG FIXES

* 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.

# lefko3 3.1.1 (2020-11-13)

## BUG FIXES

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

# lefko3 3.1.0 (2020-11-08)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* Corrected, updated, and reorganized vignettes.

## BUG FIXES

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

# lefko3 3.0.0 (2020-10-22)

## NEW FEATURES

* 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.

## USER-VISIBLE CHANGES

* Increased consistency of output variable names across functions.

* Corrected, updated, and reorganized vignettes.

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

## BUG FIXES

* 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.

# lefko3 2.4.2 (2020-09-12)

## USER-VISIBLE CHANGES

* 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.

## BUG FIXES

* 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.

# lefko3 2.3.0 (2020-08-18)

## USER-VISIBLE CHANGES

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

## BUG FIXES

* 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.

# lefko3 2.2.2 (2020-07-28)

## USER-VISIBLE CHANGES

* First version available on CRAN.

* Revised vignettes.

* Improved default handling of reproductive ratio and fecundity ratio.

## BUG FIXES

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

# lefko3 2.2.1 (2020-07-18)

## USER-VISIBLE CHANGES

* Removed some vignettes to reduce size.

* Added greater detail to Metadata in DESCRIPTION file

## BUG FIXES

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

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

# lefko3 2.2.0 (2020-07-08)

## USER-VISIBLE CHANGES

* All internal function documentation now complete.

* Reduced vignette sizes.

## BUG FIXES

* Fixed bugs in summary.lefkoMod().

# lefko3 2.1.0 (2020-07-06)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

* Cleaned up all help pages.

## BUG FIXES

* Scattered bugs eliminated.

# lefko3 2.0.0 (2020-06-27)

## NEW FEATURES

* 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().

## USER-VISIBLE CHANGES

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

* Vignettes split up across chapter files.

## BUG FIXES

* Eliminated problems with class interpretation in modelsearch().

# lefko3 1.0.0 (2020-03-24)

## NEW FEATURES

* Lathyrus dataset added.

* Examples added to all core functions.

## USER-VISIBLE CHANGES

* 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().

## BUG FIXES

* Bugs corrected in probability and rate estimation functions.

# lefko3 0.13.1 (2020-02-16)

## USER-VISIBLE CHANGES

* Reorganized flefko2() around Rcpp functions.

## BUG FIXES

* Cleaned up bugs discovered in rlefko3().

# lefko3 0.13.0 (2020-02-14)

## USER-VISIBLE CHANGES

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

# lefko3 0.12.1 (2020-02-11)

## USER-VISIBLE CHANGES

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

# lefko3 0.12.0 (2020-02-05)

## NEW FEATURES

* Developed rlefko2() function.

## USER-VISIBLE CHANGES

* Redesigned all matrix functions to handle different populations and patches.

* Made core matrix creation kernels quiet.

* Increased standardization of inputs.

* Eliminated class lefkoMatMulti.

# lefko3 0.11.0 (2020-01-31)

## NEW FEATURES

* 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.

# lefko3 0.10.2 (2020-01-29)

## NEW FEATURES

* Added negative binomial functionality to vital rate estimators.

## USER-VISIBLE CHANGES

* Massive changes and improvements to tutorials.

# lefko3 0.10.1 (2020-01-22)

## NEW FEATURES

* Added negative binomial functionality to modelsearch().

* Added an S3 summary function for class lefkoMod.

# lefko3 0.10.0 (2020-01-19)

## NEW FEATURES

* Added Cypripedium candidum vignette.

* Data mgmt functions can now prune unused variables from output.

## USER-VISIBLE CHANGES

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

# lefko3 0.9.0 (2020-01-15)

## NEW FEATURES

* Added cypdata data file.

## USER-VISIBLE CHANGES

* Formatted code and help files.

# lefko3 0.8.3 (2020-01-11)

## USER-VISIBLE CHANGES

* Eliminated year effect warnings by option.

# lefko3 0.8.2 (2020-01-10)

## NEW FEATURES

* 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.

# lefko3 0.8.1 (2020-01-10)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

* Synchronized data management function to modelsearch() function.

# lefko3 0.8.0 (2020-01-01)

## NEW FEATURES

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

# lefko3 0.7.0 (2019-11-22)

## NEW FEATURES

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

## BUG FIXES

* Fixed overwriting and estimating portions of matrix creation functions.

# lefko3 0.6.1 (2019-11-22)

## BUG FIXES

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

# lefko3 0.6.0 (2019-11-20)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

* Matrix design reworked to make everything faster.

# lefko3 0.5.1 (2019-11-19)

## NEW FEATURES

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

# lefko3 0.5.0 (2019-11-18)

## NEW FEATURES

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

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

## BUG FIXES

* Corrected issues in help files.

# lefko3 0.4.4 (2019-11-11)

## NEW FEATURES

* Added a patch term to ahv2hv() function.

## USER-VISIBLE CHANGES

* Changed plantid variable name to individ.

# lefko3 0.4.3 (2019-11-08)

## NEW FEATURES

* Added density3() function.

## USER-VISIBLE CHANGES

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

## BUG FIXES

* Corrected links throughout.

# lefko3 0.4.2 (2019-11-07)

## NEW FEATURES

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

# lefko3 0.4.1 (2019-11-06)

## BUG FIXES

* Corrected issues in verticalize_h function.

# lefko3 0.4.0 (2019-11-03)

## NEW FEATURES

* Added RSpectra-based population matrix projection analysis functions.

## USER-VISIBLE CHANGES

* Added GPL license.

# lefko3 0.3.1 (2019-11-02)

## BUG FIXES

* 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.

# lefko3 0.3.0 (2019-11-01)

## USER-VISIBLE CHANGES

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

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

# lefko3 0.2.1 (2019-10-29)

## NEW FEATURES

* Added Gaussian probability calculation.

* Developed sf_create() function.

* First version of rlefko3() created.

# lefko3 0.1.1 (2019-10-26)

## NEW FEATURES

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

## USER-VISIBLE CHANGES

* Added numeric class recognition.

* Documentation improvements.

# lefko3 0.1.0 (2019-10-25)

## NEW FEATURES

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

