# Digging into your data

All the functionality of the morts package is accessible with the `residences()`, `morts()`, `infrequent()`, `mortsplot()`, and `review()` functions, addressed in the other vignettes. Many of these functions rely on output from additional functions. As you are exploring your data, you may want to run these additional functions to better dig through and understand your data. The `drift()` and `season()` functions are respectively addressed in the Drift and Seasonality vignettes. Here, we address the `stationchange()`, `resmax()`, and `resmaxcml()` functions.

## `stationchange()` function

The thresholds in `morts()` rely on identifying the most recent station or location change of each animal, because it is assumed that the animal was alive before this most recent movement. To explore the most recent station changes for each animal, the user can can call `stationchange()` directly. The arguments are used in the same manner as for `morts()`. Drift may also be applied with the argument `drift=TRUE`. See the Drift vignette for more information on the other drift arguments.

    station_change<-stationchange(data=events,type="mort",ID="ID",station="Station.Name",
                                  drift=TRUE,ddd=ddd,units="days",from.station="From",to.station="To")

The output of `stationchange()` is a dataframe with one row for each animal ID. The residence event information (start, end, duration) is for the event that marks the most recent station change (i.e., the start is when the movement occurred).

ResidenceStart | Station.Name | ID | ResidenceEnd | ResidenceLength.days
--- | --- | --- | --- | ---
2005-06-25 21:26:12 | 10 | A | 2005-06-26 09:01:17 | 0.4826968
2005-07-01 05:28:31 | 1 | B | 2005-07-01 05:28:31 | 0.0000000
2004-06-19 15:31:47 | 9 | C | 2004-06-19 19:10:01 | 0.1515509
2004-08-31 16:48:00 | 5 | D | 2004-08-31 17:38:18 | 0.0349306
2004-07-15 21:09:22 | 5 | E | 2004-10-12 21:44:11 | 89.0241782
2005-06-28 21:12:58 | 1 | F | 2005-10-09 20:28:05 | 102.9688310

## `resmax()` function

The threshold for `morts()` when `method` is “last”, “any”, or “all” is determined by identifying the longest residence event that occurred before a station change. If there are some animals with very long resident events that are not identified as potential mortalities by `morts()`, you may want to look at the longest living residence events to explore how the threshold is being identified. This can be done by calling the `resmax()` function directly.

Note that `stationchange()` must be run beforehand, and the output provided in the argument `stnchange`.

If drift was applied in generating the residence events, the `drift` argument specifies whether drift events should be included in `resmax()`. If drift was not applied or if `drift="morts"` in `morts()`, then you should include `drift=FALSE`. If `drift="threshold"` or `drift="both"` in `morts()`, then you should include `drift=TRUE`. See the Drift vignette for more information on applying drift.

The output of `resmax()` is a dataframe with one row for each animal ID. The residence event information is for the event that has the longest duration and occurred before the most recent station change for that animal.

    resmax_example<-resmax(data=events,ID="ID",station="Station.Name",
                           res.start="ResidenceStart",residences="ResidenceLength.days",
                           stnchange=station_change,drift=FALSE)

ResidenceStart | Station.Name | ID | ResidenceEnd | ResidenceLength.days
--- | --- | --- | --- | ---
2003-09-24 16:56:36 | 1 | A | 2003-10-11 17:15:47 | 17.0133218
2003-09-13 13:25:38 | 4 | C | 2003-10-07 16:26:06 | 24.1253241
2003-08-16 22:35:23 | 1 | G | 2003-08-18 12:05:20 | 1.5624653
2003-01-31 19:47:16 | 8 | I | 2003-02-06 18:59:34 | 5.9668750
2002-08-26 07:18:12 | 8 | J | 2002-08-26 22:01:00 | 0.6130556
2003-01-16 18:55:12 | 8 | K | 2003-02-08 16:31:25 | 22.9001505

## `resmaxcml()` function

The threshold for `morts()` when the `method` is “cumulative” or “any” is determined by finding the longest cumulative residence event that occurred before a station change. Cumulative residence events are the length of time between when an animal was first detected at a station and when it was last detected at the same station, ignoring any gaps in detection. You may wish to explore the cumulative residence events that contribute to determining this threshold. This can be done by calling the `resmaxcml()` function directly.

Note that `stationchange()` must be run beforehand, and the output provided in the argument `stnchange`.

If you have applied drift by using `drift="threshold"` or `drift="both"` in `morts()`, then you should apply drift using the `drift()` function and use the output as the input for the `data` argument in `resmaxcml()`. See the Drift vignette for more information on applying drift.

    resmaxcml_example<-resmaxcml(data=events,ID="ID",station="Station.Name",
                                 res.start="ResidenceStart",res.end="ResidenceEnd",
                                 residences="ResidenceLength.days",units="days",
                                 stnchange=station_change)

The output of `resmaxcml()` is similar to that from `resmax()`, except there is one row for each cumulative residence event (not just the longest event). This means that there may be more than one row for each animal ID.

ResidenceStart | Station.Name | ID | ResidenceEnd | ResidenceLength.days
--- | --- | --- | --- | ---
2003-09-21 23:49:45 | 11 | A | 2003-09-22 00:08:18 | 0.0128819 days
2003-09-22 00:20:28 | 1 | A | 2004-06-24 01:15:25 | 276.0381597 days
2004-06-24 17:30:42 | 14 | A | 2004-06-24 17:30:42 | 0.0000000 days
2004-06-24 20:37:18 | 8 | A | 2004-06-24 21:39:34 | 0.0432407 days
2004-06-25 05:48:34 | 2 | A | 2004-06-25 06:47:40 | 0.0410417 days
2004-06-26 04:49:31 | 10 | A | 2004-07-01 07:41:36 | 5.1195023 days