使用单列作为输入数据预测未来数据
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 个样本绝对是可以达到的),但是你可以测试不同的参数并阅读这种类型的型号。
我在使用我的输入集预测未来值时遇到了问题。我对 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 个样本绝对是可以达到的),但是你可以测试不同的参数并阅读这种类型的型号。