[分享] 用C語言計算標準差σ ( Standard Deviation ) C語言學習筆記【6】
當我們在分析一組數據時,求平均值可以初略的讓我們知道資料大約落在哪裡,但是這只是個中心點,沒有辦法將數據的意義完整說明清楚。因此我們會用「離散趨勢的統計量」來分析資料的離散程度,常見的是計算「標準差σ」。在 Excel 裡面我們只要簡單的用STDEVP()函數就可以輸出標準差,究竟背後如何用程式語言表達呢?

什麼是標準差?
- 意義:最常用的離散趨勢統計量是標準差,標準差越小表示數據間愈相近,也就是各筆數據集中在平均值附近,反之標準差愈大,表示數據間差異愈高,也就是數據愈分散。
- 幾何意義:標準差可以理解為一個從多維空間的一個點到一條直線的距離的函數。
- 公式( Formula ):其中 µ 表示數據的平均值,Xi 表示第 i 組數據,共有 N 組。
C語言寫標準差
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void){
int n,i;
double standard = 0,value = 0,compute = 0,sigma = 0;
printf("請輸入數據量:");
while(scanf("%d" ,&n) != EOF){
int V[n];
for(i=0; i<n ; i++){
V[n] = 0;
printf("數據%d:" ,i+1);
scanf("%d" ,&V[i] );
compute += V[i];
}
compute /= n;
for(i=0; i<n ; i++){
standard = V[i] - compute;
standard *= standard;
sigma += standard;
}
sigma /= n;
value = sqrt(sigma);
printf("這%d組的平均為:%f,標準差為%f\n\n請輸入數據量:" ,n ,compute ,value);
n = 0; compute = 0; standard = 0; sigma = 0; value = 0;
}
return 0;
}
執行結果


Leave a Reply