mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-23 13:07:16 +00:00
rogueviz:: statistics:: kendall was not pushed
This commit is contained in:
parent
4272e6f9e4
commit
617f125632
@ -136,6 +136,58 @@ template<int dim1, int dim2> double small_kendall(const vector<pair<int, int>>&
|
|||||||
return tau / par;
|
return tau / par;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class T> double kendall(vector<pair<int, T>> allp) {
|
||||||
|
int maxx = 0;
|
||||||
|
for(const auto& a: allp) maxx = max(maxx, a.first);
|
||||||
|
maxx++;
|
||||||
|
|
||||||
|
vector<int> counts(maxx, 0);
|
||||||
|
vector<int> totals(maxx, 0);
|
||||||
|
|
||||||
|
double tau = 0;
|
||||||
|
sort(allp.begin(), allp.end(), [] (auto a, auto b) { return a.second < b.second; });
|
||||||
|
|
||||||
|
auto last = allp[0].second;
|
||||||
|
vector<int> to_add;
|
||||||
|
for(const auto& a: allp) {
|
||||||
|
if(a.second != last) {
|
||||||
|
for(auto ad: to_add) {
|
||||||
|
totals[ad]++;
|
||||||
|
for(int x=ad+1; x<maxx; x++) totals[x] += 2;
|
||||||
|
}
|
||||||
|
to_add.clear();
|
||||||
|
last = a.second;
|
||||||
|
}
|
||||||
|
|
||||||
|
to_add.push_back(a.first);
|
||||||
|
tau += hr::isize(to_add);
|
||||||
|
tau += totals[a.first];
|
||||||
|
}
|
||||||
|
int K = hr::isize(allp);
|
||||||
|
tau -= K;
|
||||||
|
|
||||||
|
double par = K * (K-1.);
|
||||||
|
println(hr::hlog, tau, " / ", par);
|
||||||
|
return tau / par;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if TEST
|
||||||
|
void test_kendall() {
|
||||||
|
if(1) {
|
||||||
|
vector<pair<int, int>> p = { {1,1}, {2,2}, {3,3}, {4,4} };
|
||||||
|
println(hlog, "p = ", stats::kendall(p));
|
||||||
|
|
||||||
|
vector<pair<int, int>> q = { {1,1}, {2,2}, {3,3}, {4,3} };
|
||||||
|
println(hlog, "q = ", stats::kendall(q));
|
||||||
|
|
||||||
|
vector<pair<int, int>> r = { {1,1}, {2,2}, {3,4}, {4,3} };
|
||||||
|
println(hlog, "r = ", stats::kendall(r));
|
||||||
|
|
||||||
|
vector<pair<int, int>> s = { {1,1}, {2,2}, {3,3}, {3,4} };
|
||||||
|
println(hlog, "s = ", stats::kendall(s));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user