使用单列作为输入数据预测未来数据

Predicting future data using a single column as input data

我在使用我的输入集预测未来值时遇到了问题。我对 statsmodels 还很陌生,所以我不确定是否可以处理这么多输入数据。

这是我正在使用的DataFrame。 (注意:从索引 5 开始,因为我必须过滤一些数据)

    year  suicides_no
5   1990       193361
6   1991       198020
7   1992       211473
8   1993       221565
9   1994       232063
10  1995       243544
11  1996       246725
12  1997       240745
13  1998       249591
14  1999       256119
15  2000       255832
16  2001       250652
17  2002       256095
18  2003       256079
19  2004       240861
20  2005       234375
21  2006       233361
22  2007       233408
23  2008       235447
24  2009       243487
25  2010       238702
26  2011       236484
27  2012       230160
28  2013       223199
29  2014       222984
30  2015       203640

据此,我想对年份 (2016-2022) 进行预测,并将其绘制成这样的图表。

这是一个相当 open-ended 的问题。我当然可以向您展示如何编写一些代码来进行 a 预测,但我认为讨论如何进行 good 预测超出了范围计算器的。这将非常依赖于对问题领域的良好理解。

但抛开这个警告,继续演出。您曾建议您希望查看 Statsmodel 示例。

Statsmodels is certainly capable of these sorts of forecasts. 有很多方法,但是是的,您可以采用一维 time-series 并使用它来进行未来预测。

There's also a detailed tutorial of state space models here - 这是一种常见的方法,或者更确切地说,是一系列方法。将使用不同的 state-space 模型,具体取决于例如您是否认为季节性(循环行为)或某些外生变量(行为的背景驱动因素)重要与否。

我从那里改编了一个简单的例子:

import pandas as pd
import statsmodels as sm

# df = your DataFrame

endog = df.suicides_number
endog.index = pd.period_range("1990", "2015", freq="Y") 

# Construct the (very simple) AR model
mod = sm.tsa.SARIMAX(endog, order=(1, 0, 0), trend='c')

# Estimate the parameters
res = mod.fit()

res.forecast(steps=7)

order 参数决定了您获得的模型类型。这非常简单,一个自回归模型,它查看过去的行为、最近的行为并向前推断。

就像我说的,我不能保证它会在这里给你一个好的预测(向前取 25​​ 个样本来预测接下来的 7 个样本绝对是可以达到的),但是你可以测试不同的参数并阅读这种类型的型号。