Location : Home > Languages > Perl > Package Title : Statistics::RankOrder |
![]() |
Statistics::RankOrder - 判定パネルから順位付けを行うアルゴリズム
use Statistics::RankOrder; my $r = Statistics::RankOrder->new(); $r->add_judge( [qw( A B C )] ); $r->add_judge( [qw( A C B )] ); $r->add_judge( [qw( B A C )] ); my %ranks = $r->mean_rank; my %ranks = $r->trimmed_mean_rank(1); my %ranks = $r->median_rank; my %ranks = $r->best_majority_rank;
本モジュールは判定のパネルにより候補を順位付けを結合するアルゴリズムを提供する。このモジュールでは用語「候補(candidates)」は選挙における候補者、趣味比較におけるブランド、スポーツイベントにおける競争者などを意味する。判定(Judges)は候補を順位付けすることを意味する。投票アルゴリズム(voting algorithms;例えば多数決ルールや優先順位投票)とは異なり、これらのアルゴリズムは全ての候補の順位付けが必要である。(いくつかのアルゴリズムでは同点もあり)
以下のアルゴリズムを実装している。
このアルファバージョンではエラーチェックは最小限である。将来のバージョンではもっと頑強なエラーチェックを行い、対順位付け(pair-ranking)メソッドなどの順位付け法も追加することができるだろう。
new
$r = Statistics::RankOrder->new();
パネルに判定無し(つまりデータ無し)で新しいオブジェクトを生成する。
add_judge
$r->add_judge( [qw( A B C D E )] );
パネルに判定を追加する。単一の引数は最良から最悪の順番に順位付けされた候補名の配列参照である。
best_majority_rank
my %ranks = $r->best_majority_rank;
候補を最良最大アルゴリズム(Best-of-Majority algorithm)に従い順位付けする。
各候補に中央値の順位を与える。判定の数が偶数であれば2つの中央値のうち低い順位を採用する。
この方法の背景にある考えは、候補に対する結果は判定の多数が支持している最低の順位を示しているというものである。以下の比較により、同点がなくなるまで行われるので中央値順位における同点はない。
もしこの比較でもまだ同点が存在するなら、同点とする(実際にはこれは稀である)。同点が起これば次の順位は、同点がなかった場合と同じ値が、値が充てられる。例えば 1st, 2nd, 2nd, 4th, 5th のようになる。
キーが候補名で値がその順位であるようなハッシュを返す。最良が1で数が大きいと悪いことを示す。
candidates
my %candidates = $r->candidates;
キーが候補名で、各候補に対し全ての判定からの順位を含む配列参照を値とするハッシュを返す。
judges
my @judges = $r->judges;
各判定の順位付けを示す配列参照を返す。
mean_rank
my %ranks = $r->mean_rank;
候補を最低平均順位(Lowest Mean Rank)法に従って順位付けする。
平均順位は候補ごとに計算される。最低の平均順位を持つ候補が1番めに、2番めに低い平均順位を持つ候補が2番めに、となる。もし平均順位が同じであれば候補はその順位と同点とする。同点が起これば次の順位は、同点がなかった場合と同じ値が、値が充てられる。例えば 1st, 2nd, 2nd, 4th, 5th のようになる。
キーが候補名で値がその順位であるようなハッシュを返す。最良が1で数が大きいと悪いことを示す。
median_rank
my %ranks = $r->median_rank;
候補を中央値順位(Median-Rank)法に従って順位付けする。
各候補に中央値の順位を与える。判定の数が偶数であれば2つの中央値のうち低い順位を採用する。この方法の背景にある考えは、候補に対する結果は判定の多数が支持している最低の順位を示しているというものである。最低の中央値順位を持つ候補が1番めに、2番目に低い中央値順位を持つ候補が2番めに、となる。もし中央値順位が同じであれば候補はその位置と同点とする。同点が起これば次の順位は、同点がなかった場合と同じ値が、値が充てられる。例えば 1st, 2nd, 2nd, 4th, 5th のようになる。
キーが候補名で値がその順位であるようなハッシュを返す。最良が1で数が大きいと悪いことを示す。
trimmed_mean_rank
my %ranks = $r->trimmed_mean_rank( N );
候補を刈り込み最低平均(Trimmed Lowest Mean Rank)法に従って順位付けする。
悪いほうから N 個の値と良いほうから N 個の値を除いて求めた平均順位は各候補別に計算される。例えば trimmed_mean_rank(2) は悪いほうから2つの値、良いほうから2つの値を除いて計算される。最低の平均順位を持つ候補が1番めに、2番目に低い中央値順位を持つ候補が2番めに、となる。もし平均順位が同じであれば候補はその位置と同点とする。同点が起これば次の順位は、同点がなかった場合と同じ値が、値が充てられる。例えば 1st, 2nd, 2nd, 4th, 5th のようになる。
キーが候補名で値がその順位であるようなハッシュを返す。最良が1で数が大きいと悪いことを示す。
様々な順位付け方法、特に最良最大メソッドについては以下の論文を見よ。
本モジュールをビルドしてテストしてインストールするには以下のコマンドを。
perl Build.PL perl Build perl Build test perl Build install
バグ報告は CPAN Request Tracker http://rt.cpan.org/NoAuth/Bugs.html?Dist=Statistics-RankOrder まで。
David A Golden (DAGOLDEN)
dagolden@cpan.org
http://dagolden.com/
Copyright (c) 2005 by David A Golden
本プログラムはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。
ライセンスの全文は本モジュールに同封されている LICENCE ファイルを見るとよい。
![]() |
Updated : 2007/11/02 |