R - Trung bình, Trung vị và Phân phối
Xin chào các bạn học lập trình R! Hôm nay, chúng ta sẽ cùng nhau khám phá thế giới thống kê mô tả bằng R. Như một người giáo viên khoa học máy tính gần gũi, tôi sẽ hướng dẫn các bạn qua các khái niệm về trung bình, trung vị và phân phối. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - chúng ta sẽ bắt đầu từ những điều cơ bản và cùng nhau tiến hóa.
Trung bình
Hãy bắt đầu với trung bình, có lẽ là biện pháp köz tâm phổ biến nhất. Nói đơn giản, nó là cái chúng ta thường gọi là "giá trị trung bình".
Cách tính Trung bình Cơ bản
Để tính trung bình trong R, chúng ta sử dụng hàm mean()
. Dưới đây là một ví dụ đơn giản:
numbers <- c(10, 20, 30, 40, 50)
result <- mean(numbers)
print(result)
Điều này sẽ выводить: 30
Hãy phân tích điều này:
- Chúng ta tạo một vector叫做
numbers
sử dụng hàmc()
. - Chúng ta sử dụng hàm
mean()
để tính giá trị trung bình của các số này. - Chúng ta lưu kết quả vào một biến叫做
result
. - Cuối cùng, chúng ta in kết quả.
Trung bình với Giá trị NA
Bây giờ, điều gì sẽ xảy ra nếu chúng ta có dữ liệu bị thiếu, được đại diện bởi NA
trong R? Hãy xem:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_with_na <- mean(numbers_with_na)
print(result_with_na)
Điều này sẽ выводить: NA
Ồ! R trả về NA
vì nó không biết cách xử lý giá trị bị thiếu. Nhưng đừng lo lắng, chúng ta có giải pháp!
Áp dụng Tùy chọn NA
Chúng ta có thể nói R bỏ qua các giá trị NA bằng cách sử dụng tùy chọn na.rm
:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_na_removed <- mean(numbers_with_na, na.rm = TRUE)
print(result_na_removed)
Điều này sẽ выводить: 30
Tuyệt vời! Bằng cách đặt na.rm = TRUE
, chúng ta đang nói với R để loại bỏ các giá trị NA trước khi tính trung bình.
Áp dụng Tùy chọn Trim
Đôi khi, chúng ta muốn loại bỏ các giá trị cực đoan khỏi phép toán trung bình. Đó là khi tùy chọn trim
rất hữu ích. Nó cho phép chúng ta loại bỏ một百分比 của các giá trị từ cả hai đầu của dữ liệu trước khi tính trung bình.
numbers <- c(1, 2, 3, 4, 5, 100) # Lưu ý giá trị ngoại lệ 100
result_trimmed <- mean(numbers, trim = 0.1)
print(result_trimmed)
Điều này sẽ выводить một giá trị gần 3.5
Bằng cách đặt trim = 0.1
, chúng ta đang loại bỏ 10% dữ liệu từ mỗi đầu trước khi tính trung bình. Điều này giúp giảm tác động của các giá trị ngoại lệ.
Trung vị
Trung vị là giá trị giữa khi tập dữ liệu được sắp xếp từ nhỏ đến lớn. Nó ít bị ảnh hưởng bởi các giá trị ngoại lệ hơn trung bình.
numbers <- c(1, 3, 5, 7, 9, 11, 13)
result_median <- median(numbers)
print(result_median)
Điều này sẽ выводить: 7
Hàm median()
hoạt động tương tự như mean()
. Nó cũng có tùy chọn na.rm
để xử lý các giá trị NA:
numbers_with_na <- c(1, 3, NA, 7, 9, 11, 13)
result_median_na <- median(numbers_with_na, na.rm = TRUE)
print(result_median_na)
Điều này sẽ выводить: 8
Phân phối
Thú vị thay, R không có hàm内置 để tính phân phối (giá trị xuất hiện nhiều nhất). Nhưng đừng lo lắng! Chúng ta có thể tạo ra hàm của riêng mình:
get_mode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
numbers <- c(1, 2, 2, 3, 3, 3, 4, 4, 5)
result_mode <- get_mode(numbers)
print(result_mode)
Điều này sẽ выводить: 3
Hãy phân tích hàm tùy chỉnh này:
-
unique(v)
lấy các giá trị duy nhất trong vector. -
match(v, uniqv)
tìm vị trí của các giá trị khớp. -
tabulate()
đếm số lần xuất hiện. -
which.max()
tìm vị trí của số đếm lớn nhất. - Chúng ta trả về giá trị tại vị trí đó.
Tóm tắt các Hàm
Dưới đây là bảng tóm tắt các hàm chúng ta đã học:
Biểu thị | Hàm | Tùy chọn |
---|---|---|
Trung bình | mean() | na.rm, trim |
Trung vị | median() | na.rm |
Phân phối | Custom function | N/A |
Nhớ rằng, thực hành là cách tốt nhất để thành thạo! Hãy thử các hàm này với các tập dữ liệu khác nhau và khám phá cách thay đổi các tùy chọn ảnh hưởng đến kết quả.
Khi chúng ta kết thúc, tôi nhớ lại một câu chuyện từ những ngày đầu học R. Tôi đã từng花费几个小时试图 tính trung bình của một tập dữ liệu, chỉ để nhận ra rằng tôi quên bỏ qua các giá trị NA. Đừng như tôi - hãy kiểm tra dữ liệu của bạn và sử dụng na.rm = TRUE
khi cần!
Chúc các bạn lập trình vui vẻ, và hy vọng các cuộc phiêu lưu thống kê của bạn trong R sẽ đầy ắp những phát hiện và những khoảnh khắc "aha"!
Credits: Image by storyset