项目介绍:Orbit
项目概况
Orbit 是一个用于贝叶斯时间序列预测和推断的 Python 软件包。该工具包通过直观且熟悉的初始化、拟合、预测接口来处理时间序列任务,在其核心中使用概率编程语言进行计算。Orbit 专门帮助用户在时间序列数据中进行预测,其目标是为数据科学家和工程师提供一个简单而强大的工具,来完成复杂的时间序列分析和建模任务。
支持的模型和方法
Orbit 目前支持以下几种具体的模型实现:
- 指数平滑模型(ETS):用于处理多种类型时间序列的趋势和季节性成分。
- 局部全局趋势模型(LGT):结合局部和全局趋势的信息进行预测。
- 阻尼局部趋势模型(DLT):一种可以处理波动性和不稳定趋势的模型。
- 基于时间的核回归模型(KTR):一种非线性模型,适用于复杂模式的时间序列。
在模型估计和推断方面,Orbit 提供了多种采样和优化方法:
- 马尔科夫链蒙特卡洛法(MCMC):作为完整的采样方法使用。
- 最大后验估计法(MAP):用于点估计。
- 变分推断(VI):在近似分布上使用的混合采样方法。
安装指南
用户可以选择通过 PyPi 或源代码来安装 Orbit:
-
使用 pip 从 PyPI 安装:
pip install orbit-ml
-
从源代码安装:
git clone https://github.com/uber/orbit.git cd orbit pip install -r requirements.txt pip install .
此外,Orbit 也可以通过 conda 从 conda-forge 频道安装:
conda install -c conda-forge orbit-ml
快速开始指南
以下是如何使用 Damped-Local-Trend(DLT)模型进行完整贝叶斯预测的示例:
from orbit.utils.dataset import load_iclaims
from orbit.models import DLT
from orbit.diagnostics.plot import plot_predicted_data
df = load_iclaims()
test_size = 52
train_df = df[:-test_size]
test_df = df[-test_size:]
dlt = DLT(
response_col='claims', date_col='week',
regressor_col=['trend.unemploy', 'trend.filling', 'trend.job'],
seasonality=52,
)
dlt.fit(df=train_df)
predicted_df = dlt.predict(df=test_df)
plot_predicted_data(
training_actual_df=train_df, predicted_df=predicted_df,
date_col=dlt.date_col, actual_col=dlt.response_col,
test_actual_df=test_df
)
社区与贡献
Orbit 欢迎社区贡献者的参与。在开始之前,建议阅读项目的代码行为准则以及贡献指南,以便更好地协作。
版本控制与引用
项目的各个版本和变更记录在变化日志中,并提供引用格式以支持在学术出版物中进行正式引用。
相关项目
Orbit 项目还与多个其他概率编程和时间序列预测项目有联系,如 Pyro、Stan、Rlgt、forecast 和 prophet。这些工具共同构成了丰富的时间序列分析生态系统,为复杂的预测任务提供了多种方法和思路。