이 글에서는 Java를 사용하여 표준 편차(Standard Deviation)를 계산하는 방법을 알아보겠습니다.
표준 편차란?
표준 편차는 숫자들이 평균으로부터 얼마나 퍼져 있는지를 나타내는 통계적 측정값입니다. 기호는 시그마(σ)이며, 분산(Variance)의 제곱근으로 정의됩니다.
표준 편차는 다음 공식으로 계산할 수 있습니다.
√( Σ(Xi − μ)² / N )
- Xi: 배열의 각 요소
- μ: 배열 요소들의 평균
- N: 배열에 포함된 요소의 개수
- Σ: 각 요소의 합
예시 입출력
입력값:
Input Array : [ 35.0, 48.0, 60.0, 71.0, 80.0, 95.0, 130.0 ]
기대 출력 결과:
Standard Deviation: 29.313227
알고리즘
Step 1 - 시작한다. Step 2 – double형 배열 input_array와 double형 변수 sum, standard_deviation을 선언한다. Step 3 - 사용자로부터 값을 입력받거나 값을 직접 정의한다. Step 4 – Σ(Xi − μ)² / N 을 계산하여 result 변수에 저장한다. Step 5 - 결과를 출력한다. Step 6 - 종료한다.
예제 1: 기본 구현
아래 예제는 배열의 값들을 직접 정의하고, 반복문을 통해 표준 편차를 계산하는 가장 기본적인 방법입니다.
public class StandardDeviation {
public static void main(String[] args) {
double[] input_array = { 35, 48, 60, 71, 80, 95, 130};
System.out.println("배열의 요소는 다음과 같습니다");
for (double i : input_array) {
System.out.print(i +" ");
}
double sum = 0.0, standard_deviation = 0.0;
int array_length = input_array.length;
// 모든 요소의 합계 계산
for(double temp : input_array) {
sum += temp;
}
// 평균 계산
double mean = sum/array_length;
// 각 요소와 평균의 차이를 제곱하여 누적
for(double temp: input_array) {
standard_deviation += Math.pow(temp - mean, 2);
}
// 분산의 제곱근 = 표준 편차
double result = Math.sqrt(standard_deviation/array_length);
System.out.format("\n\n표준 편차는: %.6f", result);
}
}실행 결과
배열의 요소는 다음과 같습니다 35.0 48.0 60.0 71.0 80.0 95.0 130.0 표준 편차는: 29.313227
예제 2: 함수로 분리한 구현
코드의 재사용성을 높이기 위해 표준 편차 계산 로직을 별도의 함수로 분리할 수 있습니다. 이렇게 하면 여러 배열에 대해 동일한 메서드를 호출하여 재사용할 수 있습니다.
public class StandardDeviation {
public static void main(String[] args) {
double[] input_array = { 35, 48, 60, 71, 80, 95, 130};
System.out.println("배열의 요소는 다음과 같습니다");
for (double i : input_array) {
System.out.print(i +" ");
}
double standard_deviation = calculateSD(input_array);
System.out.format("\n\n표준 편차는: %.6f", standard_deviation);
}
public static double calculateSD(double input_array[]) {
double sum = 0.0, standard_deviation = 0.0;
int array_length = input_array.length;
for(double temp : input_array) {
sum += temp;
}
double mean = sum/array_length;
for(double temp: input_array) {
standard_deviation += Math.pow(temp - mean, 2);
}
return Math.sqrt(standard_deviation/array_length);
}
}실행 결과
배열의 요소는 다음과 같습니다 35.0 48.0 60.0 71.0 80.0 95.0 130.0 표준 편차는: 29.313227
정리
표준 편차를 구하는 과정은 크게 세 단계로 나눌 수 있습니다. 첫째, 모든 요소의 평균을 구합니다. 둘째, 각 요소와 평균의 차이를 제곱한 값들을 더해 분산을 구합니다. 셋째, 분산의 제곱근을 계산하면 표준 편차가 완성됩니다. Java에서는 Math.pow()와 Math.sqrt() 메서드를 활용하면 손쉽게 구현할 수 있습니다.