kendall-tau

Run Settings
LanguageC
Language Version
Run Command
// Works great, you have to specify the number of elements though ! #include <math.h> #include <stdio.h> void concordant_discordant_rties_sties(float var1[], float var2[], int* concordant, int* discordant, int* r_ties, int* s_ties); double kendal_tau_cor(float var1[], float var2[]); int main() { float a[] = {6,6,4,6,8,6,8,4,4,6,6,8,8,8,8,8,8,4,4,4,4,8,8,8,8,4,4,4,8,6,8,4}; float b[] = {160.0,160.0,108.0,258.0,360.0,225.0,360.0,146.7,140.8,167.6,167.6, 275.8,275.8,275.8,472.0,460.0,440.0,78.7,75.7,71.1,120.1,318.0,304.0, 350.0,400.0,79.0,120.3,95.1,351.0,145.0,301.0,121.0}; printf("Value of kendall tau is: %.25lf \n", kendal_tau_cor(a,b)); return 0; } void concordant_discordant_rties_sties(float var1[], float var2[], int* concordant, int* discordant, int* r_ties, int* s_ties) { int i=0, j=0; int m=0, n=0, o=0, p=0; int number_of_elements= 32; //var1.elems; while (i != (number_of_elements - 1)) { j = i + 1; while (j != number_of_elements) { if (var1[j] > var1[i] && var2[j] > var2[i]) { m+=1; } else if (var1[j] < var1[i] && var2[j] < var2[i]) { m+=1; } else if (var1[j] > var1[i] && var2[j] < var2[i]) { n+=1; } else if (var1[j] < var1[i] && var2[j] > var2[i]) { n+=1; } else if (var1[j] == var1[i] && var2[j] != var2[i]) { o+=1; } else if (var1[j] != var1[i] && var2[j] == var2[i]) { p+=1; } j+=1; } i+=1; } *concordant=m; *discordant=n; *r_ties=o; *s_ties=p; } double kendal_tau_cor(float var1[], float var2[]) { int q, r, s, t; concordant_discordant_rties_sties(var1, var2, &q, &r, &s, &t); return (q-r)/sqrt((q+r+s)*(q+r+t)); }
Editor Settings
Theme
Key bindings
Full width
Lines