如何将auto.arima拟合值整理为含季节、国家列的目标数据框
解决代码
你可以直接使用以下调整后的代码得到符合要求的结果:
library(forecast) library(dplyr) # 逐列拟合ARIMA、提取拟合值,拼接为目标结构数据框 Auto_arima_fitted_values <- df[-1] %>% # 对每个国家的时间序列拟合auto.arima后提取拟合值 lapply(function(country_series) fitted(auto.arima(country_series))) %>% # 转换为数据框 as.data.frame() %>% # 把原季节列放在第一列,后续为各国拟合值列 bind_cols(Season = df$Season, .)
调整逻辑
- 原代码错误原因:你之前直接对
auto.arima返回的模型对象做行绑定,得到的是每行对应一个国家、每列对应模型各类属性的结构,自然无法直接提取逐行匹配的拟合值。 - 调整后逻辑:对每个国家的序列拟合模型后,先单独提取长度和原序列完全一致的拟合值向量,再按列拼接后和原季节列合并,最终结构完全匹配需求:第一列为季节,第二到第五列依次为四个国家的拟合值,缺失位置也会和原数据保持一致返回NA。
内容的提问来源于stack exchange,提问作者Drop
相关产品推荐
相关产品推荐

