我为时间序列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
,那么我将获得没有问题的结果。你能帮我解决这个问题吗?
答案 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()
的代码显示应减去残差。)