Lag time is calculated by projecting a tangent line at the point of maximum (per-capita) derivative backwards to find the time when it intersects with the minimum y-value

## Usage

```
lag_time(
x = NULL,
y = NULL,
deriv = NULL,
trans_y = "log",
na.rm = TRUE,
slope = NULL,
x1 = NULL,
y1 = NULL,
y0 = NULL,
warn_logtransform_warnings = TRUE,
warn_logtransform_infinite = TRUE,
warn_min_y_mismatch = TRUE,
warn_multiple_maxderiv = TRUE,
warn_one_lag = TRUE,
warn_no_lag = TRUE
)
```

## Arguments

- x
Vector of x values (typically time)

- y
Vector of y values (typically density)

- deriv
Vector of derivative values (typically per-capita derivative)

- trans_y
One of

`c("linear", "log")`

specifying the transformation of y-values.`'log'`

is the default, producing calculations of lag time assuming a transition to exponential growth`'linear'`

is available for alternate uses- na.rm
a logical indicating whether missing values or values that become

`NA`

or infinite during log-transformation should be removed- slope
Slope to project from x1,y1 to y0 (typically per-capita growth rate). If not provided, will be calculated as

`max(deriv)`

- x1
x value (typically time) to project slope from. If not provided, will be calculated as

`x[which.max(deriv)]`

.- y1
y value (typically density) to project slope from. If not provided, will be calculated as

`y[which.max(deriv)]`

.- y0
y value (typically density) to find intersection of slope from x1, y1 with. If not provided, will be calculated as

`min(y)`

- warn_logtransform_warnings
logical whether warning should be issued when log(y) produced warnings.

- warn_logtransform_infinite
logical whether warning should be issued when log(y) produced infinite values that will be treated as

`NA`

.- warn_min_y_mismatch
logical whether warning should be issued when

`min(y)`

does not equal`min(y[!is.na(x)])`

.- warn_multiple_maxderiv
logical whether warning should be issued when there are multiple points in

`deriv`

that are tied for the highest, and only the first will be used.- warn_one_lag
logical whether warning should be issued when some, but not all, inputs are vectorized, and only one lag time value will be returned.

- warn_no_lag
logical whether warning should be issued when calculated lag time is less than the minimum value of x

## Value

Typically a scalar of the lag time in units of x. See Details for cases when value will be a vector.

## Details

For most typical uses, simply supply `x`

, `y`

, and `deriv`

(using the per-capita derivative and `trans_y = 'log'`

).

Advanced users may wish to use alternate values for the slope, origination
point, or minimum y-value. In that case, values can be supplied to
`slope`

, `x1`

, `y1`

, and/or `y0`

, which will override
the default calculations. If and only if all of `slope`

, `x1`

,
`y1`

, and `y0`

are provided, `lag_time`

is vectorized on
their inputs and will return a vector of lag time values.