# actR [![lifecycle](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental) [![NSF-1948926](https://img.shields.io/badge/NSF-1929460-blue.svg)](https://nsf.gov/awardsearch/showAward?AWD_ID=1929460) [![Belmont SEI ACCEDE](https://img.shields.io/badge/Belmont%20SEI-ACCEDE-blue)](https://www.belmontforum.org/archives/projects/abrupt-change-in-climate-and-ecosystems-where-are-the-tipping-points) [![DOI](https://zenodo.org/badge/359257314.svg)](https://zenodo.org/badge/latestdoi/359257314) [![R-CMD-check](https://github.com/LinkedEarth/actR/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/LinkedEarth/actR/actions/workflows/R-CMD-check.yaml) The goal of actR – the Abrupt Change Toolkit in R – is to streamline abrupt change detection, significance testing, uncertainty quantification and visualization for paleogeoscientific datasets. This project is funded by the Belmont Forum as part of the “Abrupt Changes in Climate and Ecosystems - Data & e-Infrastructure (ACCEDE)” project, as part of the Science-driven e-Infrastructure Innovation program. We’re still in the development process, but basic functionality is now available. ## actR Design and Philososphy ### Data input actR, like most software, benefits greatly from standardized data inputs. To achieve this, actR works best with LiPD data, although users can also directly input data as matrices or vectors and metadata in R. Either way, the inputs are passed through the `prepareInput()` function, which helps to standardize the input for subsequent analysis, and includes options for simple data preprocessing for methods as needed. ### Change detection - single site actR equips single site, time series based change detection with error propagation and robust null hypothesis testing. Change detection algorithms are often highly parametric, and don’t consider many uncertainties that are relevant to paleogeoscientific data. There are two key processes to achieve this. The first is handled by `propagateUncertainty()`, which will take age and/or paleo (i.e., y-axis) uncertainties, and propagate through the analysis using an ensemble approach. Age and/or paleo ensembles can be entered directly into actR (this is typically preferred when possible), or generated internally if desired. The second, is robust null hypothesis testing, using the function `testNullHypothesis()`, which generates surrogate data based on the characteristics of the input data, and the repeats the entire analysis (including error propagation) many times. This lets the user assess how plausible surrogate data perform given the data, algorithm, and parametric choices, and determine whether any detected changes are robust to those sources of uncertainty and bias. For an example of how this proceess works, [check out this example](articles/detectExcursion.html). ### Change detection - multi site / geospatial This is planned, but still in progress. ### Results All change detection methods implemented in actR have two output options, `summary()` (and `print()`), which provides a text summary of the test conducted and the results, and `plot()` which visualizes the results, including both error propagation and null hypothesis testing. Other approaches, including geospatial change detection, will include additional outputs as appropriate. ## Contributor guide We’re ready for interested people to start contributing Abrupt Change methods to actR! [Check out the Contribrutor’s Guide!](contributor_guide.html) ## Installation You can install the development version from [GitHub](https://github.com/) with: # install.packages("remotes") remotes::install_github("LinkedEarth/actR")