Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Độ lệch tuyệt đối và Độ lệch trung bình tuyệt đối (MAD) bằng NumPy


Đo lường độ phân tán dữ liệu: Absolute Deviation (độ lệch tuyệt đối) và Mean Absolute Deviation - MAD.

Độ lệch tuyệt đối (Absolute Deviation)

  1. Tính mean (trung bình) của mẫu.
  2. Với mỗi giá trị: |x_i - mean|.
import numpy as np

data = np.array([12, 42, 53, 13, 112])
mean_val = np.mean(data)
print(f"Mean: {mean_val}")  # 46.4

# Độ lệch tuyệt đối từng điểm
abs_dev = np.abs(data - mean_val)
print("Absolute Deviations:", abs_dev)
# [34.4  4.4  6.6 33.4 65.6]

Độ lệch trung bình tuyệt đối (MAD)

MAD = mean của các absolute deviations.

mad = np.mean(abs_dev)
print(f"MAD: {mad}")  # 28.88

# Hoặc một dòng
mad_one_line = np.mean(np.abs(data - np.mean(data)))
print(f"MAD (1 line): {mad_one_line}")

Kết quả

Mean: 46.4
Absolute Deviations: [34.4  4.4  6.6 33.4 65.6]
MAD: 28.88

So sánh với Standard Deviation (std)

print("Std (numpy):", np.std(data))           # 36.57 (population)
print("Std (sample):", np.std(data, ddof=1))   # 40.93 (sample)
  • MAD: Dễ hiểu, robust (ít bị ảnh hưởng outlier hơn std).
  • Std: Dùng rộng rãi trong thống kê suy luận, có tính chất toán học tốt (phương sai).

Kết luận

NumPy vector hóa làm cho tính MAD trở nên cực kỳ ngắn gọn: np.mean(np.abs(data - data.mean())).