3

n個の数の順列を元の1...nシーケンスにソートし、必要な反転の数を提供する実装がRにあるかどうか疑問に思いました。たとえば、このpptで概説されているように、「反転による並べ替え」または「転座による並べ替え」の実装。

具体的には、n個の要素のシーケンスpi(n)の順列があり、元のシーケンスにどれだけ近いかを調べたいと思います。逆転の数は良い指標のようです。

ありがとう!

4

1 に答える 1

2

これはケンドールの距離(バブルソート距離としても知られています)の仕事のようです。これは、ランキング空間で距離を測定するためにおそらく最も一般的に使用されるメトリックです。

ケンドール距離は、2つのインデックスの項目の順序が2つのシーケンスで異なる回数をカウントします。シーケンスの1つが自明なシーケンス(1、2、...、n)である場合、i <jおよびpi(i)> pi(j)の回数を数えるだけで距離を測定できます。 。

このメトリックが気に入った場合(1つのシーケンスを1:nに変換するために完了する必要がある隣接アイテムのペアワイズ転置の最小数に相当します)、CRANで入手可能な私のパッケージRMallowで見つけることができます。この関数はAllSeqDistsと呼ばれます。次に例を示します。

library(RMallow)
# Create a matrix of sequences, each of length 5
datas <- matrix(c(1:5, 5:1, c(2, 1, 3, 4, 5), c(5, 1, 2, 3, 4), c(1, 2, 4, 5, 6), c(1, 5, 6, 2, 4)), nrow = 6, byrow = TRUE)
# Calculate all of their Kendall distances to the sequence (1, 2, 3, 4, 5)
datas <- SimplifySequences(datas)
dists <- AllSeqDists(datas)

また、スピアマンのメトリックを検討することもできます。
また、ランキングデータには、やりたいことに応じて、「マローズモデル」と呼ばれるプラグインしなければならないモデルのクラスがあります。

于 2012-10-15T03:27:20.737 に答える