为R中的每种类型的组执行acf图

时间:2018-12-27 11:31:56

标签: r ggplot2 time-series

说,这里是mydata(小部分)

transport<- structure(list(date = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L), .Label = c("01.01.2001", "01.02.2001", "01.03.2001", 
"01.04.2001", "01.05.2001", "01.06.2001", "01.07.2001", "01.08.2001", 
"01.09.2001", "01.10.2001", "01.11.2001", "01.12.2001"), class = "factor"), 
    Market_82 = c(7000L, 7272L, 7668L, 7869L, 8057L, 8428L, 8587L, 
    8823L, 8922L, 9178L, 9306L, 9439L, 3725L, 4883L, 8186L, 7525L, 
    6335L, 4252L, 5642L, 1326L, 8605L, 3501L, 1944L, 7332L), 
    transport = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L
    ), .Label = c("plane", "train"), class = "factor")), .Names = c("date", 
"Market_82", "transport"), class = "data.frame", row.names = c(NA, 
-24L))

组变量-运输。

对于每种运输方式,我必须获得时间序列的acf plot

像这样的东西 enter image description here

enter image description here

如何对每种运输进行acf图? 我有很多团体。如何将情节放在文件夹中 C:/ Users / admin / Documents / myplot

2 个答案:

答案 0 :(得分:4)

akrun的答案很明确。由于您用标记了问题,因此您也可以在预测包中使用ggAcf

第一步是split您的数据。

transport_split <- split(transport, transport$transport)

如果要在标题,副标题等中包括列transport的各个元素,请尝试使用Map

out <- Map(
    f = function(x, y)
      forecast::ggAcf(x$Market_82) + labs(title = y),
    x = transport_split,
    y = names(transport_split)
  )

out$train

enter image description here

答案 1 :(得分:2)

我们可以使用Acf中的forecast

library(forecast)
par(mfrow = c(2, 1))
lapply(split(transport['Market_82'], transport$transport), Acf)

如果我们也想要标题,那么

lst <- lapply(split(transport['Market_82'], transport$transport), acf, plot = FALSE)
par(mfrow = c(2, 1))
lapply(names(lst), function(x) plot(lst[[x]], main = x))

enter image description here