R - การวิเคราะห์อนุกรมเวลา

อนุกรมเวลาคือชุดของจุดข้อมูลที่จุดข้อมูลแต่ละจุดเชื่อมโยงกับการประทับเวลา ตัวอย่างง่ายๆคือราคาของหุ้นในตลาดหุ้น ณ ช่วงเวลาต่างๆในวันหนึ่ง ๆ อีกตัวอย่างหนึ่งคือปริมาณน้ำฝนในภูมิภาคในเดือนต่างๆของปี ภาษา R ใช้ฟังก์ชันมากมายในการสร้างจัดการและลงจุดข้อมูลอนุกรมเวลา ข้อมูลสำหรับอนุกรมเวลาจะถูกเก็บไว้ในวัตถุ R ที่เรียกว่าtime-series object. นอกจากนี้ยังเป็นวัตถุข้อมูล R เช่นเวกเตอร์หรือกรอบข้อมูล

วัตถุอนุกรมเวลาถูกสร้างขึ้นโดยใช้ ts() ฟังก์ชัน

ไวยากรณ์

ไวยากรณ์พื้นฐานสำหรับ ts() ฟังก์ชันในการวิเคราะห์อนุกรมเวลาคือ -

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

ต่อไปนี้เป็นคำอธิบายของพารามิเตอร์ที่ใช้ -

  • data คือเวกเตอร์หรือเมทริกซ์ที่มีค่าที่ใช้ในอนุกรมเวลา

  • start ระบุเวลาเริ่มต้นสำหรับการสังเกตครั้งแรกในอนุกรมเวลา

  • end ระบุเวลาสิ้นสุดสำหรับการสังเกตครั้งสุดท้ายในอนุกรมเวลา

  • frequency ระบุจำนวนการสังเกตต่อหน่วยเวลา

ยกเว้นพารามิเตอร์ "data" พารามิเตอร์อื่น ๆ ทั้งหมดเป็นทางเลือก

ตัวอย่าง

พิจารณารายละเอียดปริมาณน้ำฝนประจำปี ณ สถานที่ที่เริ่มตั้งแต่เดือนมกราคม 2555 เราสร้างออบเจ็กต์อนุกรมเวลา R เป็นระยะเวลา 12 เดือนและวางพล็อต

# 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

แผนภูมิอนุกรมเวลา -

ช่วงเวลาที่แตกต่างกัน

ค่าของ frequencyพารามิเตอร์ในฟังก์ชัน ts () กำหนดช่วงเวลาที่จุดข้อมูลถูกวัด ค่า 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

แผนภูมิอนุกรมหลายเวลา -