R - Phân tích chuỗi thời gian

Chuỗi thời gian là một chuỗi các điểm dữ liệu trong đó mỗi điểm dữ liệu được liên kết với một dấu thời gian. Một ví dụ đơn giản là giá cổ phiếu trên thị trường chứng khoán tại các thời điểm khác nhau trong một ngày nhất định. Một ví dụ khác là lượng mưa của một vùng vào các tháng khác nhau trong năm. Ngôn ngữ R sử dụng nhiều chức năng để tạo, thao tác và vẽ biểu đồ chuỗi dữ liệu thời gian. Dữ liệu cho chuỗi thời gian được lưu trữ trong một đối tượng R được gọi làtime-series object. Nó cũng là một đối tượng dữ liệu R giống như một vector hoặc khung dữ liệu.

Đối tượng chuỗi thời gian được tạo bằng cách sử dụng ts() chức năng.

Cú pháp

Cú pháp cơ bản cho ts() chức năng trong phân tích chuỗi thời gian là -

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

Sau đây là mô tả về các tham số được sử dụng:

  • data là một vectơ hoặc ma trận chứa các giá trị được sử dụng trong chuỗi thời gian.

  • start chỉ định thời gian bắt đầu cho lần quan sát đầu tiên trong chuỗi thời gian.

  • end chỉ định thời gian kết thúc cho lần quan sát cuối cùng trong chuỗi thời gian.

  • frequency chỉ định số lượng quan sát trên một đơn vị thời gian.

Ngoại trừ tham số "dữ liệu" tất cả các tham số khác là tùy chọn.

Thí dụ

Hãy xem xét chi tiết lượng mưa hàng năm tại một địa điểm bắt đầu từ tháng 1 năm 2012. Chúng tôi tạo một đối tượng chuỗi thời gian R trong khoảng thời gian 12 tháng và vẽ biểu đồ cho nó.

# 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()

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả và biểu đồ sau:

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

Biểu đồ chuỗi thời gian -

Khoảng thời gian khác nhau

Giá trị của frequencytham số trong hàm ts () quyết định khoảng thời gian tại đó các điểm dữ liệu được đo. Giá trị 12 cho biết chuỗi thời gian là 12 tháng. Các giá trị khác và ý nghĩa của nó như sau:

  • frequency = 12 chốt các điểm dữ liệu cho mỗi tháng trong năm.

  • frequency = 4 chốt các điểm dữ liệu cho mỗi quý một năm.

  • frequency = 6 chốt các điểm dữ liệu cứ sau 10 phút một giờ.

  • frequency = 24*6 chốt các điểm dữ liệu cho 10 phút một ngày.

Nhiều chuỗi thời gian

Chúng ta có thể vẽ nhiều chuỗi thời gian trong một biểu đồ bằng cách kết hợp cả hai chuỗi thành một ma trận.

# 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()

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả và biểu đồ sau:

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

Biểu đồ chuỗi nhiều thời gian -