为什么我不能在“ar”级使用?

时间:2016-02-20 15:24:13

标签: r time-series

我为时间序列chuoie采用拟合模型AR(2):

e      <- c(101,82,66,35,31,7,20,92,154,125,85,68,38,23,10,24,83,132,131,118,
            90,67,60,47,41,21,16,6,4,7,14,34,45,43,48,42,28,10,8,2,0,1,5,12,14)
chuoie <- ts(e)
fit    <- ar.yw(chuoie, order=2)

我想要适合模型拟合AR(2)的计算值:

fitted.values(fit)

然后我得到:

NULL

我不明白这个问题。如果我使用forecast包,请使用Arima(2,0,0)拟合模型并使用fitted,那么我将获得没有问题的结果。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

对于那种对象,似乎没有fitted()的方法。 fit的类是

class(fit)
## [1] "ar"

您可以使用fitted()列出为methods()定义的所有方法:

methods(fitted)
## [1] fitted.default*       fitted.isoreg*        fitted.kmeans*        fitted.nls*          
## [5] fitted.smooth.spline*
## see '?methods' for accessing help and source code

如您所见,没有fitted.ar。此外,fitted.Arima也缺失,但此方法在forecast包中定义:

library(forecast)
methods(fitted)
## [1] fitted.Arima          fitted.arma*          fitted.default*       fitted.fracdiff*     
## [5] fitted.garch*         fitted.isoreg*        fitted.kmeans*        fitted.nls*          
## [9] fitted.smooth.spline*
## see '?methods' for accessing help and source code

这解释了为什么fitted()适用于班级Arima的模型,而不适用于班级ar

如果要获取ar对象的拟合值,可以使用存储在对象内的残差(如this答案中所述):

e - fit$resid

(链接的答案使用加号。但fitted.Arima()的代码显示应减去残差。)