标签: forecast

Python 在 R 的包预测中是否有类似于 nnetar 的模型?

R 的“forecast”包有一个函数 nnetar,它使用带有单个隐藏层的前馈神经网络在时间序列中进行预测。

现在我正在使用 Python 进行类似的分析。我想使用不需要像深度学习那样复杂的神经网络。也许 2 层和几个节点对我来说已经足够了。

那么,Python 是否有一个简单的神经网络模型可以用于像 nnetar 这样的时间序列?如果不是,如何处理这个问题?

python r neural-network forecast

11
推荐指数
1
解决办法
1506
查看次数

尝试使用指数平滑进行预测时出现收敛警告

我使用ExponentialSmoothingfrom statsmodels( Version: 0.10.1) 对一些数据进行拟合和预测。为了在设置配置时方便使用,我编写了一个函数exp_smoothing_forecast,它接受np array数据、配置列表 ( ) 和要预测[trend, damped, seasonal, seasonal_periods, use_boxcox, remove_bias]的数量。periods

\n\n
from statsmodels.tsa.holtwinters import ExponentialSmoothing\n\ndef exp_smoothing_forecast(data, config, periods):\n    '''\n    Perform Holt Winter\xe2\x80\x99s Exponential Smoothing forecast for periods of time.\n    '''\n    t,d,s,p,b,r = config\n    # define model\n    model = ExponentialSmoothing(np.array(data), trend=t, damped=d, seasonal=s, seasonal_periods=p)\n\n    # fit model\n    model_fit = model.fit(use_boxcox=b, remove_bias=r)\n\n    # make one step forecast\n    return model_fit.forecast(periods) \n
Run Code Online (Sandbox Code Playgroud)\n\n

我使用的数据是每周的。经过一些训练后,我找到了最佳配置并尝试在整个数据上使用它们。

\n\n
data_1 = [21725.64924, 20826.08817, …
Run Code Online (Sandbox Code Playgroud)

python exponential statsmodels convergence forecast

7
推荐指数
1
解决办法
4377
查看次数

在 Python 中 findfrequency spec.ar 等效

R 中有一个非常有用的函数在包上调用findfrequencyforecast它返回时间序列的主频率周期。可以在此处找到有关作者功能的更多信息:https : //robjhyndman.com/hyndsight/tscharacteristics/

我想在 Python 中实现一些等效的东西,但我在处理应该等于spec.arfindfrequency 内的R 函数的函数时遇到了问题。

该函数从去趋势序列开始,这很容易用x = statsmodels.tsa.tsatools.detrend(myTs, order=1, axis=0). 现在我有了残差,我想在 Python 中做相当于spec.arR中的函数,它首先将 AR 模型拟合到 x(或使用现有拟合)并计算(并默认绘制)拟合模型的谱密度.

我没有发现任何类似的东西,所以我一次做每一步,首先是 AR,然后是规格估计。我正在使用Airpassengers时间序列,但对于 AR 顺序或系数,我无法在 R 和 Python 上获得相同的结果。

我的R代码:

x <- AirPassengers
x <- residuals(tslm(x ~ trend))
ARmodel <- ar(x)
ARmodel
Run Code Online (Sandbox Code Playgroud)

我知道 15 是我的自回归模型的选定顺序。

我的 Python 代码:

import statsmodels.api as sm
dataPeriodic = pd.read_csv('AirPassengers.csv')
tsPeriodic = dataPeriodic.iloc[:,1]
x = statsmodels.tsa.tsatools.detrend(tsPeriodic, order=1, axis=0)
n = x.shape[0]
est_order = …
Run Code Online (Sandbox Code Playgroud)

signals time-series statsmodels forecast

6
推荐指数
1
解决办法
196
查看次数

Statsmodels:使用 ARIMA 实施直接和递归多步骤预测策略

我目前正在尝试使用 statsmodels ARIMA 库实现直接和递归多步骤预测策略,它提出了一些问题。

递归多步预测策略将训练单步模型,预测下一个值,将预测值附加到输入预测方法的外生值的末尾并重复。这是我的递归实现:

def arima_forecast_recursive(history, horizon=1, config=None):
    # make list so can add / remove elements
    history = history.tolist()
    model = ARIMA(history, order=config)
    model_fit = model.fit(trend='nc', disp=0)

    for i, x in enumerate(history):
        yhat = model_fit.forecast(steps=1, exog=history[i:])
        yhat.append(history)
    return np.array(yhat)

def walk_forward_validation(dataframe, config=None):
    n_train = 52  # Give a minimum of 2 forecasting periods to capture any seasonality
    n_test = 26  # Test set should be the size of one forecasting horizon
    n_records = len(dataframe)
    tuple_list = []

    for …
Run Code Online (Sandbox Code Playgroud)

python time-series forecasting statsmodels forecast

5
推荐指数
1
解决办法
4807
查看次数

Python Auto ARIMA 模型无法正常工作

我创建了一个具有有效 DatetimeIndex 的 pandas DataFrame

df.index = df.timestamp
df = df.resample("10Min", how="mean")
plt.plot_date(df.index, df['delay'])
fig = plt.gcf()
fig.set_size_inches(18.5, 8.5)
Run Code Online (Sandbox Code Playgroud)

它是这样的:

时间序列

模型拟合的相关属性:

df['delay'].head(5)

timestamp  
2016-10-30 04:30:00    32.000000  
2016-10-30 04:40:00    12.714286  
2016-10-30 04:50:00    36.941176  
2016-10-30 05:00:00    37.273381  
2016-10-30 05:10:00    38.960526  
Name: delay, dtype: float64
Run Code Online (Sandbox Code Playgroud)

然后我将 ARIMA 拟合到数据中:

import pmdarima as pm
import numpy as np
import matplotlib.pyplot as plt

df = df.dropna()

model = pm.auto_arima(df.delay, error_action='ignore', trace=1,
                      suppress_warnings=True,
                      seasonal=True, m=12)

model.plot_diagnostics(figsize=(7,5))
plt.show()
Run Code Online (Sandbox Code Playgroud)

诊断结果:

Fit ARIMA: order=(2, 0, 2) seasonal_order=(1, 0, 1, 12); …
Run Code Online (Sandbox Code Playgroud)

python arima forecast

5
推荐指数
1
解决办法
1万
查看次数

如何在python 3.7中安装pyramid-arima

我正在尝试在 Windows10 上的 python 3.7 中实现 auto arima 所以我尝试使用以下命令安装 Pyramid-armia

pip install pyramid-arima
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息

 Could not find a version that satisfies the requirement pyramid-arima (from versions: )]
 No matching distribution found for pyramid-arima
