我使用滚动技术预测了数据。现在我想将数据绘制成这样:
https://onlinelibrary.wiley.com/cms/asset/71365da7-211e-4247-a524-f9858fc24ec1/mfig001.jpg
这是一个经典的预测图,其中预测序列从不同的来源开始。我怎样才能在 R 中以简单的方式做到这一点?是否可以在系列的左侧或上方添加类似“NA”的值?
我的意思是,我有一个数据框,在第 1 行中我有从原点 1 开始的 8 个周期的预测。 在第 2 行中,我从原点 2 开始预测未来 8 个周期。我认为,如果我在第二行左侧添加 1 个 NA 值,在第三行左侧添加 2 个 NA 值,依此类推,然后绘制它,它应该起作用吗?但是如何通过循环为所有行添加 NA 值呢?还有其他方法可以实现这样的图吗?
感谢您的灵感。
我正在寻求有关如何以方便的方式实现这一点的想法,因为可能有人在我之前就已经做到了,而我无法在网上找到此示例代码。
tidyverse 非常适合此类事情:
library(tidyverse)
# Synthetic data frame
set.seed(1)
df <- matrix(runif(32), nrow = 4) |>
as.data.frame()
# Wrangle data into better form for analysis
df |>
mutate(origin = row_number()) |>
pivot_longer(-origin, names_to = "horizon", values_to = "forecast") |>
mutate(
horizon = parse_integer(str_remove(horizon, "V")),
time = origin + horizon - 1,
origin = as.factor(origin)
) |>
as_tibble() |>
ggplot(aes(x = time, y = forecast, col = origin)) +
geom_line()
创建于 2024-01-18,使用 reprex v2.1.0