对于相同的数据,auto.arima()似乎会选择不同的模型

对于相同的数据,auto.arima()似乎会选择不同的模型,r,arima,R,Arima,我在中尝试了类似于auto.arima的示例,注意到根据是否显式指定(所有)行数据,我会得到不同的结果。MWE: library(forecast); library(fpp2) nrow(insurance) auto.arima(insurance[,1], xreg=insurance[,2], stationary=TRUE) auto.arima(insurance[1:40,1], xreg=insurance[1:40,2], stationary=TRUE) nrow(insu

我在中尝试了类似于
auto.arima
的示例,注意到根据是否显式指定(所有)行数据,我会得到不同的结果。MWE:

library(forecast); library(fpp2)
nrow(insurance)
auto.arima(insurance[,1], xreg=insurance[,2], stationary=TRUE)
auto.arima(insurance[1:40,1], xreg=insurance[1:40,2], stationary=TRUE)
nrow(insurance)
显示有40行,因此我认为
insurance[,1]
insurance[1:40,1]
相同,第二列也是如此。然而,第一种方法导致“ARIMA(3,0,0)误差回归”,而第二种方法导致“ARIMA(1,0,2)误差回归”


为什么这些看似等价的调用会导致选择不同的模型?

请注意,
insurance[,1]
有标签,而
insurance[1:40,1]
没有标签。如果您通过
as.numeric(保险[,1])
您将实际收到“ARIMA(1,0,2)”。所以我打赌这与第一个参数是否有标签有关……还要注意的是,如果
xreg=insurance[,2]
xreg=insurance[1:40,2]
它们都会起作用,那么它们都会朝着正确的方向运行:
insurance[,1]
是一个“时间序列”,而
insurance[1:40,1]
是数字。也就是说,
is.ts(保险[1])
TRUE
但是
is.ts(保险[1:40,1])
FALSE
forecast
包有一个保持时间序列结构的
子集
函数,因此
is.ts(子集(保险[,1],开始=1,结束=40))
is
TRUE

auto.arima(subset(insurance[,1],start=1,end=40), 
           xreg=subset(insurance[,2],start=1,end=40), stationary=TRUE)
给出与我问题中的第一个版本相同的输出(带有
insurance[,1]
insurance[,2]

我想这至少在表面上解释了“为什么”,尽管我不明白 1) 为什么时间序列结构会改变这里的结果(因为所选模型中似乎没有任何季节性?) 2) 为什么在链接的示例中,Hyndman使用
insurance[4:40,1]
而不是他自己的
subset()
函数从他的
forecast
包中获得? 我会等着看是否有人想回答那些“更深层次”的问题,否则我可能会接受这个答案