问题描述
我正在尝试找到一种预测数字序列中下一个数字的方法。通常,我会为此使用线性回归,但是如您所见,这里有日期和一列数据。没有因变量,只有一个自变量(贷款)。有没有一种简单的方法根据已知的数字序列来预测下一个数字是多少,或者是两个数字的范围?另外,有没有办法获得结果概率,例如90%或95%的自信?
这是我的数据。
Account Loans
2019 Aug 393.3
2020 Feb 383.2
2020 Mar 455.4
2020 Apr 542.0
2020 May 510.0
2020 Jun 483.5
2020 Jul 465.5
2020 Aug 448.2
Aug 12 451.1
Aug 19 447.5
Aug 26 442.3
Sep 02 444.7
我最终希望看到的是:95%的置信度为443至445。有可能吗?
解决方法
解决方案
选项1-滚动平均值
取最后n个值(a)的平均值。从最后一个数字(l)中减去a
作为(s)。最终结果应为l-s
或l+s
。
示例
def predict(arr,n):
l = arr[-1]
a = sum(arr[:n]) / n
s = abs(a - l)
lower_bounds = l - s
upper_bounds = l + s
return (upper_bounds,lower_bounds)
选项2-指数平滑
考虑使用统计模型中的指数平滑法
示例
from statsmodels.tsa.api import SimpleExpSmoothing
def predict(arr,sl)
return SimpleExpSmoothing(arr).fit(smoothing_level=sl).fitted_values
参考
statsmodels(简单指数平滑):https://www.statsmodels.org/stable/examples/notebooks/generated/exponential_smoothing.html
Python Simple Exponential Smoothing
NumPy version of "Exponential weighted moving average",equivalent to pandas.ewm().mean()
calculate exponential moving average in python
,首先,您需要进行一些预处理,以将您的自变量转换为一定数量的数字。也许是从2019年8月1日开始的天数。那么您可以进行回归。