You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fpp3包中VAR模型预测图facets参数失效的解决办法

解决VAR预测结果autoplot分面失效问题

问题原因

你的tsibble是宽格式(每个棋手作为单独列),而fpp3的autoplot()函数在处理宽格式预测结果时,facets=TRUE参数无法识别分组维度——分面功能需要数据是长格式(包含一个分组key列,比如id,对应单个数值列value)。

解决步骤

  1. 将原始宽格式tsibble转换为长格式,保留date作为索引,新增id作为分组key;
  2. 保持VAR建模使用宽格式数据(VAR模型要求多变量以列的形式存在);
  3. 将预测结果转换为长格式,与长格式原始数据匹配;
  4. 使用转换后的长格式数据调用autoplot(),此时facets=TRUE即可生效。

完整修正代码

library(tidyverse)
library(fpp3)
library(tsibble)

# 1. 数据集处理
chess.data <- read.csv("https://raw.githubusercontent.com/rhozon/datasets/master/fidedfv3.csv", head = TRUE, sep = ",") %>%
  mutate(
    Period = as.Date(Period),
    Name = as.factor(Name)
  ) %>%
  select(Name, Period, RTNG) %>%
  set_names(c("id", "date", "value")) %>%
  as_tibble()

# 2. 转换为宽格式tsibble(用于VAR建模)
chess.data_wide <- chess.data %>%
  pivot_wider(names_from = id, values_from = value) %>% 
  mutate(date = yearmonth(date)) %>%
  drop_na() %>%
  as_tsibble(index = date)

# 3. 转换为长格式tsibble(用于绘图)
chess.data_long <- chess.data_wide %>%
  pivot_longer(cols = c(bu, liem, cheparinov), names_to = "id", values_to = "value") %>%
  as_tsibble(index = date, key = id)

# 4. VAR建模与预测
VAR.MR3 <- chess.data_wide %>%
  model(VAR = VAR(vars(bu, liem, cheparinov), ic = "bic")) %>%
  forecast(h = "21 months")

# 5. 快速转换预测结果为长格式并绘图
VAR.MR3 %>%
  gather() %>%
  filter_index("2021-01-01"~.) %>%
  autoplot(chess.data_long, level = 95, facets = TRUE) +
  ylab("等级分")

内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:01:09