Run Code Online (Sandbox Code Playgroud)

我也尝试过这里提到的步骤

但收到了同样的错误消息,您能指导我安装吗?

python forecast

4
推荐指数
1
解决办法
8153
查看次数

R:如何在同一时间序列上绘制多个 ARIMA 预测

我想在同一个图上用不同的颜色绘制多个预测,但是比例尺不正确。我对任何其他方法持开放态度。

可重现的例子:

require(forecast)     

# MAKING DATA
data <- c(3.86000,  19.55810,  19.51091,  20.74048,  20.71333,  29.04191,  30.28864, 25.64300,  23.33368,  23.70870 , 26.16600  ,27.61286 , 27.88409 , 28.41400 , 24.81957 , 24.60952,  27.49857,  32.08000 , 29.98000, 27.49000 , 237.26150, 266.35478, 338.30000, 377.69476, 528.65905, 780.00000  )
a.ts <- ts(data,start=c(2005,1),frequency=12)

# FORECASTS
arima011_css =stats::arima(x = a.ts, order = c(0, 1, 1), method = "CSS") # css estimate
arima011_forecast = forecast(arima011_css, h=10, level=c(99.5))

arima321_css =stats::arima(x = a.ts, order = c(3, 2, 1), method = "CSS") # …
Run Code Online (Sandbox Code Playgroud)

plot r time-series arima forecast

3
推荐指数
1
解决办法
2636
查看次数

需要使用Google Spreadsheet中的FORECAST公式

我的电子表格包含A列中的一些数据 - 日期,B列(2012年特定日期的关键字使用情况)和C列(2013年特定日期的关键字使用情况),如图所示.我想要做的是创建类似FORECAST公式,根据这些数据,它将"预测"2月22日(C5)的未来日期的值.你可以帮我配方奶.

在此输入图像描述

谢谢!

google-sheets forecast google-sheets-formula

2
推荐指数
1
解决办法
2万
查看次数

由数据框中的列名引起的 arima xreg 参数错误

我正在尝试运行下面的代码,但收到以下错误。该代码使用预测包中的 auto.arima 来确定 arima 模型并将其拟合到某些数据。它还在 xreg 参数中使用回归量。我认为 xreg 中两列的名称可能是问题所在,但我不确定为什么。列的名称类似于“struct.c.NA..NA..211L..”,它们是函数的输出。如果我在 xreg 参数中没有这些列的情况下运行 auto.arima ,它似乎做得很好。非常感谢任何有关如何解决此问题的提示。

代码:

