README.md (prophet-1.0) | : | README.md (prophet-1.1) | ||
---|---|---|---|---|
# Prophet: Automatic Forecasting Procedure | # Prophet: Automatic Forecasting Procedure | |||
 |  | |||
[](https://pypi.python .org/pypi/prophet) | [](https://pypi.python .org/pypi/prophet) | |||
[]( https://anaconda.org/conda-forge/prophet/) | []( https://anaconda.org/conda-forge/prophet/) | |||
[](https://CRAN.R-pr oject.org/package=prophet) | ||||
Prophet is a procedure for forecasting time series data based on an additive mod el where non-linear trends are fit with yearly, weekly, and daily seasonality, p lus holiday effects. It works best with time series that have strong seasonal ef fects and several seasons of historical data. Prophet is robust to missing data and shifts in the trend, and typically handles outliers well. | Prophet is a procedure for forecasting time series data based on an additive mod el where non-linear trends are fit with yearly, weekly, and daily seasonality, p lus holiday effects. It works best with time series that have strong seasonal ef fects and several seasons of historical data. Prophet is robust to missing data and shifts in the trend, and typically handles outliers well. | |||
Prophet is [open source software](https://code.facebook.com/projects/) released by Facebook's [Core Data Science team](https://research.fb.com/category/data-sci ence/). It is available for download on [CRAN](https://cran.r-project.org/packag e=prophet) and [PyPI](https://pypi.python.org/pypi/prophet/). | Prophet is [open source software](https://code.facebook.com/projects/) released by Facebook's [Core Data Science team](https://research.fb.com/category/data-sci ence/). It is available for download on [CRAN](https://cran.r-project.org/packag e=prophet) and [PyPI](https://pypi.python.org/pypi/prophet/). | |||
## Important links | ## Important links | |||
- Homepage: https://facebook.github.io/prophet/ | - Homepage: https://facebook.github.io/prophet/ | |||
- HTML documentation: https://facebook.github.io/prophet/docs/quick_start.html | - HTML documentation: https://facebook.github.io/prophet/docs/quick_start.html | |||
- Issue tracker: https://github.com/facebook/prophet/issues | - Issue tracker: https://github.com/facebook/prophet/issues | |||
skipping to change at line 27 | skipping to change at line 28 | |||
- Contributing: https://facebook.github.io/prophet/docs/contributing.html | - Contributing: https://facebook.github.io/prophet/docs/contributing.html | |||
- Prophet R package: https://cran.r-project.org/package=prophet | - Prophet R package: https://cran.r-project.org/package=prophet | |||
- Prophet Python package: https://pypi.python.org/pypi/prophet/ | - Prophet Python package: https://pypi.python.org/pypi/prophet/ | |||
- Release blogpost: https://research.fb.com/prophet-forecasting-at-scale/ | - Release blogpost: https://research.fb.com/prophet-forecasting-at-scale/ | |||
- Prophet paper: Sean J. Taylor, Benjamin Letham (2018) Forecasting at scale. Th e American Statistician 72(1):37-45 (https://peerj.com/preprints/3190.pdf). | - Prophet paper: Sean J. Taylor, Benjamin Letham (2018) Forecasting at scale. Th e American Statistician 72(1):37-45 (https://peerj.com/preprints/3190.pdf). | |||
## Installation in R | ## Installation in R | |||
Prophet is a [CRAN package](https://cran.r-project.org/package=prophet) so you c an use `install.packages`. | Prophet is a [CRAN package](https://cran.r-project.org/package=prophet) so you c an use `install.packages`. | |||
```R | ```r | |||
install.packages('prophet') | install.packages('prophet') | |||
``` | ``` | |||
After installation, you can [get started!](https://facebook.github.io/prophet/do cs/quick_start.html#r-api) | After installation, you can [get started!](https://facebook.github.io/prophet/do cs/quick_start.html#r-api) | |||
#### Experimental backend - cmdstanr | ||||
You can also choose an experimental alternative stan backend called `cmdstanr`. | ||||
Once you've installed `prophet`, | ||||
follow these instructions to use `cmdstanr` instead of `rstan` as the backend: | ||||
```r | ||||
# R | ||||
# We recommend running this in a fresh R session or restarting your current sess | ||||
ion | ||||
install.packages(c("cmdstanr", "posterior"), repos = c("https://mc-stan.org/r-pa | ||||
ckages/", getOption("repos"))) | ||||
# If you haven't installed cmdstan before, run: | ||||
cmdstanr::install_cmdstan() | ||||
# Otherwise, you can point cmdstanr to your cmdstan path: | ||||
cmdstanr::set_cmdstan_path(path = <your existing cmdstan>) | ||||
# Set the R_STAN_BACKEND environment variable | ||||
Sys.setenv(R_STAN_BACKEND = "CMDSTANR") | ||||
``` | ||||
### Windows | ### Windows | |||
On Windows, R requires a compiler so you'll need to [follow the instructions](ht tps://github.com/stan-dev/rstan/wiki/RStan-Getting-Started) provided by `rstan`. The key step is installing [Rtools](http://cran.r-project.org/bin/windows/Rtool s/) before attempting to install the package. | On Windows, R requires a compiler so you'll need to [follow the instructions](ht tps://github.com/stan-dev/rstan/wiki/RStan-Getting-Started) provided by `rstan`. The key step is installing [Rtools](http://cran.r-project.org/bin/windows/Rtool s/) before attempting to install the package. | |||
If you have custom Stan compiler settings, install from source rather than the C RAN binary. | If you have custom Stan compiler settings, install from source rather than the C RAN binary. | |||
## Installation in Python | ## Installation in Python - PyPI release | |||
Prophet is on PyPI, so you can use `pip` to install it. From v0.6 onwards, Pytho n 2 is no longer supported. As of v1.0, the package name on PyPI is "prophet"; p rior to v1.0 it was "fbprophet". | Prophet is on PyPI, so you can use `pip` to install it. From v0.6 onwards, Pytho n 2 is no longer supported. As of v1.0, the package name on PyPI is "prophet"; p rior to v1.0 it was "fbprophet". | |||
```bash | ```bash | |||
# Install pystan with pip before using pip to install prophet | # Install pystan with pip before using pip to install prophet | |||
pip install pystan | # pystan>=3.0 is currently not supported | |||
pip install pystan==2.19.1.1 | ||||
pip install prophet | pip install prophet | |||
``` | ``` | |||
The default dependency that Prophet has is `pystan`. PyStan has its own [install ation instructions](http://pystan.readthedocs.io/en/latest/installation_beginner .html). Install pystan with pip before using pip to install prophet. | #### Experimental backend - cmdstanpy | |||
You can also choose a (more experimental) alternative stan backend called `cmdst anpy`. It requires the [CmdStan](https://mc-stan.org/users/interfaces/cmdstan) c ommand line interface and you will have to specify the environment variable `STA N_BACKEND` pointing to it, for example: | You can also choose a (more experimental) alternative stan backend called `cmdst anpy`. It requires the [CmdStan](https://mc-stan.org/users/interfaces/cmdstan) c ommand line interface and you will have to specify the environment variable `STA N_BACKEND` pointing to it, for example: | |||
``` | ```bash | |||
# bash | # bash | |||
$ CMDSTAN=/tmp/cmdstan-2.22.1 STAN_BACKEND=CMDSTANPY pip install prophet | $ CMDSTAN=/tmp/cmdstan-2.22.1 STAN_BACKEND=CMDSTANPY pip install prophet | |||
``` | ``` | |||
Note that the `CMDSTAN` variable is directly related to `cmdstanpy` module and c an be omitted if your CmdStan binaries are in your `$PATH`. | Note that the `CMDSTAN` variable is directly related to `cmdstanpy` module and c an be omitted if your CmdStan binaries are in your `$PATH`. | |||
It is also possible to install Prophet with two backends: | ||||
``` | ||||
# bash | ||||
$ CMDSTAN=/tmp/cmdstan-2.22.1 STAN_BACKEND=PYSTAN,CMDSTANPY pip install prophet | ||||
``` | ||||
After installation, you can [get started!](https://facebook.github.io/prophet/do cs/quick_start.html#python-api) | After installation, you can [get started!](https://facebook.github.io/prophet/do cs/quick_start.html#python-api) | |||
If you upgrade the version of PyStan installed on your system, you may need to r einstall prophet ([see here](https://github.com/facebook/prophet/issues/324)). | If you upgraded the version of PyStan installed on your system, you may need to reinstall prophet ([see here](https://github.com/facebook/prophet/issues/324)). | |||
### Anaconda | ### Anaconda | |||
Use `conda install gcc` to set up gcc. The easiest way to install Prophet is thr ough conda-forge: `conda install -c conda-forge prophet`. | The easiest way to install Prophet is through conda-forge: `conda install -c con da-forge prophet`. | |||
### Windows | ### Windows | |||
On Windows, PyStan requires a compiler so you'll need to [follow the instruction s](http://pystan.readthedocs.io/en/latest/windows.html). The easiest way to inst all Prophet in Windows is in Anaconda. | The easiest way to install Prophet in Windows is in Anaconda. | |||
### Linux | ### Linux | |||
Make sure compilers (gcc, g++, build-essential) and Python development tools (py thon-dev, python3-dev) are installed. In Red Hat systems, install the packages g cc64 and gcc64-c++. If you are using a VM, be aware that you will need at least 4GB of memory to install prophet, and at least 2GB of memory to use prophet. | Make sure compilers (gcc, g++, build-essential) and Python development tools (py thon-dev, python3-dev) are installed. In Red Hat systems, install the packages g cc64 and gcc64-c++. If you are using a VM, be aware that you will need at least 4GB of memory to install prophet, and at least 2GB of memory to use prophet. | |||
## Installation in Python - Development version | ||||
Since Pystan2 is no longer being maintained, the python package will move to dep | ||||
end solely on `cmdstanpy` (benefits described [here](https://github.com/facebook | ||||
/prophet/issues/2041)). This has been updated in the development version of the | ||||
package (1.1), but this version hasn't yet been released to PyPI. If you would l | ||||
ike to use `cmdstanpy` only for your workflow, you can clone this repo and build | ||||
from source manually: | ||||
```bash | ||||
git clone https://github.com/facebook/prophet.git | ||||
cd prophet/python | ||||
python -m pip install -r requirements.txt | ||||
python setup.py develop | ||||
``` | ||||
By default, Prophet will use a fixed version of `cmdstan` (downloading and insta | ||||
lling it if necessary) to compile the model executables. If this is undesired an | ||||
d you would like to use your own existing `cmdstan` installation, you can set th | ||||
e environment variable `PROPHET_REPACKAGE_CMDSTAN` to `False`: | ||||
```bash | ||||
export PROPHET_REPACKAGE_CMDSTAN=False; python setup.py develop | ||||
``` | ||||
### Windows | ||||
Using `cmdstanpy` with Windows requires a Unix-compatible C compiler such as min | ||||
gw-gcc. If cmdstanpy is installed first, one can be installed via the `cmdstanpy | ||||
.install_cxx_toolchain` command. | ||||
## Changelog | ## Changelog | |||
### Version 1.0 (2021.03.28) | ||||
- Python package name changed from fbprophet to prophet | ||||
- Fixed R Windows build issues to get latest version back on CRAN | ||||
- Improvements in serialization, holidays, and R timezone handling | ||||
- Plotting improvements | ||||
### Version 0.7 (2020.09.05) | ||||
- Built-in json serialization | ||||
- Added "flat" growth option | ||||
- Bugfixes related to `holidays` and `pandas` | ||||
- Plotting improvements | ||||
- Improvements in cross validation, such as parallelization and directly specify | ||||
ing cutoffs | ||||
### Version 0.6 (2020.03.03) | ### Version 0.6 (2020.03.03) | |||
- Fix bugs related to upstream changes in `holidays` and `pandas` packages. | - Fix bugs related to upstream changes in `holidays` and `pandas` packages. | |||
- Compile model during first use, not during install (to comply with CRAN policy ) | - Compile model during first use, not during install (to comply with CRAN policy ) | |||
- `cmdstanpy` backend now available in Python | - `cmdstanpy` backend now available in Python | |||
- Python 2 no longer supported | - Python 2 no longer supported | |||
### Version 0.5 (2019.05.14) | ### Version 0.5 (2019.05.14) | |||
- Conditional seasonalities | - Conditional seasonalities | |||
End of changes. 13 change blocks. | ||||
16 lines changed or deleted | 79 lines changed or added |