时间序列模型R语言实现-批量建模,预测(ARIMA, 随机森林)

时间序列预测首先要确定预测的内容。

  1. 本文预测共享单车的日租借量
  2. 使用的是每日数据
  3. 预测的时间范围是需要提前一个月、半年还是一年?根据预测范围,会使用到不同的模型。
  • 首先安装加载本文所需要的包
install.packages("modeltime")
library(tidymodels)
library(modeltime)
library(timetk)
library(lubridate)
library(tidyverse)
library(forecast)

1.数据准备/处理

我们研究的数据集为共享自行车的租用量,我们将数据集简化为具有“日期”和“值”列的单变量时间序列。

df_bike = bike_sharing_daily %>% 
  select(dteday, cnt) %>% 
  set_names(c("date", "value"))

glimpse(df_bike)
## Rows: 731
## Columns: 2
## $ date  <date> 2011-01-01, 2011-01-02, 2011-01-03, 2011-01-04, 2011-01-05, 201…
## $ value <dbl> 985, 801, 1349, 1562, 1600, 1606, 1510, 959, 822, 1321, 1263, 11…

接下来,使用 plot_time_series() 函数可视化数据集。调参 .interactive = TRUE 以获得可交互的绘图,若为FALSE 返回 ggplot2 静态图,默认为TRUE。

df_bike %>% 
  plot_time_series(date, value, .interactive = F) + 
  xlab("Date") +
  ylab("Count of total rent bikes")

在这里插入图片描述

数据的时间跨度为2011-01-11至2013-01-01,共计731个数据,从图中可以看出数据量较大,不易于分析,为更好地观察趋势,应该将数据再划分为更小的时间跨度,具体根据结果确定。可以看出,这张图没有特别明显的趋势,是否有很强的季节性(每周/每月)?

  • 接着检测数据是否具有季节性
df_bike %>% 
  plot_seasonal_diagnostics(date, value, .interactive = FALSE)

在这里插入图片描述

可以看到共享单车租用量具有月度季节性,在第2、3季度租用量大于第1、4季度。这很可能是因为第1、4季度是冬天。

2.训练/测试

使用函数time_series_split() 去创建训练集和测试集

  • 设置 assess = "3 months 表明后3个月为测试集
  • 设置 cumulative = TRUE 表明采样使用所有前面的先验数据作为训练集。
splits = df_bike %>% 
  time_series_split(assess = "3 mont
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RookieTrevor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值