O coeficiente de correlação usual (em 2d) mede quão bem um conjunto de pontos pode ser descrito por uma linha e, se sim, seu sinal nos diz se temos uma correlação positiva ou negativa. Mas isso pressupõe que as coordenadas dos pontos possam realmente ser interpretadas quantitativamente, por exemplo, como medidas.
Se você não pode fazer isso, mas ainda pode ordenar as coordenadas, existe o coeficiente de correlação de classificação : Ele mede quão bem os pontos podem ser descritos por uma função monotônica .
Desafio
Dada uma lista de pontos 2d, determine seu coeficiente de correlação de classificação .
Detalhes
- Você pode assumir que a entrada seja um número inteiro positivo (mas não precisa) ou qualquer outro valor "classificável".
- Os pontos podem ser tomados como uma lista de pontos, ou duas listas para as coordenadas x e y ou uma matriz ou matriz 2D, etc.
- A saída deve ser um ponto flutuante ou tipo racional, pois deve representar um número real entre 0 e 1.
Definições
Classificação: dada uma lista de números X=[x(1),...,x(n)]
, podemos atribuir um número positivo rx(i)
chamado classificação a cada entrada x(i)
. Fazemos isso classificando a lista e atribuindo o índice x(i)
na lista classificada rx(i)
. Se dois ou mais x(i)
tiverem o mesmo valor, usamos apenas a média aritmética de todos os índices correspondentes como classificação. Exemplo:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
O número 10
aparece duas vezes aqui. Na lista ordenada, ocuparia os índices 2
e 3
. A média aritmética desses é 2.5
que as fileiras são
Ranks: [4, 2.5, 2.5, 5, 1]
Coeficiente de correlação de classificação : [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
sejam os pontos dados em que cada um x(i)
e y(i)
é um número real (wlog. Você pode assumir que é um número inteiro). Para cada um i=1,...,n
, calculamos a classificação rx(i)
e ry(i)
de x(i)
e, y(i)
respectivamente.
Let d(i) = rx(i)-ry(i)
Ser a diferença de classificação e Let S
Ser a soma S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Então o coeficiente de correlação de classificação rho
é dado por
rho = 1 - 6 * S / (n * (n^2-1))
Exemplo
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
2.5
.