Estimates the historic date of extinction of a species from a time-ordered record of sighting events. Given a table of sighting counts per year, computes extinction date estimators from the sighting-record literature: optimal linear estimation and its Weibull extreme-value persistence test (Roberts & Solow, 2003; Solow, 2005), constant-rate and declining-rate persistence tests (Solow, 1993), a sighting-rate persistence test comparable across records with different observation periods (McInerny, Roberts, Davy & Cribb, 2006), a classical confidence interval on the end of a temporal range (Strauss & Sadler, 1989), a truncation-point extrapolation (Robson & Whitlock, 1964), and a combinatorial persistence test based on inclusion-exclusion over sighting-gap occupancy (Burgman, Grimson & Ferson, 1995). Also implements a nonparametric endpoint test (Solow & Roberts, 2003), a sighting-interval trend index (Jarić & Ebenhard, 2010), and reliability-adjusted inference for uncertain records (Jarić & Roberts, 2014). Every estimator is built on a validated input object and returns a common result class with, where defined, a point estimate, a confidence interval, or a full p-value curve.
Extinction date estimation from sighting records.
Given a time-ordered table of sighting counts, EDE estimates when a species most likely went extinct, or tests whether it can still be considered extant. Eleven procedures from the sighting-record literature are implemented under one interface, including endpoint estimators and constant-rate, declining-rate, sighting-rate, Weibull and combinatorial persistence tests, a sighting-trend index, and reliability-adjusted inference.
You can install the released version of EDE from CRAN with:
install.packages("EDE")
And the development version from GitHub with:
# install.packages("remotes")
remotes::install_github("rodrigosqrt3/EDE")
Every estimator takes a sighting_data object: a table with one row per
time unit and the number of sightings recorded in it.
The earliest supplied time defines the observation origin. If monitoring began before the first sighting, include an initial row with count zero. Methods differ in their treatment of multiple sightings in one time unit: OLE and the Weibull test treat them as independent events, Solow's 1993 constant-rate test uses occupied times, and Burgman's discrete method uses the full frequencies.
library(EDE)
years <- c(1900, 1902, 1903, 1905, 1907, 1908, 1910, 1912, 1915, 1918,
1920, 1923, 1925, 1928, 1930, 1933, 1936)
sightings <- c(4, 3, 5, 2, 3, 4, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1)
sd <- sighting_data(data.frame(year = years, sightings = sightings))
The last confirmed sighting is 1936. No sightings were recorded afterward.
ole(sd)
#> <OLE (Roberts & Solow 2003)>
#> estimate: 1941.97
#> 95% CI: [1937.48, 1956.75]
robson1964(sd)
#> <Robson & Whitlock (1964)>
#> estimate: 1939
#> 95% one-sided CI: [1936, 1993]
strauss1989(sd)
#> <Strauss & Sadler (1989)>
#> estimate: 1938.25
#> 95% one-sided CI: [1936, 1943.41]
solow1993(sd, test_year = 2000)
#> <Solow (1993)>
#> estimate: 1944
solow1993b(sd, test_year = 2000)
#> <Solow (1993b)>
#> estimate: NA
#> Warning message:
#> p-value never falls to alpha before `test_year`.
solow2005(sd, test_year = 2000)
#> <Solow (2005) Weibull test>
#> estimate: 1954
mcinerny2006(sd, test_year = 2000)
#> <McInerny, Roberts, Davy & Cribb (2006)>
#> estimate: 1942
burgman1995(sd, test_year = 1945)
#> <Burgman, Grimson & Ferson (1995)>
#> estimate: 1944
solow_roberts2003(sd, test_year = 2000)
jaric2010(sd, test_year = 2000)
solow1993(), solow1993b(), solow2005(), mcinerny2006(), and
burgman1995(), solow_roberts2003(), and jaric2010() test a grid of candidate
years up to test_year and return the first year at which the p-value drops
to or below alpha. Pass data_out = TRUE to get the full curve instead of
the first crossing. For compatibility with version 0.1.0, that p-value is
stored in a column currently named chance.
curve_1993 <- solow1993(sd, test_year = 2000, data_out = TRUE)
curve_2005 <- solow2005(sd, test_year = 2000, data_out = TRUE)
plot(curve_1993$time, curve_1993$chance, type = "l",
xlab = "candidate extinction year", ylab = "p-value")
lines(curve_2005$time, curve_2005$chance, col = "firebrick")
The two curves diverge because they encode different models. solow1993()
assumes a stationary Poisson process and uses the number of distinct
sighting times after the observation origin. solow2005() instead uses the
spacing of the most recent sightings under a Weibull extreme-value model,
the same model used by ole().
For uncertain records, supply one reliability per occupied time (or one per row):
uncertain <- sighting_data(data.frame(
year = c(1900, 1910, 1920, 1930),
sightings = c(1, 1, 1, 1)
))
jaric_roberts2014(uncertain, reliability = c(1, 0.9, 0.6, 0.3))
| Function | Reference | Output |
|---|---|---|
ole() |
Roberts & Solow (2003) | point estimate + CI |
robson1964() |
Robson & Whitlock (1964) | point estimate + one-sided CI |
strauss1989(), strauss1989_curve() |
Strauss & Sadler (1989) | point estimate + one-sided CI / curve |
solow1993() |
Solow (1993) | first rejection time or p-value curve |
solow1993b() |
Solow (1993b) | first rejection time or p-value curve |
solow2005() |
Solow (2005) | first rejection time or p-value curve |
mcinerny2006() |
McInerny, Roberts, Davy & Cribb (2006) | first rejection time or p-value curve |
burgman1995() |
Burgman, Grimson & Ferson (1995) | first rejection time or p-value curve |
solow_roberts2003() |
Solow & Roberts (2003) | first rejection time or p-value curve |
jaric2010() |
Jarić & Ebenhard (2010) | first rejection time or p-value curve |
jaric_roberts2014() |
Jarić & Roberts (2014) | reliability-adjusted estimate + upper bound |
See vignette("EDE") for the statistical background and a worked
comparison across all eleven procedures.
GPL (>= 3)