Bù giá trị thiếu

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

Harrison Brown

Graduate Researcher in Geography

Chuỗi thời gian đều và không đều

Chuỗi thời gian đều:

  • Không có giá trị thiếu hoặc NA
  • Khoảng cách thời gian đều nhau

Vấn đề thực tế:

  • Hỏng cảm biến, thiết bị
  • Điều kiện thời tiết
  • ...

Gộp (aggregation):

  • Lấy mẫu lại xuống độ phân giải thời gian thấp hơn
  • Giảm thông tin
  • ví dụ: tổng tháng của giá trị ngày

Điền khuyết (imputation):

  • Điền giá trị thiếu
  • Nhiều phương pháp ước giá trị
Xử lý Dữ liệu Chuỗi Thời gian trong R

Điền khuyết

Biểu đồ một phần dữ liệu Mauna Loa. Phiên bản này có điểm thiếu, tạo 'lỗ hổng' trên đường vẽ. Các lỗ này là giá trị NA.

Biểu đồ phóng to của đồ thị Mauna Loa trước đó. Các khoảng trống trên đường vẽ rõ hơn.

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

Điền giá trị với zoo

Các hàm na-dot của zoo:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

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

Xác định giá trị thiếu

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
2017-01-06  2
2017-01-07 NA
2017-01-08  1
2017-01-09  2
2017-01-10  2
...
sum(is.na(observations))
[1] 23
Xử lý Dữ liệu Chuỗi Thời gian trong R

na.fill

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
...
table(observations, useNA = 'ifany')
   1    2    3    4    5    6 <NA> 
  43   29   17   13    1    2   23

Biểu đồ chuỗi thời gian giả định với trục y là số 'observations' mỗi ngày. Có các khoảng trống do giá trị thiếu NA trong dữ liệu.

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

na.fill

observations_fill <-
  na.fill(object = observations,
          fill = 0)

table(observations_fill)
 0  1  2  3  4  5  6 
23 43 29 17 13  1  2
autoplot(observations_fill)

Phiên bản đã 'điền' của biểu đồ 'Số liệu hằng ngày' — các giá trị thiếu NA được thay bằng 0 bằng phương pháp điền hằng số.

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

na.locf

autoplot(scores)
Cảnh báo:
Đã loại 12 dòng chứa
missing values (geom_path).

Biểu đồ chuỗi thời gian giả định 'Điểm kiểm tra hàng tháng'. Đường biểu đồ dừng đột ngột, cho thấy sau một thời điểm có giá trị thiếu NA. Dữ liệu từ 2005–2008, xu hướng tăng dần; sau 2007, dữ liệu bị thiếu.

scores_locf <- na.locf(scores)
autoplot(scores_locf)

'Phiên bản đã điền' của biểu đồ 'Điểm kiểm tra hàng tháng' dùng LOCF (Last Observation Carried Forward). Sau 2007, các giá trị được thay bằng giá trị gần nhất khác NA trước đó.

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

Nội suy tuyến tính

na.approx()

Trang 1 của 'hoạt họa' mô tả nội suy tuyến tính. Hình là đồ thị khái niệm với trục x, y và các điểm trên đường. Có một 'khoảng trống' lớn nơi dữ liệu là NA.

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

Nội suy tuyến tính

na.approx()

Trang 2 của 'hoạt họa' nội suy tuyến tính. Khoảng trống được nối bằng đường chấm đỏ, thể hiện nối hai giá trị gần nhất khác NA hai bên vùng thiếu.

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

Nội suy tuyến tính

na.approx()

Trang 3 của 'hoạt họa' nội suy tuyến tính. Đường chấm đỏ được thay bằng đường đen liền, cho thấy giá trị thiếu đã được thay bằng nội suy tuyến tính.

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

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

autoplot(maunaloa_approx) +
  labs(
    x = "Index",
    y = "CO2 Concentration",
    title = "Approximated Data Points"
  )

Đồ thị chuỗi thời gian Mauna Loa, trong đó giá trị thiếu NA đã được 'điền' bằng nội suy tuyến tính. Hầu như không thể thấy chỗ thiếu trước đây, cho thấy độ chính xác của phương pháp này.

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...