이 글에서는 평균의 표준 오차(Standard Error of Mean, SEM)를 계산하는 C++ 프로그램을 다룹니다.
평균의 표준 오차란 표본 평균이 모집단 평균으로부터 어느 정도 흩어져 있는지를 나타내는 추정값입니다. 통계학에서는 이 값을 활용해 모집단 평균에 대한 대략적인 신뢰 구간(confidence interval)을 추정합니다.
계산 원리
표준 오차는 아래 공식으로 구할 수 있습니다.
SEM = 표본 표준 편차 ÷ √n
여기서 n은 표본의 크기를 의미합니다. 따라서 프로그램은 세 단계로 나누어 작성할 수 있습니다.
1. 표본 평균 계산
배열의 모든 요소를 더한 뒤 요소 개수(n)로 나누어 표본 평균을 구합니다.
2. 표본 표준 편차 계산
각 데이터에서 평균을 뺀 값을 제곱하여 합산하고, 자유도를 고려해 (n-1)로 나눈 후 제곱근을 취합니다. 이는 불편 분산(unbiased variance) 기반의 표준 편차입니다.
3. 표준 오차 계산
앞서 구한 표준 편차를 √n으로 나누면 최종적으로 표준 오차가 산출됩니다.
C++ 구현 예제 코드
#include <bits/stdc++.h>
using namespace std;
// 표본 평균 계산
float calc_mean(float arr[], int n){
float sum = 0;
for (int i = 0; i < n; i++)
sum = sum + arr[i];
return sum / n;
}
// 표준 편차 계산
float calc_deviation(float arr[], int n){
float sum = 0;
for (int i = 0; i < n; i++)
sum = sum + (arr[i] - calc_mean(arr, n)) * (arr[i] - calc_mean(arr, n));
return sqrt(sum / (n - 1));
}
// 표준 오차 계산
float calc_error(float arr[], int n){
return calc_deviation(arr, n) / sqrt(n);
}
int main(){
float arr[] = { 78.53, 79.62, 80.25, 81.05, 83.21, 83.46 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << calc_error(arr, n) << endl;
return 0;
}실행 결과
0.8063
코드 설명
- calc_mean(): 배열 요소의 합을 구해 개수로 나누는 방식으로 표본 평균을 반환합니다.
- calc_deviation(): 각 데이터와 평균 사이의 편차를 제곱해 합산한 뒤, (n-1)로 나누고 제곱근을 취해 표준 편차를 구합니다.
- calc_error(): 표준 편차를 √n으로 나누어 표준 오차를 최종 계산합니다.
위 예제에서는 6개의 실수 데이터를 사용했으며, 실행 결과 약 0.8063이라는 표준 오차 값이 출력됩니다. 이 값이 작을수록 표본 평균이 모집단 평균에 가깝다는 것을 의미하며, 데이터가 평균 주변에 밀집되어 있음을 알 수 있습니다.