이 글에서는 크기가 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에 가까운 데이터의 경우 변동 계수가 비정상적으로 커질 수 있으므로, 실무에서는 평균값의 부호와 크기를 함께 확인하는 것이 좋습니다.