Tìm trung vị là một phần cơ bản của phân tích dữ liệu, đặc biệt khi bạn xử lý các phân phối lệch hoặc ngoại lệ.
Trong R, hàm median() cung cấp một cách đơn giản, tích hợp sẵn để tính một thước đo xu hướng trung tâm rất quan trọng (phi tham số!). Tôi sẽ hướng dẫn bạn từng bước:
Hàm median() trong R làm gì?
Hàm median() xem xét dữ liệu số của bạn và trả về (một diễn giải của) giá trị trung tâm.
Ở đây, numeric_vector là một vector số hoặc đối tượng tương tự, chẳng hạn như một cột trong data frame.
Ví dụ đơn giản với R median()
Hãy xem thử. Giả sử bạn có một vector số nhỏ:
sales_numbers <- c(3,5,8,2,7)
median(sales_numbers)Được hỗ trợ bởi
R tự động sắp xếp các số (2, 3, 5, 7, 8), rồi trả về 5. Đây là giá trị nằm chính giữa.
Nhưng nếu vector của bạn có số phần tử chẵn thì sao, như ví dụ tiếp theo?
quarterly_sales <- c(10,4,7,2)
median(quarterly_sales)Được hỗ trợ bởi
Ở đây, R sắp xếp thành (2, 4, 7, 10) rồi lấy trung bình của hai số ở giữa (4 và 7), cho ra 5.5.
Nếu tập dữ liệu có số lượng giá trị lẻ, hàm sẽ chọn giá trị nằm giữa. Với số lượng giá trị chẵn, median() tính trung bình của hai số ở giữa.
Vì vậy, bên trong, median() sẽ sắp xếp giúp bạn, rất tiện lợi.
Xử lý giá trị NA với median()
Khi dữ liệu lớn hơn, việc gặp giá trị thiếu là điều thường thấy. Nếu không cẩn thận, chúng có thể làm hỏng phép tính của bạn. Mặc định, median() sẽ trả về NA nếu có bất kỳ giá trị thiếu nào trong vector. (Bất kỳ giá trị thiếu nào.) Hãy xem cách hoạt động:
monthly_sales <- c(6,3,NA,9)
median(monthly_sales)Được hỗ trợ bởi
Lưu ý rằng kết quả là NA. Để tránh điều này, thêm đối số na.rm = TRUE. Điều này bảo R loại bỏ các giá trị thiếu trước khi tính trung vị:
Lần này, bạn sẽ nhận được 6 (trung vị của các giá trị còn lại (3, 6 và 9)). Hãy để ý các giá trị NA, vì chúng có thể lẫn vào dữ liệu và làm chệch phân tích nếu bạn quên xử lý.
Tìm trung vị theo nhóm trong R
Hãy thử điều mới: so sánh trung vị giữa các nhóm khác nhau.
Một câu hỏi thường gặp: nếu chúng ta muốn xem thu nhập trung vị theo vùng thì sao? Tương tự như với các vector đơn giản, R làm điều này rất dễ, nhưng giờ chúng ta cần nhóm dữ liệu trước.
Nếu bạn thích làm việc với gói dplyr, bạn có thể đạt cùng kết quả với cú pháp thân thiện pipe:
library(dplyr)
income_data <- data.frame(income = income_values, region = region_labels)
income_data %>%
group_by(region)%>%
summarise(median_income = median(income))Được hỗ trợ bởi
Cách tiếp cận này tạo một bảng tóm tắt gọn gàng, liệt kê thu nhập trung vị cho mỗi vùng.
Các bản tóm tắt theo nhóm như vậy đặc biệt hữu ích khi bạn muốn so sánh xu hướng trung tâm giữa các danh mục trong dữ liệu.
Tính trung vị cho các cột của data frame trong R
Đôi khi, bạn có thể muốn lấy trung vị cho mọi cột trong data frame cùng lúc—có thể để lướt nhanh các giá trị trung tâm của tập dữ liệu. Ở đây tôi sẽ dùng sapply().
Lệnh này trả về trung vị của từng cột, giúp bạn nhanh chóng nhận ra xu hướng hoặc ngoại lệ. Kỹ thuật này đặc biệt hữu ích khi bạn đang khám phá dữ liệu mới và muốn có cái nhìn tổng quan nhanh.
Những điều cần lưu ý
Trước khi kết thúc, hãy nêu một vài lỗi phổ biến và thực hành tốt để đảm bảo dùng median() trơn tru:
Kiểm tra rằng bạn chỉ truyền dữ liệu số vào median(). Nếu bạn thử với factor hoặc vector ký tự, R sẽ báo lỗi.
Nhớ dùng na.rm = TRUE nếu bạn nghi ngờ có dữ liệu thiếu.
Không cần tự sắp xếp dữ liệu. median() xử lý việc sắp xếp nội bộ, nên cứ truyền vector như hiện có.
Kết luận
Hàm median() là cách tuyệt vời để hiểu trung tâm thực sự của dữ liệu, đặc biệt khi tập dữ liệu có các ngoại lệ có thể làm méo trung bình. Hàm median() cũng đủ linh hoạt để xử lý các tình huống như giá trị thiếu hoặc tóm tắt theo nhóm.
Bước tiếp theo, tôi cũng đã viết một bài ngắn về hàm mean() trong R nếu bạn muốn xem qua. Và đừng quên tham gia khóa học Phân tích dữ liệu thăm dò trong R để thật sự xây dựng các kỹ năng công việc quan trọng.
Tác giả
Josef Waples
Tôi là một cây bút và biên tập viên về khoa học dữ liệu, đã có bài đóng góp cho các nghiên cứu đăng trên tạp chí khoa học. Tôi đặc biệt quan tâm đến đại số tuyến tính, thống kê, R và các chủ đề tương tự. Tôi cũng chơi cờ vua khá thường xuyên!
Tìm trung vị là một phần cơ bản của phân tích dữ liệu, đặc biệt khi bạn xử lý các phân phối lệch hoặc ngoại lệ.
Trong R, hàm
median()cung cấp một cách đơn giản, tích hợp sẵn để tính một thước đo xu hướng trung tâm rất quan trọng (phi tham số!). Tôi sẽ hướng dẫn bạn từng bước:Hàm median() trong R làm gì?
Hàm
median()xem xét dữ liệu số của bạn và trả về (một diễn giải của) giá trị trung tâm.Ở đây,
numeric_vectorlà một vector số hoặc đối tượng tương tự, chẳng hạn như một cột trong data frame.Ví dụ đơn giản với R median()
Hãy xem thử. Giả sử bạn có một vector số nhỏ:
R tự động sắp xếp các số
(2, 3, 5, 7, 8), rồi trả về5. Đây là giá trị nằm chính giữa.Nhưng nếu vector của bạn có số phần tử chẵn thì sao, như ví dụ tiếp theo?
Ở đây, R sắp xếp thành
(2, 4, 7, 10)rồi lấy trung bình của hai số ở giữa (4và7), cho ra5.5.Nếu tập dữ liệu có số lượng giá trị lẻ, hàm sẽ chọn giá trị nằm giữa. Với số lượng giá trị chẵn,
median()tính trung bình của hai số ở giữa.Vì vậy, bên trong,
median()sẽ sắp xếp giúp bạn, rất tiện lợi.Xử lý giá trị NA với median()
Khi dữ liệu lớn hơn, việc gặp giá trị thiếu là điều thường thấy. Nếu không cẩn thận, chúng có thể làm hỏng phép tính của bạn. Mặc định,
median()sẽ trả vềNAnếu có bất kỳ giá trị thiếu nào trong vector. (Bất kỳ giá trị thiếu nào.) Hãy xem cách hoạt động:Lưu ý rằng kết quả là
NA. Để tránh điều này, thêm đối sốna.rm = TRUE. Điều này bảo R loại bỏ các giá trị thiếu trước khi tính trung vị:Lần này, bạn sẽ nhận được
6(trung vị của các giá trị còn lại (3,6và9)). Hãy để ý các giá trị NA, vì chúng có thể lẫn vào dữ liệu và làm chệch phân tích nếu bạn quên xử lý.Tìm trung vị theo nhóm trong R
Hãy thử điều mới: so sánh trung vị giữa các nhóm khác nhau.
Một câu hỏi thường gặp: nếu chúng ta muốn xem thu nhập trung vị theo vùng thì sao? Tương tự như với các vector đơn giản, R làm điều này rất dễ, nhưng giờ chúng ta cần nhóm dữ liệu trước.
Một cách nhanh trong base R là dùng
tapply():Điều này tính thu nhập trung vị cho từng vùng.
Nếu bạn thích làm việc với gói
dplyr, bạn có thể đạt cùng kết quả với cú pháp thân thiện pipe:Cách tiếp cận này tạo một bảng tóm tắt gọn gàng, liệt kê thu nhập trung vị cho mỗi vùng.
Các bản tóm tắt theo nhóm như vậy đặc biệt hữu ích khi bạn muốn so sánh xu hướng trung tâm giữa các danh mục trong dữ liệu.
Tính trung vị cho các cột của data frame trong R
Đôi khi, bạn có thể muốn lấy trung vị cho mọi cột trong data frame cùng lúc—có thể để lướt nhanh các giá trị trung tâm của tập dữ liệu. Ở đây tôi sẽ dùng
sapply().Lệnh này trả về trung vị của từng cột, giúp bạn nhanh chóng nhận ra xu hướng hoặc ngoại lệ. Kỹ thuật này đặc biệt hữu ích khi bạn đang khám phá dữ liệu mới và muốn có cái nhìn tổng quan nhanh.
Những điều cần lưu ý
Trước khi kết thúc, hãy nêu một vài lỗi phổ biến và thực hành tốt để đảm bảo dùng
median()trơn tru:Kiểm tra rằng bạn chỉ truyền dữ liệu số vào
median(). Nếu bạn thử với factor hoặc vector ký tự, R sẽ báo lỗi.Nhớ dùng
na.rm = TRUEnếu bạn nghi ngờ có dữ liệu thiếu.Không cần tự sắp xếp dữ liệu.
median()xử lý việc sắp xếp nội bộ, nên cứ truyền vector như hiện có.Kết luận
Hàm
median()là cách tuyệt vời để hiểu trung tâm thực sự của dữ liệu, đặc biệt khi tập dữ liệu có các ngoại lệ có thể làm méo trung bình. Hàmmedian()cũng đủ linh hoạt để xử lý các tình huống như giá trị thiếu hoặc tóm tắt theo nhóm.Bước tiếp theo, tôi cũng đã viết một bài ngắn về hàm mean() trong R nếu bạn muốn xem qua. Và đừng quên tham gia khóa học Phân tích dữ liệu thăm dò trong R để thật sự xây dựng các kỹ năng công việc quan trọng.