Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 표준편차 계산하기 – 알고리즘과 예제 코드 총정리


표준편차란 무엇인가?

표준편차(Standard Deviation)는 데이터가 평균으로부터 얼마나 벗어나 있는지, 즉 데이터의 흩어짐 정도를 측정하는 대표적인 통계 지표입니다. 값이 클수록 데이터가 평균에서 멀리 퍼져 있고, 작을수록 평균 주변에 밀집해 있다는 의미입니다.

표준편차를 구하는 수학적 공식은 다음과 같습니다.

s = √(분산)

여기서 분산(Variance)과 평균(m)은 각각 아래와 같이 정의됩니다.

분산 = (1/n) × Σ(xi − m)2

m = 평균 = (1/n) × Σxi

즉, 각 데이터에서 평균을 뺀 값을 제곱한 뒤 모두 더하고, 데이터 개수 n으로 나누어 분산을 구한 후, 그 제곱근을 취하면 표준편차가 됩니다.

알고리즘

주어진 숫자들의 표준편차를 계산하는 절차는 다음과 같습니다.

1단계 – n개의 데이터를 입력받는다.
2단계 – 데이터의 합(sum)과 평균(mean)을 계산한다.
3단계 – 분산(variance)을 계산한다.
4단계 – 분산의 제곱근을 구해 표준편차(stddeviation)를 계산한다.

핵심 로직

프로그램에서 표준편차를 계산하는 핵심 부분은 다음과 같습니다.

for (i = 1 ; i<= n; i++){
    deviation = value[i] - mean;
    sumsqr += deviation * deviation;
}
variance = sumsqr/(float)n ;
stddeviation = sqrt(variance) ;

각 데이터 값에서 평균을 뺀 편차(deviation)를 구하고, 이를 제곱하여 누적합니다. 누적된 제곱합(sumsqr)을 데이터 개수로 나누면 분산이 되고, 여기에 sqrt() 함수를 적용하면 최종적으로 표준편차를 얻을 수 있습니다.

전체 예제 코드

다음은 주어진 숫자들의 표준편차를 계산하는 C 프로그램의 전체 코드입니다.

#include <math.h>
#define MAXSIZE 100
main( ) {
    int i,n;
    float value [MAXSIZE], deviation,
    sum,sumsqr,mean,variance,stddeviation;
    sum = sumsqr = n = 0 ;
    printf("Input values: input -1 to end \n");
    for (i=1; i< MAXSIZE ; i++) {
        scanf("%f", &value[i]);
        if (value[i] == -1)
        break;
        sum += value[i];
        n += 1;
    }
    mean = sum/(float)n;
    for (i = 1 ; i<= n; i++) {
        deviation = value[i] - mean;
        sumsqr += deviation * deviation;
    }
    variance = sumsqr/(float)n ;
    stddeviation = sqrt(variance) ;
    printf("\nNumber of items : %d\n",n);
    printf("Mean : %f\n", mean);
    printf("Standard deviation : %f\n", stddeviation);
}

이 프로그램은 사용자로부터 숫자를 반복해서 입력받으며, -1을 입력하면 입력이 종료됩니다. 이후 평균과 분산을 차례로 계산하고, 마지막에 데이터 개수, 평균, 표준편차를 화면에 출력합니다. 참고로 math.h 헤더 파일은 제곱근을 계산하는 sqrt() 함수를 사용하기 위해 포함되었습니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

Input values: input -1 to end
2 4 6 8 12 4.5 6.7 0.3 2.4 -1
Number of items: 9
Mean: 5.100000
Standard deviation: 3.348300

9개의 데이터가 입력되었고, 평균은 약 5.1, 표준편차는 약 3.35로 계산되었습니다. 이처럼 표준편차를 직접 구현해 보면 통계 개념과 C 언어의 배열·반복문 활용 능력을 동시에 익힐 수 있습니다.