auto.arima(df2_comb[1:100,names(df2_comb)=='ECDD'], xreg = df2_comb[,names(df2_comb)!='ECDD'][1:100,names(df2_comb[,!names(df2_comb)%in%c('ECDD','order_dts')])])
Run Code Online (Sandbox Code Playgroud)

错误:

Error in auto.arima(df2_comb[1:100, names(df2_comb) == "ECDD"], xreg = df2_comb[,  : 
  xreg should be a numeric matrix or vector
Run Code Online (Sandbox Code Playgroud)

数据:

dput(df2_comb[1:100,])
structure(list(ECDD = c(319.4, 319.4, 319.4, 319.4, 319.4, 319.4, 
319.4, 319.4, 319.4, 319.4, 319.4, 319.4, 319.4, 319.4, 319.4, 
319.4, 319.4, 319.4, 319.4, 198, 142, 254, 178, 97, 113, 116, 
109, 127, 102, 99, 107, 109, 89, 101, 106, 319.4, 319.4, 319.4, 
319.4, …
Run Code Online (Sandbox Code Playgroud)

r time-series forecast

2
推荐指数
1
解决办法
2770
查看次数

fable 封装的 ARIMA 算法可以并行工作吗?

我正在尝试使用 fable 包创建 1000 家商店的预测。包是否fable像函数一样并行工作forecast

非常感谢

r forecasting arima forecast fable-r

2
推荐指数
1
解决办法
759
查看次数

R预测包如何处理ARIMA中的缺失值(auto.arima函数)

我在 R 中对缺失值的数据运行 ARIMA 模型。这是财务数据,因此缺失的日期要么是公共假期,要么是周末,所以不是完全随机的。我仍在思考应该对缺失值做出哪个决定。

然而,我看到的是该函数本身运行没有错误。因此 ARIMA 会自动以某种方式处理缺失值。但我在文档中找不到运行 ARIMA 时缺失值到底发生了什么(只是为了知道它是否会删除它们/估算或其他什么?)

best_fit = auto.arima(data_vector, stationary = is_stationary, ic = "bic", stepwise = FALSE, allowmean = TRUE, allowdrift = TRUE, approximation = FALSE)
Run Code Online (Sandbox Code Playgroud)

有人知道 auto.arima 默认情况下做什么吗?

r forecasting arima forecast

2
推荐指数
1
解决办法
66
查看次数

估计的自由度不足

我的自由度小于数据集中的行数。为什么我有错误“估计的自由度不足”。我该怎么做才能解决此错误?

我试图减少 中的值differenced = difference(X,11),但它仍然显示错误。

dataset, validation = series[0:split_point], series[split_point:]
print('Dataset %d, Validation %d' % (len(dataset), len(validation)))
dataset.to_csv('dataset.csv')
validation.to_csv('validation.csv')
from pandas import Series
from statsmodels.tsa.arima_model import ARIMA
import numpy
# load dataset
series = Series.from_csv('dataset.csv', header=None)
series = series.iloc[1:]
series.head()
series.shape

from pandas import Series
from statsmodels.tsa.arima_model import ARIMA
import numpy
# create a differenced series
def difference(dataset, interval=1):
    diff = list()
    for i in range(interval+1, len(dataset)):
        value = int(dataset[i]) - int(dataset[i - interval])
        diff.append(value)
    return numpy.array(diff)

# …
Run Code Online (Sandbox Code Playgroud)

python pandas statsmodels arima forecast

1
推荐指数
1
解决办法
4890
查看次数

如何计算具有多列的多个 Pandas 数据框的准确度

我有多个熊猫数据框如下:

data1 = {'1':[4], '2':[2], '3':[6]}
baseline = pd.DataFrame(data1)

 # baseline output  
   1  2  3
0  4  2  6

data2 = {'1':[3], '2':[5], '5':[5]}
forecast1 = pd.DataFrame(data2)

# forecast1 output
   1  2  5
0  3  5  5

data3 = {'1':[2], '3':[4], '5':[5], '6':[2]}
forecast2 = pd.DataFrame(data3)

# forecast2 output
   1  3  5  6
0  2  4  5  2
Run Code Online (Sandbox Code Playgroud)

基线数据框(即基线 vs 预测 1 和基线 vs 预测 2)相比,我如何计算预测 1预测 2(分别)的准确性(或混淆矩阵)?

另请注意,与基线数据框相比,预测 1 和预测 2 可能有一些额外的列。因此,精度计算需要考虑可用列的数量并处理额外的列。有没有办法处理这种情况?

这些数据帧是我正在做的数据清理的结果,这就是为什么其中一些数据帧几乎没有基线数据帧中不可用的额外列。 …

python pandas confusion-matrix forecast

0
推荐指数
1
解决办法
2629
查看次数