使用这些值:
double[] predicted = {2,2,3};
double[] expected = {2,1,3};
...下面的Directional Symmetry java算法让我100%尽管预测阵列和预期阵列之间的方向性差异:2,2 VS 2,1
double d = 0;
for (int i = 1; i < expected.length || i < predicted.length; i++) {
double ex_i = expected[i];
double ex_i_ = expected[i-1];
double pr_i = predicted[i];
double pr_i_ = predicted[i-1];
if(((ex_i-ex_i_)*(pr_i-pr_i_))>=0) {
d+=1;
}
}
return (100/(expected.length-1))*d;
定向对称是正常还是我的算法错了?
答案 0 :(得分:1)
阿。我发现这是一个参考:http://en.wikipedia.org/wiki/Directional_symmetry_%28time_series%29看起来当t_(i)= t_(i-1),d_i = 1,因为(t_i - t_(i-1))(t ^ i - t ^ (i-1))然后将为0.然而,这似乎是一个糟糕的测试,因为(t ^ i - t ^ (i-1)可能是非-zero,这将放弃这项措施。
我认为测试应该是:
如果(t_i - t_(i-1))具有与(t ^ i - t ^ (i-1))相同的符号或if(t_i - t_(i-1)) )=(t ^ i - t ^ (i-1))= 0,
然后d_i = 1,
否则
d_i = 0。
注意:我使用t ^不是指数,而是使用&#34; t&#34;,如维基百科链接。
准确地说:看起来你的算法按照那篇文章的描述工作,但我怀疑列出的文章提供了一个统计上有意义的测试。