Python中的等价R的arima函数

2024-04-27 16:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用Python使用statsmodel的arima函数进行时间序列预测,结果与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包/函数arima可以使用吗

如有任何见解或指导,将不胜感激。事先非常感谢你


Tags: 函数版本dfdatamodellen时间order
1条回答
网友
1楼 · 发布于 2024-04-27 16:02:23

摘要:我不知道您是如何创建显示为“R的版本”的第一个图像的,但当我运行您提供的R代码并绘制结果时,它们在我看来与Python结果相同,与您包含的“R的版本”图不一样。我最好的猜测是,当你创建显示R的结果的图像时,不知何故你是在绘制样本预测

详情见下文

详细信息

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

现在,如果我运行以下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)

这给出了以下曲线图:

R predictions

当我运行以下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()

然后我得到下面的图:

enter image description here

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

相关问题 更多 >