R 时间序列 ggtsdisplay 函数不会 运行 但我可以分别做时间序列、ACF 和 PACF
R time series ggtsdisplay function won't run but I can do time series, ACF and PACF separately
我正在使用以下库来尝试处理时间序列数据。
首先我安装了 fpp3,因为它有 aus_airpassengers 数据集。这是该数据集的输入,否则您可以从包中获取它。它只有两列,一列用于年份,一列用于乘客。
library(fpp3)
structure(list(Year = c(1970, 1971, 1972, 1973, 1974, 1975, 1976,
1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987,
1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011), Passengers = c(7.3187, 7.3266, 7.7956, 9.3846, 10.6647,
11.0551, 10.8643, 11.3065, 12.1223, 13.0225, 13.6488, 13.2195,
13.1879, 12.6015, 13.2368, 14.4121, 15.4973, 16.8802, 18.8163,
15.1143, 17.5534, 21.8601, 23.8866, 26.9293, 26.8885, 28.8314,
30.0751, 30.9535, 30.1857, 31.5797, 32.577569, 33.477398, 39.021581,
41.386432, 41.596552, 44.657324, 46.951775, 48.728837, 51.488427,
50.026967, 60.640913, 63.3603103378)), row.names = c(NA, -42L
), key = structure(list(.rows = structure(list(1:42), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), index = structure("Year", ordered = TRUE), index2 = "Year", interval = structure(list(
year = 1, quarter = 0, month = 0, week = 0, day = 0, hour = 0,
minute = 0, second = 0, millisecond = 0, microsecond = 0,
nanosecond = 0, unit = 0), .regular = TRUE, class = c("interval",
"vctrs_rcrd", "vctrs_vctr")), class = c("tbl_ts", "tbl_df", "tbl",
"data.frame"))
aus_airpassengers <- aus_airpassengers
aus_airpassengers <- aus_airpassengers %>%
filter(Year >= 1970) %>%
filter(Year <= 2011)
我使用我认为来自 ggplot2 包的自动绘图来查看这 42 年来乘客的变化。
autoplot(aus_airpassengers) +
labs(title="Air Passengers from 1970 to 2011") +
labs(x ="Date") +
labs(y = "Passenger numbers (1000's)")
现在我正在尝试使用 forecast 包中的 ggtsdisplay 函数来绘制时间序列以及 ACF 和 PACF 图。
library(forecast)
ggtsdisplay(aus_airpassengers)
但是它给我这个错误:
Error in ggtsdisplay(aus_airpassengers) :
ggtsdisplay is only for univariate time series
我在网上查找了此错误的含义,发现一些帖子告诉我我可能同时拥有多个值。但这里不是这种情况。我们可以看到这两个测试的计算结果都是 42,这意味着每一年在数据集中都是唯一的一年(另外我可以查看数据集以了解每一年都是唯一的。)
length(unique(aus_airpassengers$Year))
nrow(aus_airpassengers)
我也很困惑,因为如果我使用 feasts 库绘制 ACF 和 PACF 图,它工作得很好。
library(feasts)
aus_airpassengers %>%
ACF(Passengers) %>%
autoplot()
aus_airpassengers %>%
PACF(Passengers) %>%
autoplot()
有谁知道 ggtsdisplay 是怎么回事?
您正在使用专为 ts
对象设计的 forecast
包中的 ggtsdisplay
。您需要使用 feasts
包中的 gg_tsdisplay
(当您加载 fpp3
时加载)。
一般来说,如果您使用的是 tsibbles 和 fable
,则不应加载 forecast
包。
我正在使用以下库来尝试处理时间序列数据。
首先我安装了 fpp3,因为它有 aus_airpassengers 数据集。这是该数据集的输入,否则您可以从包中获取它。它只有两列,一列用于年份,一列用于乘客。
library(fpp3)
structure(list(Year = c(1970, 1971, 1972, 1973, 1974, 1975, 1976,
1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987,
1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011), Passengers = c(7.3187, 7.3266, 7.7956, 9.3846, 10.6647,
11.0551, 10.8643, 11.3065, 12.1223, 13.0225, 13.6488, 13.2195,
13.1879, 12.6015, 13.2368, 14.4121, 15.4973, 16.8802, 18.8163,
15.1143, 17.5534, 21.8601, 23.8866, 26.9293, 26.8885, 28.8314,
30.0751, 30.9535, 30.1857, 31.5797, 32.577569, 33.477398, 39.021581,
41.386432, 41.596552, 44.657324, 46.951775, 48.728837, 51.488427,
50.026967, 60.640913, 63.3603103378)), row.names = c(NA, -42L
), key = structure(list(.rows = structure(list(1:42), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), index = structure("Year", ordered = TRUE), index2 = "Year", interval = structure(list(
year = 1, quarter = 0, month = 0, week = 0, day = 0, hour = 0,
minute = 0, second = 0, millisecond = 0, microsecond = 0,
nanosecond = 0, unit = 0), .regular = TRUE, class = c("interval",
"vctrs_rcrd", "vctrs_vctr")), class = c("tbl_ts", "tbl_df", "tbl",
"data.frame"))
aus_airpassengers <- aus_airpassengers
aus_airpassengers <- aus_airpassengers %>%
filter(Year >= 1970) %>%
filter(Year <= 2011)
我使用我认为来自 ggplot2 包的自动绘图来查看这 42 年来乘客的变化。
autoplot(aus_airpassengers) +
labs(title="Air Passengers from 1970 to 2011") +
labs(x ="Date") +
labs(y = "Passenger numbers (1000's)")
现在我正在尝试使用 forecast 包中的 ggtsdisplay 函数来绘制时间序列以及 ACF 和 PACF 图。
library(forecast)
ggtsdisplay(aus_airpassengers)
但是它给我这个错误:
Error in ggtsdisplay(aus_airpassengers) :
ggtsdisplay is only for univariate time series
我在网上查找了此错误的含义,发现一些帖子告诉我我可能同时拥有多个值。但这里不是这种情况。我们可以看到这两个测试的计算结果都是 42,这意味着每一年在数据集中都是唯一的一年(另外我可以查看数据集以了解每一年都是唯一的。)
length(unique(aus_airpassengers$Year))
nrow(aus_airpassengers)
我也很困惑,因为如果我使用 feasts 库绘制 ACF 和 PACF 图,它工作得很好。
library(feasts)
aus_airpassengers %>%
ACF(Passengers) %>%
autoplot()
aus_airpassengers %>%
PACF(Passengers) %>%
autoplot()
有谁知道 ggtsdisplay 是怎么回事?
您正在使用专为 ts
对象设计的 forecast
包中的 ggtsdisplay
。您需要使用 feasts
包中的 gg_tsdisplay
(当您加载 fpp3
时加载)。
一般来说,如果您使用的是 tsibbles 和 fable
,则不应加载 forecast
包。