3

我正在尝试编写一个函数,它给出 auto.arima 的残差以应用 Box-Ljung 测试。我试过lapply()了,但我现在不知道如何使用它来获取每个系列的残差。

library(fpp2)

#Make up some Time Series
dj1=dj
dj2=dj+2
dj3=dj+7


dataframe=cbind(dj1,dj2,dj3)
dataframe=as.data.frame(dataframe)


#Return calculation
Ret=diff(log(as.matrix(dataframe)),1)
Ret=as.data.frame(Ret)

AutoArima= lapply(Ret, function(x) auto.arima(x))
AutoArima

我想要一个具有 3 列dj1dj2dj3291 行的矩阵/数据框(其中包含每列的残差)。

我能够计算单个时间序列的残差,但不能计算每个序列在数据框/矩阵中组织时的残差。我尝试了其他一些东西,但它给出了: Error in auto.arima(x) : auto.arima can only handle univariate time series

任何帮助将不胜感激。

4

2 回答 2

1

这对我有用:

library(purrr) 
df = map_df(AutoArima[1:ncol(Ret)],resid)
于 2018-02-13T14:25:08.493 回答
1

您可以将这两行添加到您的代码中

res=lapply(AutoArima,function(x) x$residuals)
res0=do.call("cbind",res)

我认为 res0 是你要找的

于 2018-02-13T15:16:56.127 回答