2012/10/10

PDL, PDL::Stats 로 기본 통계량 계산하기

Perl에는 Matlab같은 PDL이란 것이 있다.

여기에 PDL::Stats 모듈을 같이 사용하면 오픈소스 통계패키지인 R같이 여러가지 통계계산도 할 수 있다.

다음은 어떤 데이터의 평균, 분산, 표준편차, 어떤 두 데이터간의 공분산상관계수를 구하는 예제 코드이다.

#!/usr/bin/env perl
use 5.010;
use PDL;
use PDL::Stats;
use PDL::Graphics::PGPLOT::Window;

my $data = pdl( [1,1,5,6,7,3,3,9,4,10,8,6,6,2,6,15] );
say "data: ",$data;
say "average: ",$data->average;
say "variance: ",$data->var;
say "standard deviation: ",$data->stdv;

my $x = pdl( [1,2,3,4,5,6] );
my $y = pdl( [1,1.5,2,2.25,2.5,3] );
my $y2 = pdl( [6,5,4,3,2,1] );

say "x:", $x;
say "y:", $y;
say "y2:", $y2;
say "covariance x,y: ",$x->cov($y);
say "correlation x,y: ",$x->corr($y);
                  
say "covariance x,y2: ",$x->cov($y2);
say "correlation: x,y2: ",$x->corr($y2);

my $win = pgwin();
$win->hold();
$win->env(0,10,0,10);
$win->points($x,$y, {SYMBOL=>'SQUARE', COLOR=>'BLUE'});
$win->points($x,$y2, {SYMBOL=>'PLUS', COLOR=>'CYAN'});

<결과>

data: [1 1 5 6 7 3 3 9 4 10 8 6 6 2 6 15]
average: 5.75
variance: 12.4375
standard deviation: 3.52668399491647
x:[1 2 3 4 5 6]
y:[1 1.5 2 2.25 2.5 3]
y2:[6 5 4 3 2 1]
covariance x,y: 1.10416666666667
correlation x,y: 0.991332701357794
covariance x,y2: -2.91666666666667
correlation: x,y2: -1

















차후에는 여러가지 확률분포에 대해 테스트해보고자 한다.

댓글 없음:

댓글 쓰기