Lấy mẫu lại và gộp quan sát

Xử lý Dữ liệu Chuỗi Thời gian trong R

Harrison Brown

Graduate Researcher in Geography

Tần suất lấy mẫu

Tần suất:

  • Số quan sát mỗi năm
  • ví dụ: hằng tuần, hằng ngày, hằng tháng, ...

Độ phân giải thời gian:

  • "Cao" = lấy mẫu thường xuyên
  • "Thấp" = lấy mẫu thưa
  • "Cao" và "thấp" là chủ quan

Sơ đồ khái niệm với hai lưới: một có độ phân giải thấp và một có độ phân giải cao, minh họa dữ liệu được lấy mẫu thường xuyên hoặc thưa hơn.

Xử lý Dữ liệu Chuỗi Thời gian trong R

Gộp (Aggregation)

  • Độ phân giải cao -> thấp
  • Áp dụng hàm như mean, sum, max cho khoảng chọn
  • ví dụ:
    • sum theo tháng từ dữ liệu ngày
    • mean theo tuần từ giá trị giờ
    • ...
  • Không thể đảo ngược việc gộp
  • Tổng theo tháng -> giá trị theo ngày?
  • Cung cấp thống kê mô tả mẫu hình dữ liệu
  • Gộp làm giảm thông tin
Xử lý Dữ liệu Chuỗi Thời gian trong R

Gộp dữ liệu với xts

xts:

  • eXtensible Time Series
  • Mở rộng gói zoo và lớp đối tượng zoo
  • Các hàm apply.*()
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Biểu đồ tập dữ liệu Mauna Loa đã được gộp để lấy giá trị trung bình theo năm. Khác với dữ liệu gốc có biến thiên mạnh trong năm, đồ thị này là một đường mượt do độ phân giải lấy mẫu thấp hơn.

Xử lý Dữ liệu Chuỗi Thời gian trong R

Gộp dữ liệu với xts

Biểu đồ chuỗi thời gian Mauna Loa, biểu thị nồng độ CO₂ lấy mẫu hằng tuần. Đường xu hướng tăng dần, với đỉnh theo mùa mỗi năm.

Biểu đồ tập dữ liệu Mauna Loa đã được gộp để lấy giá trị trung bình theo năm. Khác với dữ liệu gốc có biến thiên mạnh trong năm, đồ thị này là một đường mượt do độ phân giải lấy mẫu thấp hơn.

Xử lý Dữ liệu Chuỗi Thời gian trong R

Các hàm apply-dot

daily_total <-
  apply.daily(hourly_sales,
              FUN = sum)
weekly_max <-
  apply.weekly(daily_temperature,
               FUN = max)
monthly_average <-
  apply.monthly(daily_price,
               FUN = mean)
apply.quarterly(sales_report,
                FUN = sum)
apply.yearly(monthly_salary,
             FUN = sum)
Xử lý Dữ liệu Chuỗi Thời gian trong R

Endpoints và period.apply

xts::endpoints()

xts::period.apply()

biweekly_eps <-
  endpoints(x = daily_data,
            on = "weeks",
            k = 2)
biweekly_data <-
  period.apply(x = daily_data,
               INDEX = biweekly_eps,
               FUN = mean)
biweekly_data
2002-05-05 8.148611
2002-05-19 8.146776
2002-06-02 8.060020
2002-06-16 8.028224
2002-06-30 7.944792
2002-07-14 7.930159
...
Xử lý Dữ liệu Chuỗi Thời gian trong R

Ayo berlatih!

Xử lý Dữ liệu Chuỗi Thời gian trong R

Preparing Video For Download...