Monday, February 26, 2007
Perl/펄] 표준 편차 구하기/계산 함수; Standard Deviation Function
펄에서는 아래 예제와 같은 방법으로, 표준편차 구하는 함수(서브 루틴)를 만들 수 있습니다.
standardDeviation(배열명, 옵션)
의 형식입니다.
숫자가 든 배열명이 @foo 일 때,
standardDeviation(@foo, 1)
이라고 하면, 엑셀의 STDEV() 함수에 해당하는 "표본의 표준 편차"를 구할 수 있고
standardDeviation(@foo, 0)
이라고 하면, 엑셀의 STDEVP() 함수에 해당하는 "모집단 전체의 표준 편차"를 구할 수 있습니다.
파일명: example.pl
▶▶ Perl/펄] 배열 합계, 산술 평균 구하기; Array Sum, Average (Mean)
표준편차 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
standardDeviation(배열명, 옵션)
의 형식입니다.
숫자가 든 배열명이 @foo 일 때,
standardDeviation(@foo, 1)
이라고 하면, 엑셀의 STDEV() 함수에 해당하는 "표본의 표준 편차"를 구할 수 있고
standardDeviation(@foo, 0)
이라고 하면, 엑셀의 STDEVP() 함수에 해당하는 "모집단 전체의 표준 편차"를 구할 수 있습니다.
표준편차 계산 예제 코드
파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;
my @foo = ( 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 );
# 평균 구하기
print mean(@foo), "\n";
# 출력 결과: 1328.6
# 표본의 표준편차 구하기 (STDEV)
print standardDeviation(@foo, 1), "\n";
# 출력 결과: 27.4639157198435
# 모집단 전체의 표준편차 구하기 (STDEVP)
print standardDeviation(@foo, 0), "\n";
# 출력 결과: 26.0545581424825
sub mean { # 산술 평균 구하기
return "NaN" if ($#_ < 0); # 빈 배열일 경우의 에러 처리
my @array = @_;
my $sum = 0.0;
for (my $i = 0; $i <= $#array; $i++) {
$sum += $array[$i];
}
# 소괄호로 둘러싸 주지 않으면
# 연산자 우선 순위 때문에 버그 생김
return $sum / ($#array + 1);
}
sub standardDeviation {
my $option = pop;
my @array = @_;
return "NaN" if ($#array + 1 < 2); # 배열 요소 개수가 최소한 2가 되어야 함
my $sum = 0.0;
my $sd = 0.0;
my $diff;
my $meanValue = mean(@array);
for (my $i = 0; $i <= $#array; $i++) {
$diff = $array[$i] - $meanValue;
$sum += $diff * $diff;
}
$sd = sqrt($sum / ($#array + 1 - $option));
return $sd;
}
use strict; use warnings;
my @foo = ( 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 );
# 평균 구하기
print mean(@foo), "\n";
# 출력 결과: 1328.6
# 표본의 표준편차 구하기 (STDEV)
print standardDeviation(@foo, 1), "\n";
# 출력 결과: 27.4639157198435
# 모집단 전체의 표준편차 구하기 (STDEVP)
print standardDeviation(@foo, 0), "\n";
# 출력 결과: 26.0545581424825
sub mean { # 산술 평균 구하기
return "NaN" if ($#_ < 0); # 빈 배열일 경우의 에러 처리
my @array = @_;
my $sum = 0.0;
for (my $i = 0; $i <= $#array; $i++) {
$sum += $array[$i];
}
# 소괄호로 둘러싸 주지 않으면
# 연산자 우선 순위 때문에 버그 생김
return $sum / ($#array + 1);
}
sub standardDeviation {
my $option = pop;
my @array = @_;
return "NaN" if ($#array + 1 < 2); # 배열 요소 개수가 최소한 2가 되어야 함
my $sum = 0.0;
my $sd = 0.0;
my $diff;
my $meanValue = mean(@array);
for (my $i = 0; $i <= $#array; $i++) {
$diff = $array[$i] - $meanValue;
$sum += $diff * $diff;
}
$sd = sqrt($sum / ($#array + 1 - $option));
return $sd;
}
▶▶ Perl/펄] 배열 합계, 산술 평균 구하기; Array Sum, Average (Mean)
표준편차 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
tag: perl
Perl | 펄
<< Home