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

C++로 구현하는 변동 계수(Coefficient of Variation) 계산 프로그램

이 글에서는 크기가 n인 실수(float) 배열이 주어졌을 때, 해당 배열의 변동 계수(Coefficient of Variation)를 계산하고 그 결과를 출력하는 C++ 프로그램을 다룹니다.


변동 계수란 무엇인가?

통계학에서 변동 계수는 주어진 데이터의 변동성(variability) 정도를 상대적으로 평가할 때 사용되는 대표적인 지표입니다.

금융 분야에서도 널리 활용되는데, 투자 금액 대비 어느 정도의 위험이 따르는지를 판단하는 기준으로 쓰입니다. 표준편차와 평균의 비율이 낮다면 해당 투자에 내재된 위험도 낮다고 해석할 수 있습니다.

즉, 변동 계수는 표준편차를 평균으로 나눈 값이며, 수식으로 다음과 같이 표현됩니다.

변동 계수 = 표준편차 ÷ 평균

예제

입력-: array[] = { 10.0, 21, 23, 90.0, 10.5, 32.56, 24, 45, 70.0 }
출력-: 변동 계수 : 0.75772

입력-: array[] = { 15.0, 36.0, 53.67, 25.45, 67.8, 56, 78.09}
출력-: 변동 계수 : 0.48177

프로그램의 접근 방식

  • 실수(float) 값을 담고 있는 배열을 입력받습니다.
  • 주어진 배열에 대해 평균(mean)과 표준편차(standard deviation)를 각각 계산합니다.
  • 표준편차를 평균으로 나누어 변동 계수를 구합니다.
  • 최종 결과를 화면에 출력합니다.

알고리즘

시작
1단계 -> 평균을 계산하는 함수 선언
    float cal_mean(float arr[], int size)
    float sum = 0 으로 초기화
    i = 0 부터 i < size 까지 반복하며 sum = sum + arr[i]
    반복 종료 후 return sum / size

2단계 -> 표준편차를 계산하는 함수 선언
    float StandardDeviation(float arr[], int size)
    float sum = 0 으로 초기화
    i = 0 부터 i < size 까지 반복하며
    sum = sum + (arr[i] - cal_mean(arr, size)) * (arr[i] - cal_mean(arr, size))
    return sqrt(sum / (size - 1))

3단계 -> 변동 계수를 계산하는 함수 선언
    float CoefficientOfVariation(float arr[], int size)
    return StandardDeviation(arr, size) / cal_mean(arr, size)

4단계 -> main() 함수에서
    float 배열 arr[] = { 10.0, 21, 23, 90.0, 10.5, 32.56, 24, 45, 70.0} 선언
    int size = sizeof(arr) / sizeof(arr[0]) 로 배열 크기 계산
    CoefficientOfVariation(arr, size) 호출

C++ 구현 코드

#include <bits/stdc++.h>
using namespace std;
// 평균을 계산하는 함수
float cal_mean(float arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++)
    sum = sum + arr[i];
    return sum / size;
}
// 표준편차를 계산하는 함수
float StandardDeviation(float arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++)
    sum = sum + (arr[i] - cal_mean(arr, size)) * (arr[i] - cal_mean(arr, size));
    return sqrt(sum / (size - 1));
}
// 변동 계수를 계산하는 함수
float CoefficientOfVariation(float arr[], int size) {
    return StandardDeviation(arr, size) / cal_mean(arr, size);
}
int main() {
    float arr[] = { 10.0, 21, 23, 90.0, 10.5, 32.56, 24, 45, 70.0};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout<<"coefficient of variation is : "<<CoefficientOfVariation(arr, size);
    return 0;
}

실행 결과

coefficient of variation is : 0.75772

위 코드에서 표준편차는 표본 표준편차 공식(sum / (size - 1))을 사용하여 계산했습니다. 만약 모집단 전체를 대상으로 한다면 분모를 size로 변경하면 됩니다. 또한 평균이 0에 가까운 데이터의 경우 변동 계수가 비정상적으로 커질 수 있으므로, 실무에서는 평균값의 부호와 크기를 함께 확인하는 것이 좋습니다.