Python 中等效的 R 的 arima 函数

Equivalent R's arima function in Python

我使用 statsmodel 的 arima 函数尝试了 Python 的时间序列预测,它给了我与 r 的 arima 函数不同的结果。 我使用了相同的超参数。

R 的版本:

fit <- arima(data[1:9000,3], order = c(3,0,3), seasonal = list(order = c(0,0,0)))
predd = forecast(fit,h=1000)
pred = cbind(data[9001:10000,3], predd$mean)

Python的版本:

series = df[0:9000].copy()
model = ARIMA(series, order=(3, 0, 3))
model_fitted = model.fit()
predictions = model_fitted.predict(start=len(series), end=len(df)-1)

附上绘图结果Plots of the R's and Python's arima

我做错了什么?

对于单变量时间序列,除了 statsmodel 之外,我还可以使用其他 Python package/function arima 吗?

任何见解或指导将不胜感激。非常感谢您。

总结:我不知道你是如何创建你显示为“R版本”的第一张图片的,但是当我运行你给出的R代码并绘制时结果,它们看起来与我的 Python 结果相同,并且看起来不像您包含的“R 版本”图表。我最好的猜测是,当您创建显示 R 结果的图像时,您以某种方式绘制了样本内预测。

详情见下文。

详情:

我首先从您提供的 link 下载数据集“dataset.txt”,https://gist.github.com/DouddaS/5043a340ff7d7b35b255b4f8f74fc534

现在,如果我 运行 以下 R 代码:

library(forecast)
y <- read.csv('dataset.txt')
fit <- arima(y[1:9000, 1], order = c(3,0,3), seasonal = list(order = c(0,0,0)))
predd = forecast(fit,h=1000)
pred = cbind(y[9001:10000,1], predd$mean)
autoplot(pred)

这给出了以下情节:

当我 运行 以下 Python 代码时:

y = pd.read_csv('dataset.txt')
model = sm.tsa.arima.ARIMA(y.iloc[:9000, 0], order=(3, 0, 3))
model_fitted = model.fit()
pred = model_fitted.predict(start=len(series), end=len(y)-1)
predd = pd.concat([y.iloc[9000:, 0], pred], axis=1)
predd.plot()

然后我得到以下情节:

这些看起来和我基本一样,而且 R 的版本看起来与问题中发布的图像完全不同。