如何提取R中ARIMA模型的拟合值?以AirPassengers数据为例
提取ARIMA模型的拟合值方法
当然可以提取ARIMA模型的拟合值!你遇到的问题主要是因为R中两个常用的ARIMA建模函数(stats::arima()和forecast::Arima())返回的对象结构不同,下面针对你的情况详细说明:
1. 使用forecast::Arima()(推荐,更便捷)
如果你用的是forecast包的Arima()函数(注意首字母大写),这个函数返回的模型对象直接包含fitted元素,对应就是模型的拟合值。针对你用的AirPassengers数据集和ARIMA(0,1,1)(0,1,1)₁₂模型,代码如下:
# 加载包和数据 library(forecast) data(AirPassengers) # 构建季节性ARIMA模型 arima_model <- Arima(AirPassengers, order = c(0,1,1), seasonal = c(0,1,1)) # 提取拟合值 fitted_vals <- arima_model$fitted # 查看前5个拟合值 head(fitted_vals)
2. 使用stats::arima()(基础包函数)
如果你用的是R基础包stats里的arima()函数(首字母小写),这个函数返回的对象确实没有直接的fitted字段,但我们可以通过原始值 - 残差来计算拟合值(因为残差的定义是实际值 - 拟合值)。代码示例:
data(AirPassengers) # 构建季节性ARIMA模型,注意seasonal参数的写法 arima_model_stats <- arima(AirPassengers, order = c(0,1,1), seasonal = list(order = c(0,1,1), period = 12)) # 计算拟合值 fitted_vals_stats <- AirPassengers - arima_model_stats$residuals # 查看前5个拟合值 head(fitted_vals_stats)
补充说明
你并没有误解R中ARIMA模型的功能,只是不同函数的封装逻辑不同:forecast包的Arima()是对基础包arima()的扩展,额外提供了fitted、forecast()等更实用的功能,更适合时间序列分析的日常使用。
内容的提问来源于stack exchange,提问作者Ryan Z Johnson
相关产品推荐
相关产品推荐

