R语言 时间序列分析

R语言 时间序列分析

时间序列是一系列数据点,每个数据点都与时间戳相关联。一个简单的示例是某一天股票市场上某只股票的价格在不同时间点的变化。另一个示例是某个地区在不同月份的降雨量。R语言使用许多函数来创建、操作和绘制时间序列数据。时间序列的数据存储在一个R对象中,被称为 时间序列对象 。它也是一个R数据对象,类似于向量或数据框。

时间序列对象是通过使用 ts() 函数创建的。

语法

时间序列分析中 ts() 函数的基本语法是:

timeseries.object.name <-  ts(data, start, end, frequency)

下面是使用的参数的描述:

  • data 是包含时间序列中使用的值的向量或矩阵。

  • start 指定时间序列第一个观测的开始时间。

  • end 指定时间序列最后一个观测的结束时间。

  • frequency 指定每单位时间的观测数。

除了参数”data”,其他参数都是可选的。

示例

考虑从2012年1月开始的某地的年降雨量详细信息。我们创建一个为期12个月的R时间序列对象并绘制它。

# Get the data points in form of a R vector.
rainfall <- c(799,1174.8,865.1,1334.6,635.4,918.5,685.5,998.6,784.2,985,882.8,1071)

# Convert it to a time series object.
rainfall.timeseries <- ts(rainfall,start = c(2012,1),frequency = 12)

# Print the timeseries data.
print(rainfall.timeseries)

# Give the chart file a name.
png(file = "rainfall.png")

# Plot a graph of the time series.
plot(rainfall.timeseries)

# Save the file.
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

时间序列图−

R语言 时间序列分析

不同的时间间隔

在ts()函数中, frequency 参数的值决定了数据点测量的时间间隔。值为12表示时间序列为12个月。其他值及其意义如下:

  • frequency = 12 将数据点定格在每年的每个月。

  • frequency = 4 将数据点定格在每年的每个季度。

  • frequency = 6 将数据点定格在每小时的每10分钟。

  • frequency = 24 * 6 将数据点定格在每天的每10分钟。

多个时间序列

我们可以通过将两个序列组合为矩阵来在同一图表中绘制多个时间序列。

# Get the data points in form of a R vector.
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)

# Convert them to a matrix.
combined.rainfall <-  matrix(c(rainfall1,rainfall2),nrow = 12)

# Convert it to a time series object.
rainfall.timeseries <- ts(combined.rainfall,start = c(2012,1),frequency = 12)

# Print the timeseries data.
print(rainfall.timeseries)

# Give the chart file a name.
png(file = "rainfall_combined.png")

# Plot a graph of the time series.
plot(rainfall.timeseries, main = "Multiple Time Series")

# Save the file.
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

多时间序列图 –

R语言 时间序列分析

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程