The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Climate records combine a slowly evolving forced signal (for example greenhouse-gas driven warming) with internal variability (weather, ENSO, decadal oscillations). The time of emergence (ToE) is the moment the signal becomes large relative to that variability, so that a change can be told apart from natural fluctuations (Hawkins and Sutton, 2012).
toeclim implements a transparent, configurable version
of this idea and attaches uncertainty to it:
k for at least persist consecutive years
(optionally through to the end of the record);d <- toe_simulate(n_years = 150, slope = 0.03, onset = 1970,
sigma = 0.3, phi = 0.5, seed = 10)
head(d, 3)
#> year forced member_01
#> 1 1900 0 -0.03289004
#> 2 1901 0 0.09251191
#> 3 1902 0 -0.22392926The forced response is flat until 1970 and then warms at 0.03 units per year, so the true signal is known.
toe_trend(d$member_01, d$year)
#> Sen's slope / Mann-Kendall trend test
#> n = 150
#> Slope: 0.01612 per unit time, 95 % CI [ 0.01409, 0.01814 ]
#> Mann-Kendall: S = 8584 , Z = 14.1 , p = <2e-16
#> Lag-1 autocorrelation (detrended): 0.803 -> trend-free prewhitening appliedfit <- toe_emerge(d$member_01, d$year, baseline = c(1900, 1950),
n_boot = 200, seed = 1)
fit
#> Time of emergence
#> Signal: quadratic | threshold k = 2 | persistence = 5 (window)
#> Baseline: 1900-1950 | noise (baseline) sigma = 0.281
#> ToE: 1993
#> Bootstrap (ar1, n = 200): 90% interval [1983.95, 2001.00], 100% of replicates emergeThe shaded orange band is the bootstrap interval for the emergence
year. The grey band shows the baseline mean plus or minus k
noise standard deviations.
The threshold k and the persistence requirement are
choices, not physics. toe_sensitivity() shows how much they
matter.
For large ensembles, apply the method to every member and inspect the
spread. The bundled toe_example data set has ten synthetic
members.
members <- toe_example[, grep("^member", names(toe_example))]
ens <- toe_ensemble(members, toe_example$year, baseline = c(1900, 1960))
ens
#> Ensemble time of emergence (10 members)
#> Emerged: 10 / 10
#> Median ToE: 1998.5 | range: 1988 - 2015 | 5-95%: 1989 - 2015
#> Pooled (ensemble-mean signal): 2001The pooled estimate uses the ensemble-mean signal, which has little noise of its own, against the typical single-realisation noise. It is usually earlier than most members: the ensemble mean reveals the forced response before any single realisation can.
Monthly data can be converted to seasonal-cycle-free anomalies and then to annual means:
dates <- seq(as.Date("1950-01-01"), as.Date("2019-12-01"), by = "month")
mon <- as.integer(format(dates, "%m"))
yr <- as.integer(format(dates, "%Y"))
x <- 12 + 8 * sin(2 * pi * mon / 12) + 0.02 * pmax(0, yr - 1980) +
rnorm(length(dates), sd = 0.8)
anom <- toe_anomaly(x, dates, baseline = c(1950, 1979), by = "month")
annual <- toe_annual(anom$anomaly, dates)
head(annual, 3)
#> year value n
#> 1 1950 0.1252714 12
#> 2 1951 0.1423281 12
#> 3 1952 0.2366975 12"loess" signal will follow low-frequency internal
variability if the span is small.toe_noise()
reports the effective sample size.Hawkins, E. and Sutton, R. (2012). Time of emergence of climate signals. Geophysical Research Letters, 39, L01702. doi:10.1029/2011GL050087
Yue, S., Pilon, P., Phinney, B. and Cavadias, G. (2002). The influence of autocorrelation on the ability to detect trend in hydrological series. Hydrological Processes, 16, 1807-1829. doi:10.1002/hyp.1095
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.