- R 菜鸟教程
- R - 教程
- R - 概述
- R - 环境设置
- R - 基本语法
- R - 数据类型
- R - 变量
- R - 运算符
- R - 判断语句
- R - Loop (循环)
- R - 函数
- R - 字符串
- R - 矢量
- R - 列表
- R - 矩阵
- R - 数组
- R - 因子
- R - 数据帧
- R - 包(Packages)
- R - 数据重塑
- R 数据接口
- R - CSV 文件
- R - Excel 文件
- R - 二进制文件
- R - XML 文件
- R - JSON 文件
- R - Web 数据
- R - 数据库
- R 图表和图形
- R - 饼图
- R - 条形图
- R - 箱线图
- R - 直方图
- R - 折线图
- R - 散点图
- R 统计示例
- R - 平均值、中位数和众数
- R - 线性回归
- R - 多元回归
- R - Logistic 回归
- R - 正态分布
- R - 二项分布
- R - 泊松回归
- R - 协方差分析
- R - 时间序列分析
- R - 非线性最小二乘法
- R - 决策树
- R - 随机森林
- R - 生存分析
- R - 卡方检验
R - 时间序列分析
时间序列是一系列数据点,其中每个数据点都与一个时间戳相关联。一个简单的例子是股票在给定日期的不同时间点的股票价格。
另一个示例是一个地区在一年中不同月份的降雨量。R 语言使用许多函数来创建、操作和绘制时间序列数据。时间序列的数据存储在名为 time-series object 的 R 对象中。它也是一个 R 数据对象,如向量或数据帧。
时间序列对象是使用 ts() 函数创建的。
语法
时间序列分析中 ts() 函数的基本语法是 -
timeseries.object.name <- ts(data, start, end, frequency)
以下是所用参数的描述 -
- data 是包含时间序列中使用的值的向量或矩阵。
- start 指定时间序列中第一个观测值的开始时间。
- end 指定时间序列中最后一个观测值的结束时间。
- frequency 指定每单位时间的观测值个数。
除参数 “data” 外,所有其他参数都是可选的。
例子
考虑从 2012 年 1 月开始某个地方的年度降雨量详细信息。我们创建一个为期 12 个月的 R 时间序列对象并绘制它。
# 以R向量的形式获取数据点。
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
# 将其转换为时间序列对象。
rainfall.timeseries <- ts(rainfall,start = c(2012,1),frequency = 12)
# 打印时间序列数据。
print(rainfall.timeseries)
# 为图表文件命名。
png(file = "rainfall.png")
# 绘制时间序列图。
plot(rainfall.timeseries)
# 保存文件。
dev.off()
当我们执行上述代码时,它会产生以下结果和图表 -
Jan Feb Mar Apr May Jun Jul Aug Sep
2012 799.0 1174.8 865.1 1334.6 635.4 918.5 685.5 998.6 784.2
Oct Nov Dec
2012 985.0 882.8 1071.0
2012 799.0 1174.8 865.1 1334.6 635.4 918.5 685.5 998.6 784.2
Oct Nov Dec
2012 985.0 882.8 1071.0
时间序列图表 -
不同的时间间隔
ts() 函数中 frequency 参数的值决定了测量数据点的时间间隔。值 12 表示时间序列为 12 个月。其他值及其含义如下 -
- frequency = 12 固定一年中每个月的数据点。
- frequency = 4 固定一年中每个季度的数据点。
- frequency = 6 固定每小时每 10 分钟的数据点。
- frequency = 24*6 将一天中每 10 分钟的数据点挂钩。
多个时间序列
我们可以通过将两个序列组合成一个矩阵,在一个图表中绘制多个时间序列。
# 以R向量的形式获取数据点。
rainfall1 <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)
rainfall2 <-
c(655,1306.9,1323.4,1172.2,562.2,824,822.4,1265.5,799.6,1105.6,1106.7,1337.8)
# 将它们转换为矩阵。
combined.rainfall <- matrix(c(rainfall1,rainfall2),nrow = 12)
# 将其转换为时间序列对象。
rainfall.timeseries <- ts(combined.rainfall,start = c(2012,1),frequency = 12)
# 打印时间序列数据。
print(rainfall.timeseries)
# 为图表文件命名。
png(file = "rainfall_combined.png")
# 绘制时间序列图。
plot(rainfall.timeseries, main = "Multiple Time Series")
# 保存文件。
dev.off()
当我们执行上述代码时,它会产生以下结果和图表 -
Series 1 Series 2
Jan 2012 799.0 655.0
Feb 2012 1174.8 1306.9
Mar 2012 865.1 1323.4
Apr 2012 1334.6 1172.2
May 2012 635.4 562.2
Jun 2012 918.5 824.0
Jul 2012 685.5 822.4
Aug 2012 998.6 1265.5
Sep 2012 784.2 799.6
Oct 2012 985.0 1105.6
Nov 2012 882.8 1106.7
Dec 2012 1071.0 1337.8
Jan 2012 799.0 655.0
Feb 2012 1174.8 1306.9
Mar 2012 865.1 1323.4
Apr 2012 1334.6 1172.2
May 2012 635.4 562.2
Jun 2012 918.5 824.0
Jul 2012 685.5 822.4
Aug 2012 998.6 1265.5
Sep 2012 784.2 799.6
Oct 2012 985.0 1105.6
Nov 2012 882.8 1106.7
Dec 2012 1071.0 1337.8
Multiple Time series 图表 -