如何用有限的数据预测时间序列

问题描述 投票:0回答:1

我有一个包含四列的数据集:日期、类别、产品、比率(%)。我希望能够预测数据中每种产品的费率。我遇到的主要问题是,由于产品不断投入和停产,某些产品的历史数据很少,导致预测变得困难。我在网上读到,有类似问题的人使用了贝叶斯分层模型,就像 Numpyro 中的这个例子:

import numpyro
from numpyro.infer import MCMC, NUTS, Predictive
import numpyro.distributions as dist
from jax import random
def model(PatientID, Weeks, FVC_obs=None):
    μ_α = numpyro.sample("μ_α", dist.Normal(0., 100.))
    σ_α = numpyro.sample("σ_α", dist.HalfNormal(100.))
    μ_β = numpyro.sample("μ_β", dist.Normal(0., 100.))
    σ_β = numpyro.sample("σ_β", dist.HalfNormal(100.))
    
    unique_patient_IDs = np.unique(PatientID)
    n_patients = len(unique_patient_IDs)
    
    with numpyro.plate("plate_i", n_patients):
        α = numpyro.sample("α", dist.Normal(μ_α, σ_α))
        β = numpyro.sample("β", dist.Normal(μ_β, σ_β))
    
    σ = numpyro.sample("σ", dist.HalfNormal(100.))
    FVC_est = α[PatientID] + β[PatientID] * Weeks
    
    with numpyro.plate("data", len(PatientID)):
        numpyro.sample("obs", dist.Normal(FVC_est, σ), obs=FVC_obs)

但是我在网上找到的每个示例都只显示了分层模型中使用的线性回归的代码示例。是否可以使用分层模型来预测非线性数据?有谁有使用分层模型的经验,特别是时间序列数据?

time-series hierarchical-clustering hierarchical-bayesian multivariate-time-series numpyro
1个回答
0
投票

我认为您正在寻找一种模拟,您可以根据统计数据进行模拟。

您可以使用平均率 +- 平均值减去最大值之间的方差“随机化”生成的数据。从来没有这样做过,但我认为这是可行的。说实话,我会尝试机器学习的方式。

无论如何,它不能代表现实,这就是为什么每个人都使用线性回归作为“参考”而不是预测本身。有点“结果应该围绕这个值”。 这是从商业角度来讲。如果您需要更多数据,那么我会寻找模拟。

© www.soinside.com 2019 - 2024. All rights reserved.