1

我有两个系列的价值观。通过在图表中显示它们,它们非常相似(它们具有相同的行为,当一个增长时,另一个增长,当一个具有较小的值时,另一个具有较小的值;但是:可能会出现一个正在增长并且另一个是下降的)。重要的是它们没有严格相同的值。我对这两个图表的一般行为感兴趣。

现在,我通过在两张图上取平均值并构建 2 个 bool 数组来比较它们。当某个值高于平均值时,bool[] 中对应的值为真,否则为假。然后我使用汉明距离比较这两个 bool[]。该算法有效,但不如我希望的那么好。(它不会检测图表之间的所有匹配项)。

有没有人知道执行此操作的更好算法?

4

3 回答 3

2

计算两个数字列表之间距离的一种简单方法是计算它们之间差异的平方和。这在统计中经常使用。

double sum = 0.0;
for (int i = 0; i < N; i++) {
    double diff = a[i] - b[i];
    sum += diff*diff;
}

但最根本的问题是,你期望从这样的分析中得到什么样的陈述。


另一种可能性是计算两个系列之间的相关系数。系数+1表示两个系列拟合 100%,0表示这两个系列之间没有明显的关系,-1表示它们彼此完全相反。

于 2012-06-04T21:05:19.293 回答
1

为了获得更好的性能,我会使用“零均值检验”。它包括使用置信区间检查两个样本的平均值是否显着不同。

基本上,它包括:

  1. 计算图表所有点的差值
  2. 计算这些差异的平均值和标准误差(下一点需要)
  3. 计算确定置信度的置信区间(95%、99%、...,取决于您想要的精度)

如果该间隔包含值 0,则图表没有不同。

这种方法的问题是您需要一个统计库来计算间隔,所以我不确定它是否适合您的问题

于 2012-06-04T21:03:09.770 回答
0

现在你只区分大于或小于 & 等于的 2 个状态。

我会使用 1、0 -1 或创建一个枚举来表示更大、相同、更少。这样您就可以区分所有三种状态。

于 2012-06-04T20:30:28.317 回答