我们可以根据单列数字预测序列中的下一个数字吗? 示例示例

问题描述

我正在尝试找到一种预测数字序列中下一个数字的方法。通常,我会为此使用线性回归,但是如您所见,这里有日期和一列数据。没有因变量,只有一个自变量(贷款)。有没有一种简单的方法根据已知的数字序列来预测下一个数字是多少,或者是两个数字的范围?另外,有没有办法获得结果概率,例如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-sl+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日开始的天数。那么您可以进行回归。