The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.
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.
Health stats visible at Monitor.