我的定向对称java算法是否正确?

时间:2014-12-08 19:14:19

标签: java algorithm

使用这些值:

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;

定向对称是正常还是我的算法错了?

1 个答案:

答案 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;,如维基百科链接。

准确地说:看起来你的算法按照那篇文章的描述工作,但我怀疑列出的文章提供了一个统计上有意义的测试。