Odległość tau Kendalla

Odpowiedz Nowy wątek
2011-10-25 15:26
0

Czy był by w stanie wyjaśnić mi ktoś jak zaimplementować ten algorytm, bo mimo wielu usilnych prób wychodzi mi to dość marnie :/
Mój kod (fragment):

void kendall_tau_distance() {
    for(int i = 0; i < size; ++i)
        for(int o = i + 1; o < size; ++o)
            if (abs(sign(n1[i] - n1[o]) - sign(n2[i] - n2[o])) > 1)
                dist++;
}

Pozostało 580 znaków

2011-10-25 16:16
1

raczej ma być tak (trochę zgaduje, bo nie wiem co dokładnie masz w n1[] i n2[])

double kendall_tau_distance() {
    const double EPSILON = 0.000001;
    int positiveCount=0, negativeCount=0;
    for(int i = 0; i < size; ++i)
         for(int o = i + 1; o < size; ++o) {
             if ((n1[i] - n1[o])*(n2[i] - n2[o])) > EPSILON)
                 positiveCount++;
             else if ((n1[i] - n1[o])*(n2[i] - n2[o])) < EPSILON)
                 negativeCount++;
    return 2*(positiveCount-negativeCount)/(double)((size-1)*size);
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 4x, ostatnio: MarekR22, 2011-10-25 16:28

Pozostało 580 znaków

2011-10-25 16:46
0

Nie potrzebuję wartości double, mnie interesuje tylko odległość a nie współczynnik próby :) A w czasie O(n \cdot log n) bo wiki tłumaczy to w dość pokrętny sposób :/


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0