如何在有限数据下预测时间序列



我有一个包含四列的数据集:日期、类别、产品、比率(%)。我希望能够预测我的数据中每个产品的价格。我遇到的主要问题是,由于产品不断地生产和停产,某些产品的历史数据很少,这使得预测变得困难。我在网上看到,有类似问题的人使用了贝叶斯层次模型,比如这个来自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)

但是我在网上找到的每个例子都只显示了在层次模型中使用的线性回归的代码示例。是否有可能使用层次模型来预测非线性数据?谁有经验使用分层模型,专门为时间序列数据?我将不胜感激。

我想你是在寻找一个模拟,你可以根据统计数据来做。

你可以"randomize"生成的数据使用平均率+-平均值减去最大值之间的方差。从来没有做过,但我认为这是可行的。老实说,我会尝试机器学习的方法。

无论如何,它不会代表现实,这就是为什么每个人都使用线性回归作为"参考"的原因。而不是这样的预测。这种"结果"应该在这个值附近。这是从商业角度来说的。如果你需要的是更多的数据,那么我会寻找一个模拟。

最新更新