带R和Python的自动arima

2024-04-28 08:01:46 发布

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

我正在比较auto-ARIMA与R(forecast包)和Python(pmdarima包)的结果。我得到的一个问题是,当d不为零时,R和Python中残差的长度是不同的。例如,在下面显示的代码中,在R中,残差的长度与时间序列数据的长度相同,但在python中,它是时间序列数据的长度减去d。此外,我还看到R与python之间的顺序发生了重大变化。造成差异的原因是什么?你知道吗

R

library(forecast)
set.seed(250)
ts1 = arima.sim(list(order = c(1,1,0), ar = 0.7), n = 200)
set.seed(270)
ts2 = arima.sim(list(order = c(1,2,0), ar = 0.7), n = 200)
my_fit1 <- auto.arima(ts1, stepwise = FALSE)
resid1 = as.numeric(residuals(my_fit1))
my_fit2 <- auto.arima(ts2, stepwise = FALSE)
resid2 = as.numeric(residuals(my_fit2))
#to use with Python
 ts1 = data.frame(ts1 = ts1)
 write.csv(ts1, 'ts1.csv', row.names = F)
 ts2 = data.frame(ts2 = ts2)
 write.csv(ts2, 'ts2.csv', row.names = F)

Python

import pandas as pd
from pmdarima.arima import auto_arima
ts1 = pd.read_csv('ts1.csv')
ts2 = pd.read_csv('ts2.csv')
my_fit1 = auto_arima(y = ts1.ts1, 
                  start_p=1, 
                  start_q=1,
                  max_p=3, 
                  max_q=3,
                  seasonal=False,
                  d = None,  
                  error_action='ignore',  
                  suppress_warnings=True, 
                  stepwise=False)

 my_fit2 = auto_arima(y = ts2.ts2, 
                  start_p=1, 
                  start_q=1,
                  max_p=3, 
                  max_q=3,
                  seasonal=False,
                  d = None,  
                  error_action='ignore',  
                  suppress_warnings=True, 
                  stepwise=False)

Tags: csvfalseautomyasstartmaxpd