Location : Home > Languages > Perl > Package
Title : Statistics::Shannon
Toolbox Logo

名称

 Statistics::Shannon - シャノン指数


概要

 オブジェクト指向のインタフェースを持つ:

use Statistics::Shannon;

# コンストラクタは Statistics::Frequency から継承する。

my $pop = Statistics::Shannon->new(@data);
my $pop = Statistics::Shannon->new(\@data);
my $pop = Statistics::Shannon->new(\%data);
my $pop = Statistics::Shannon->new($another);

# シャノン指数(Shannon index)とシャノン相対多様度(Shannon evenness)
# デフォルトの基は自然対数

print $pop->index, "\n";
print $pop->index($base), "\n";

print $pop->evenness, "\n";
print $pop->evenness($base), "\n";

 データが Statistics::Frequency オブジェクトでない匿名(anonymous)インタフェースの場合もあり、配列への参照の場合は配列の要素が頻度であり、ハッシュへの参照の場合にはハッシュ値が頻度である。

use Statistics::Shannon;

print Statistics::Shannon::index([ data ]), "\n";
print Statistics::Shannon::index([ data ], $base), "\n";

print Statistics::Shannon::index({ data }), "\n";
print Statistics::Shannon::index({ data }, $base), "\n";

print Statistics::Shannon::evenness([ data ]), "\n";
print Statistics::Shannon::evenness([ data ], $base), "\n";

print Statistics::Shannon::evenness({ data }), "\n";
print Statistics::Shannon::evenness({ data }, $base), "\n";

 その他のデータ操作については Statistics::Frequency から継承した。Statistics::Frequency を見よ。

$pop->add_data(@more_data);
$pop->add_data(\@more_data);
$pop->add_data(\%more_data);
$pop->add_data($another);

$pop->remove_data(@less_data);
$pop->remove_data(\@less_data);
$pop->remove_data(\%less_data);
$pop->remove_data($another);

$pop->copy_data($another);

$pop->clear_data();

説明

 Statistics::Shannon モジュールはデータのシャノン指数(データの多様性を示す指数)を計算するのに用いられる。
 index() 及び evenness() インタフェースが本モジュールにおけるインタフェースで、コンストラクタ及びその他の操作については Statistics::Frequency から継承されている。
 シャノン指数(Shannon index)はシャノン=ウィナー指数(Shannon-Wiener index)・シャノン=ウィーバー指数(Shannon-Weaver index)として知られ、特に生物学や環境学の分野で生物の数量や多様性について言及するときに用いられる。

new

my $pop = Statistics::Shannon->new(@data);
my $pop = Statistics::Shannon->new(\@data);
my $pop = Statistics::Shannon->new(\%data);
my $pop = Statistics::Shannon->new($another);

 初期データから新しい Shannon オブジェクトを生成する。データはリスト・配列への参照・ハッシュへの参照をとりうる。

index

$pop->index;
$pop->index($base);

 データのシャノン指数を返す。指数は

$Shannon = -sum($p{$e}*log($p{$e})

で定義される。ただし $p{$e} は要素 $e の相対頻度、log() は自然対数である。必要であれば他の基に変更してもよい。

evenness

 相対多様度(evenness)はどれくらい頻度が似通っているかを示す。

$Evenness = $Shannon / log($NumberOfDifferentElements)

頻度がすべて等しければ相対多様度は 1 となる。頻度が不均衡になれば相対多様度の値は大きくなる。

add_data

$pop->add_data(@more_data);
$pop->add_data(\@more_data);
$pop->add_data(\%more_data);
$pop->add_data($another);

 オブジェクトにデータを追加する。引数は new() で定義されたものである。

remove_data

$pop->remove_data(@less_data);
$pop->remove_data(\@less_data);
$pop->remove_data(\%less_data);
$pop->remove_data($another);

 オブジェクトからデータを削除する。引数は new() で定義されたものである。データ要素の頻度は 0 で不連続である。

copy_data

$pop->clear_data($another);

 他のオブジェクトから全データをコピーする。古いデータは捨てられる。

clear_data

$pop->clear_data();

 他のオブジェクトから全データをコピーする。古いデータは捨てられる。


エラー

 index() 及び evenness() の基は1より大きい値でなければならない。そうでない値が入力された場合は

index: base cannot be <= 1.0

というエラーメッセージが表示される。


参考資料

 Claude Elwood Shannon は情報理論の父として知られている。
 http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Shannon.html
 http://www.bell-labs.com/news/2001/february/26/1.html

 他の多様性の指数については Statistics::Simpson を見よ。
 データ操作のインタフェースについては Statistics::Frequency を見よ。(すべてのインタフェースはこのドキュメントに基づく。)


著者・著作権・ライセンス

 Jarkko Hietaniemi jhi@iki.fi  Copyright 2002
 本ライブラリはフリーソフトであり、Perl 本体と同様の条件で再配布・修正をしてもよい。


【訳注と解説】

  1. いわゆる「シャノンの情報量」を、状態のエントロピーの大きさという観点から生物多様性の指標として用いているわけだ。
Toolbox Logo
Updated : 2006/07/13