【问题标题】:What kind of model can i use to forecast this data?我可以使用什么样的模型来预测这些数据?
【发布时间】:2018-12-01 11:57:17
【问题描述】:

这是我每周都有一些订单的数据集。我想预测今年剩余时间的订单。我试过建立一个 ARIMA 模型,但它不起作用。

对于这么小的数据集,我可以尝试其他任何模型吗?也许是 HMM 或尝试为其拟合多项式曲线或构建时间序列 LSTM? FW Order 1 6 2 45 3 59 4 60 5 50 6 115 7 23 8 44 9 164 10 8 11 30 12 20 13 0 14 50 15 60 16 0 17 50 18 30 19 115 20 75 21 54 22 29 23 124 24 32 25 28

【问题讨论】:

  • 带有多项式核的正态支持向量回归模型怎么样?

标签: python machine-learning time-series models data-science


【解决方案1】:

这是您的数据图。您的主要问题是任何模型都没有足够的数据来为您提供具有统计意义的有意义的预测。您的数据大多看起来像平均值周围的白噪声,因此您可以用以下方式表示它:

x_t = mu + e

其中 e 是代表白噪声的误差项。

有一点均值回归的迹象,因此您可以尝试使用 Ornstein Uhlenbeck 模型:

dx_t = theta * (mu - x_t-1) dt + sigma * dW_t

https://en.wikipedia.org/wiki/Ornstein%E2%80%93Uhlenbeck_process

这里是编码的。橙色线是预测。同样,预测不是很好,但如果没有更多数据,您可能不会发现更好。

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

def least_squares_naive(s, delta=1.0):
    y = s.diff().iloc[1:]
    x = s.shift(1)[1:]

    res = sm.OLS(y, sm.add_constant(x)).fit()
    b, a = res.params

    residual_df = y - (a * x + b)
    se = residual_df.std(ddof=2)

    lambda_ = -a / delta
    mu_ = b / (lambda_ * delta)
    sigma_ = se / (delta ** 0.5)

    return mu_, lambda_, sigma_

list = [6,45,59,60,50,115,23,44,164,8,30,20,0,50,60,0,50,30,115,75,54,29,124,32,28]
s = pd.Series(list)

mu_, lambda_, sigma_ = least_squares_naive(s)

dx = -lambda_ * (s - mu_)
pred = (s + dx).shift()
diff = s.diff(1).dropna()

s.plot()
pred.plot()
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 2019-08-27
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多