如何将nnetar模型转换为数据帧?
问题原因
ggfortify 暂未针对 nnetar 模型输出的 forecast 类对象做适配,因此直接调用 fortify() 会抛出类型不支持的错误。
解决方法
方法1:直接用forecast包自带的可视化能力
如果你的核心需求是对预测结果绘图,无需手动做数据框转换,forecast 包已经原生适配了 ggplot2 的 autoplot 接口,直接运行以下代码即可出图:
autoplot(model) + labs(title = "AirPassengers nnetar预测结果", x = "时间", y = "乘客数量")
方法2:手动提取字段构造数据框
如果确实需要拿到结构化的预测结果数据框,可以直接从forecast返回的对象中提取对应字段拼接,不需要依赖其他扩展包:
# 提取原始观测值 original_data <- data.frame( time = as.numeric(time(model$x)), value = as.numeric(model$x), type = "原始观测值", lower_80 = NA, upper_80 = NA, lower_95 = NA, upper_95 = NA ) # 提取预测结果+置信区间 forecast_data <- data.frame( time = as.numeric(time(model$mean)), value = as.numeric(model$mean), type = "预测值", lower_80 = as.numeric(model$lower[,1]), upper_80 = as.numeric(model$upper[,1]), lower_95 = as.numeric(model$lower[,2]), upper_95 = as.numeric(model$upper[,2]) ) # 合并得到完整数据框,等价于fortify的输出效果 fortify_nnetar <- rbind(original_data, forecast_data)
生成的fortify_nnetar可以直接用于后续的数据分析或自定义ggplot绘图。
内容的提问来源于stack exchange,提问作者Jorge Hernández
相关产品推荐
相关产品推荐

