다음은 표준정규분포의 확률밀도함수(PDF)와 누적분포함수(CDF)를 그리고 정규분포을 이용해서 몇가지 예에 대해 계산하는 코드이다.
#!/usr/bin/env perl use 5.010; use PDL; use PDL::Stats; use PDL::GSL::CDF; use PDL::Graphics::PGPLOT::Window; use Math::GSL::Randist qw/gsl_ran_gaussian_pdf/; # 정규분포 my $win = pgwin(); my $x = zeroes(100)->xlinvals(-4, 4); $win->env(-4,4,0,1,{Title=>'standard normal(gaussian) distribution'}); $win->hold(); #CDF $win->line($x, gsl_cdf_gaussian_P($x,1), {COLOR=>'RED'}); #PDF $win->line($x, [ map { gsl_ran_gaussian_pdf($_, 1) } $x->list ], {COLOR=>'BLUE'}); # PDL::Stats::Distr의 pdf_gaussian 함수 사용시 #$win->line($x, $x->pdf_gaussian(0, 1), {COLOR=>'BLUE'}); # 시험결과 학생들의 성적이 평균이 63점 분산이 100인 정규분포를 따른다고 하면 # 50점 미만의 학생은 몇 %인가 ? # Z = (50-63)/sqrt(100) 이므로 say gsl_cdf_gaussian_P((50-63)/sqrt(100), 1)*100, " %"; # 상위 10%에게 A를 주면 A를 받기 위해서 몇점 이상이 되어야 하는가? my $Z = gsl_cdf_gaussian_Pinv(0.9, 1); # 표준정규분포에서 하위(100-10)=90% 위치의 Z값 # Z = (X-63)/sqrt(100) 이므로 점수X는 say $Z*sqrt(100)+63
<결과>
9.68004845856103 % 75.815515655446
그래프에서 파란색이 PDF, 빨간색이 CDF의 그래프이다. 표준정규분포의 확률변수구간은 음의무한대에서 양의 무한대 까지이나 -4~4구간만 그렸으며 PDF아래의 면적이1 CDF는 PDF를 구간별로 적분한 값으로 0에서 1에 수렴한다.
댓글 없음:
댓글 쓰기