协变量支持现状
API 接受协变量,把它们对齐到清洗后的序列,并逐列说明是否交给了模型。模型(hora-1.0)目前不使用协变量:不会把任何列交给模型,通过下文数据检查的列都报告 reason: "model_unsupported"。某一列是否真正交给了模型,以响应中的逐列报告为准。预测结果始终照常返回。协变量是否提升精度取决于数据,请用自己的数据回测评估。
1. 两类协变量
- 历史协变量:
series行上额外的数值字段,与历史y同步记录(例如历史温度或工况)。 - 未来协变量:同时出现在
future_covariates中的列,每个预测时间点一行(例如节假日、排班计划或已发布的天气预报)。未来列在series行上也必须有历史值。
{
"model": "hora-1.0",
"h": 2,
"freq": "1h",
"series": [
{"unique_id": "meter-001", "ds": "2026-09-01T00:00:00Z", "y": 120.5, "temperature": 27.4, "is_holiday": 0},
{"unique_id": "meter-001", "ds": "2026-09-01T01:00:00Z", "y": 118.2, "temperature": 26.9, "is_holiday": 0}
],
"future_covariates": [
{"unique_id": "meter-001", "ds": "2026-09-01T02:00:00Z", "temperature": 26.5},
{"unique_id": "meter-001", "ds": "2026-09-01T03:00:00Z", "temperature": 26.1}
]
}2. 规则与拒绝
| 输入 | 行为 |
|---|---|
future_covariates 行里含 y | 422 FUTURE_COVARIATES_INVALID。 |
future_covariates 的列在 series 行上不存在 | 422 COVARIATE_COLUMN_MISMATCH,details.future_only 列出这些列。 |
| 协变量列超过 8 列 | 422 VALIDATION_ERROR,带 details.covariates 与 details.max_covariates。 |
| 非数值列(布尔按 0/1 计) | 不使用,报告 non_numeric。 |
| 长缺口,或未来值没有覆盖每个预测时间点 | 不使用,报告 data_incomplete。 |
| 短缺口(不超过策略的短缺口上限) | clean_exog 为 true(默认)时线性填补;clean_exog: false 时任何缺口都会使该列 data_incomplete。 |
options.cleaning.preset: "raw" | 不对齐协变量,每列报告 raw_preset。 |
协变量完全跟随目标列:时间戳对齐、重复处理和分段都与 y 相同;除上面的短缺口填补外不做任何修复。
3. 读取报告
实体带协变量列时,对应的 model_input[] 条目会带 covariates[]。目前任何模型的报告都是这样:
{
"unique_id": "meter-001",
"covariates_used": false,
"covariates": [
{"name": "temperature", "role": "future", "used": false, "reason": "model_unsupported"},
{"name": "is_holiday", "role": "past", "used": false, "reason": "model_unsupported"}
]
}将来某个模型开始使用协变量后,交给模型的列会报告 used: true,covariates_used 随之为 true。除上面的清洗原因外,role_unsupported 表示模型只接受历史协变量而该列作为未来列发送;limit_exceeded 表示该列超出了模型自身的协变量上限。