ランク相関係数

通常の相関係数(2d)は、1セットのポイントを1行でどれくらい記述できるかを測定します、もしあれば、その兆候は、我々が正の相関か負の相関かを示す。しかし、これは、ポイントの座標が実際には例えば測定値として定量的に解釈されることを前提としている。

順位相関係数単調増加/em>関数を使用します。

チャレンジ

2次元点のリストが与えられれば、順位相関係数を決定する。

詳細

  • 入力は正の整数(しかし、そうする必要はありません)または他の「ソート可能な」値とみなすことができます。
  • ポイントはポイントのリスト、またはx座標とy座標の2つのリスト、または行列や2次元配列などとすることができます。
  • 出力は浮動小数点型または有理型でなければなりません。実数は0から1の間でなければなりません。

定義

Rank: Given a list of numbers
X=[x(1),...,x(n)] we can assign a positive number
rx(i) called rank to each entry
x(i). We do so by sorting the list and assigning the
index of x(i) in the sorted list rx(i).
If two or more x(i) have the same value, then we just
use the arithmetic mean of all the corresponding indices as rank.
例:

          List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]

数字 10 が2回表示されます。ソートされたリストでは、 2
3 のインデックスを占有します。これらの算術平均は 2.5
ですので、ランクは

         Ranks: [4, 2.5, 2.5, 5, 1]

Rank Correlation Coefficient: Let
[(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))] be the given
points where each x(i) and y(i) is a real
number (wlog. you can assume it is an integer) For each
i=1,...,n we compute the rank
rx(i) and ry(i) of x(i) and
y(i) respectively.

d(i)= rx(i)-ry(i)ランク差とし、 S
S = d(1)^ 2 + d(2)^ 2 + ... + d(n)^ 2
である。次に、順位相関係数 rho は次のように与えられます。

rho = 1 - 6 * S/(n * (n^2-1))

x   y   rx              ry   d      d^2
21  15  4               5   -1      1
10  6   2&3 -> 2.5      2    0.5    0.25
10  7   2&3 -> 2.5      3   -0.5    0.25
25  11  5               4    1      1
3   5   1               1    0      0

    rho = 1 - 6 * (1+0.25+0.25+1)/(5*(5^2-1)) = 0.875   
ベストアンサー

MATL, 33 bytes

,it7#utb,&S]2XQw)]-Us6*1GntUq*/_Q

オンラインで試す!

説明

,           % Do...twice
  it        %   Input a numeric vector. Duplicate
  7#u       %   Replace each element by a unique integer label (1, 2, ...)
  t         %   Duplicate
  b         %   Bubble up: moves original numeric vector to top
  ,         %   Do...twice
    &S      %     Sort and push the indices of the sorting
  ]         %   End
            %   The above do...twice loop gives the sorted indices (as
            %   explained in the challenge text) for the current input
  2XQ       %   Compute average for entries with the same integer label
  w         %   Swap: move vector of integer labels to top
  )         %   Index. This gives the rank vector for the current input
]           % End
-           % Subtract the two results. Gives d
Us          % Square each entry, sum of vector. S
6*          % Times 6. Gives 6*S
1G          % Push first input vector again
n           % Number of entries. Gives n
t           % Duplicate 
Uq          % Square, minus 1. Gives n^2-1
*           % Times. Gives n*(n^2-1)
/           % Divide. Gives 6*S/(n*(n^2-1))
_Q          % Negate, plus 1. Gives 1-6*S/(n*(n^2-1))

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です