Location : Home > Languages > Perl > Package Title : Statistics::Descriptive::Discrete |
![]() |
Statistics::Descriptive::Discrete - 離散集合に対する記述統計処理
use Statistics::Descriptive::Discrete; my $stats = new Statistics::Descriptive::Discrete; $stats->add_data(1,10,2,0,1,4,5,1,10,8,7); print "count = ",$stats->count(),"\n"; print "uniq = ",$stats->uniq(),"\n"; print "sum = ",$stats->sum(),"\n"; print "min = ",$stats->min(),"\n"; print "max = ",$stats->max(),"\n"; print "mean = ",$stats->mean(),"\n"; print "standard_deviation = ",$stats->standard_deviation(),"\n"; print "variance = ",$stats->variance(),"\n"; print "sample_range = ",$stats->sample_range(),"\n"; print "mode = ",$stats->mode(),"\n"; print "median = ",$stats->median(),"\n";
本モジュールは離散統計における基本的な関数を提供する。
ある1点を除いてほとんどを Statistics::Descriptive::Full(Statistics::Descriptive に含まれている)に依っている。本モジュールは、例えば正の値の離散集合からなる A/D 変換を行った離散データに最適化されている。もしデータが 8 ビット A/D により生成されていれば、データセットには256個の値だけしかない。たとえ100万個のデータ点があったとしても、それぞれには256個の値しかとりえない。Statistics::Descriptive がするように全データを保持する代わりに、本モジュールは値とその個数しか保持しない。
非常に大きなデータセットに対してはこの格納方法は処理速度とメモリ利用量において大きな改善点となる。現実のアプリケーションにおける260万データ点に対しテストした場合、Statistics::Descriptive::Full で計算すれば561秒かかるところを、Statistics::Descriptive::Discrete では40秒で処理を終える。また同じデータセットに対し Statistics::Descriptive::Full では400MBのRAMを必要としたが、Statistics::Descriptive::Discrete では4MBしか使用しない。
$stat = Statistics::Descriptive::Discrete->new();
新しい statistics オブジェクトを生成する。
$stat->add_data(1,2,3,4,5);
statistics オブジェクトにデータを追加する。統計量が必要時に再計算されるようにフラグを設定する。
$stat->add_data_tuple(1,2,42,3);
2つの要素が値と要素数であるような(その値が何回発生するかを示す) statistics オブジェクトにデータを追加する。
上記の式は $stat->add_data(1,1,42,42,42); と同じである。データが ($value, $occurrence) と同型である場合、これを用いればよい。
$stat->max();
データセットの最大値を返す。
$stat->min();
データセットの最小値を返す。
$stat->count();
データセットのデータ数を返す。
$stat->uniq();
データセットにおける互いに異なるデータ数を返す。例えばデータセットが (1,2,2,3,3,3) なら 3 を返す。
$stat->sum();
データセットの要素の総和を返す。
$stat->mean();
データの平均値を返す。
$stat->median();
データの中央値を返す。
$stat->mode();
データのモードを返す。
$stat->variance();
データの分散を返す。
$stat->standard_deviation();
データの標準偏差を返す。
$stat->sample_range();
データセットの標本範囲(最大値−最小値)を返す。
$stat->get_data();
データ配列のコピーを返す。
注意:この配列はとても大きく、このモジュールを用いる目的に反するかも知れない。利用する前に本当に必要か確かめること。
本モジュールのインタフェースはほとんど Statistics::Descriptive と一致している。まだ十分にテストが済んでいない。
Rhet Turnbull, RhetTbull on perlmonks.org, rhettbull at hotmail.com
もしこのコードが役に立ったのならメールで知らせてくれるとありがたい。
バグの発見、フィードバック、変更等を知らせてくれた以下の人たちに感謝する。
Copyright (c) 2002 Rhet Turnbull. All rights reserved.
本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。
本コードの Statistics::Descriptive からの移殖は以下の著作権に従う。
Copyright (c) 1997,1998 Colin Kuskie. All rights reserved.
本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。
Copyright (c) 1998 Andrea Spinelli. All rights reserved.
本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。
Copyright (c) 1994,1995 Jason Kastner. All rights reserved.
本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。
![]() |
Updated : 2007/04/13 |