Mean Absolute Deviation (MAD) วัดความกระจายของข้อมูลจากค่าเฉลี่ย โดยใช้ค่าสัมบูรณ์ของความต่าง
สูตร
MAD = (Σ |xᵢ - μ|) / n
โดยที่:
μ= Mean (ค่าเฉลี่ย)xᵢ= ข้อมูลแต่ละตัวn= จำนวนข้อมูล
ขั้นตอนการคำนวณ
- หาค่าเฉลี่ย (Mean) ของข้อมูล
- หาความต่างสัมบูรณ์ของแต่ละข้อมูลจากค่าเฉลี่ย:
|xᵢ - μ| - รวมความต่างสัมบูรณ์ทั้งหมด
- หารด้วยจำนวนข้อมูล
n
ตัวอย่าง
ตัวอย่างที่ 1
Input: arr[] = {34, 21, 56, 76, 45, 11}
Mean: (34+21+56+76+45+11)/6 = 243/6 = 40.5
Absolute Deviations:
|34-40.5| = 6.5 |21-40.5| = 19.5 |56-40.5| = 15.5 |76-40.5| = 35.5 |45-40.5| = 4.5 |11-40.5| = 29.5 Sum = 111
MAD: 111/6 = 18.5
ตัวอย่างที่ 2
Input: arr[] = {10, 15, 15, 17, 18, 21}
Mean: 96/6 = 16
MAD: (6+1+1+1+2+5)/6 = 16/6 = 2.666...
ตัวอย่างโค้ด
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
using namespace std;
double mean(const vector<double>& arr) {
double sum = 0;
for (double x : arr) sum += x;
return sum / arr.size();
}
double meanAbsoluteDeviation(const vector<double>& arr) {
double mu = mean(arr);
double sum = 0;
for (double x : arr) {
sum += abs(x - mu);
}
return sum / arr.size();
}
int main() {
vector<double> arr1 = {34, 21, 56, 76, 45, 11};
cout << fixed << setprecision(2);
cout << "MAD: " << meanAbsoluteDeviation(arr1) << endl; // 18.50
vector<double> arr2 = {10, 15, 15, 17, 18, 21};
cout << "MAD: " << meanAbsoluteDeviation(arr2) << endl; // 2.67
return 0;
}
เปรียบเทียบ MAD กับ Standard Deviation
| คุณสมบัติ | MAD | Standard Deviation (σ) |
|---|---|---|
| สูตร | Σ|x-μ|/n | √(Σ(x-μ)²/n) |
| หน่วย | เหมือนข้อมูลต้นฉบับ | เหมือนข้อมูลต้นฉบับ |
| ความไวต่อ Outlier | ต่ำกว่า (Linear) | สูงกว่า (Quadratic) |
| คณิตศาสตร์ | ง่าย ไม่มีรากที่สอง | ซับซ้อนกว่า |
| การใช้งาน | Robust statistics | Parametric statistics |