在同一图上绘制时间序列中的每个变量

Plotting each variable in a time series on the same plot

我正在阅读 Rob J Hyndman 和 George Athanasopoulos 合着的《预测原则与实践》一书。这本书可以在这里找到:https://otexts.com/fpp3/

这本书总体上很好,但我在第 7 章“多元线性回归”中卡住了一个要点。

图 7.4 显示,“1970 年第一季度至 2019 年第二季度美国工业生产和个人储蓄的季度百分比变化以及失业率的季度变化。”作为商务人士,我看到这是整本书中最有价值的情节,但没有代码如何重现它。此图的优点是将每个因素显示为单独的图,按季度分组,因此很容易理解每​​个因素对结果的影响。

剧情可以在这个页面找到:https://otexts.com/fpp3/regression-intro.html

这个 R 代码有效,但并不能真正接近再现书中的图形,书中没有提供生成情节的代码,在解释时间序列时使用书中的图形要好得多对客户和经理的预测比这个代码:

library(tidyverse)

library(fpp3)

us_change %>%
  autoplot(vars(Consumption, Income, Production, Savings, Unemployment))

Quarterly percentage changes in industrial production and personal savings and quarterly changes in the unemployment rate for the US over the period 1970Q1-2019Q2.

我试过许多自动绘图的变体,gg_subseries、gg_tsdisplay 等,但没有一个更接近书中的情节。任何帮助将不胜感激!

ggplot2 通常最流畅地处理“长”数据,可以使用 tidyr::pivot_longer 创建这些数据,将每个系列的值放在一个公共列中,另一列(此处为“名称”)区分列。

library(tidyverse)
us_change %>%
  pivot_longer(-Quarter) %>%
  ggplot(aes(Quarter, value, color = name)) +
  geom_line() +
  facet_wrap(~name, ncol = 1, scales = "free_y") +
  guides(color = "none")