Cho khoảng lớp (class interval) và tần suất. Tính độ lệch chuẩn của dữ liệu nhóm.
Trung bình nhóm: Σ(fᵢ×xᵢ) / Σfᵢ (xᵢ là trung điểm lớp). Độ lệch chuẩn: sqrt((Σfᵢxᵢ² - n×mean²) / (n-1)).
Ví dụ
#include <bits/stdc++.h>
using namespace std;
float calc_mean(float mid[], int freq[], int n) {
float sum = 0, freqSum = 0;
for (int i = 0; i < n; i++) {
sum += mid[i] * freq[i];
freqSum += freq[i];
}
return sum / freqSum;
}
float calc_deviation(float lower_limit[], float upper_limit[], int freq[], int n) {
float mid[n], sum = 0, freqSum = 0, sd;
for (int i = 0; i < n; i++) {
mid[i] = (lower_limit[i] + upper_limit[i]) / 2;
sum += freq[i] * mid[i] * mid[i];
freqSum += freq[i];
}
sd = sqrt((sum - freqSum * calc_mean(mid, freq, n) * calc_mean(mid, freq, n)) / (freqSum - 1));
return sd;
}
int main() {
float lower_limit[] = {50, 61, 71, 86, 96};
float upper_limit[] = {60, 70, 85, 95, 100};
int freq[] = {9, 7, 9, 12, 8};
int n = sizeof(lower_limit) / sizeof(lower_limit[0]);
cout << calc_deviation(lower_limit, upper_limit, freq, n) << endl;
return 0;
}
Kết quả
15.757