我有从2015年第2周至2016年第9周的每周数据,在拟合和绘制预测后,X轴没有意义。我如何以月/周#的形式共享X轴值。谢谢
TS1<-ts(DUMMYDATA,frequency =52,start = c(2015,02),end = c(2016,09))
我尝试创建自己的x轴,但无法在时间分量方面正确反映它
iqjalb3h1#
首先我生成了一些随机的可重复数据。你可以直接用as.Date在ts中生成日期。然后你需要将时间序列转换为日期格式。要显示带有月/周日期的轴,你可以用scale_x_date和date_labels来表示周和月。下面是一个可重复的例子:
as.Date
ts
scale_x_date
date_labels
library(ggplot2) # Generate random reproducible data set.seed(1) DUMMYDATA <- cumsum(rnorm(10000)) TS1<-ts(DUMMYDATA, frequency = 52, start = as.Date('2015-02-01'), end = as.Date('2016-09-01')) # Convert to dataframe data = data.frame(y=as.matrix(TS1), date=time(TS1)) # convert date to date format data$date <- as.Date(as.numeric(time(data$date)), origin = "1970-01-01") ggplot(data, aes(x = date, y = y)) + geom_line() + scale_x_date(date_labels = "%b-%W", date_breaks = '1 week') + guides(x = guide_axis(angle = 90)) + theme_bw()
创建于2022年11月27日,使用reprex v2.0.2如果不想显示每周,可以将date_breaks更改为月份,如下所示:
date_breaks
library(ggplot2) ggplot(data, aes(x = date, y = y)) + geom_line() + scale_x_date(date_labels = "%b-%W", date_breaks = '1 month') + guides(x = guide_axis(angle = 90)) + theme_bw()
创建于2022年11月27日,使用reprex v2.0.2
jtoj6r0c2#
一种方法是使用tsibble对象而不是ts对象。下面是一个示例:
tsibble
library(ggplot2) library(tsibble) library(lubridate) library(feasts) set.seed(1) df <- tsibble( Week = yearweek(seq(as.Date("2015-01-01"), length=300, by="7 days")), TS1 = cumsum(rnorm(300)) ) #> Using `Week` as index variable. df |> autoplot(TS1) + scale_x_yearweek(date_breaks = '1 year')
创建于2022年11月27日,使用reprex v2.0.2您似乎正在使用forecast程序包根据ts对象创建预测。fable程序包中提供了等效功能,用于根据tsibble对象创建预测。有关许多示例(包括使用每周数据),请参阅my book。
forecast
fable
2条答案
按热度按时间iqjalb3h1#
首先我生成了一些随机的可重复数据。你可以直接用
as.Date
在ts
中生成日期。然后你需要将时间序列转换为日期格式。要显示带有月/周日期的轴,你可以用scale_x_date
和date_labels
来表示周和月。下面是一个可重复的例子:创建于2022年11月27日,使用reprex v2.0.2
如果不想显示每周,可以将
date_breaks
更改为月份,如下所示:创建于2022年11月27日,使用reprex v2.0.2
jtoj6r0c2#
一种方法是使用
tsibble
对象而不是ts
对象。下面是一个示例:创建于2022年11月27日,使用reprex v2.0.2
您似乎正在使用
forecast
程序包根据ts
对象创建预测。fable
程序包中提供了等效功能,用于根据tsibble
对象创建预测。有关许多示例(包括使用每周数据),请参阅my book。