C# 快速图表近似比较算法

本文关键字:比较 算法 | 更新日期: 2023-09-27 18:36:12

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

现在,我正在通过对两个图进行平均值并构建 2 个布尔数组来比较它们。 当值高于平均值时,bool[] 中的相应值为 true,否则为 false。然后我使用汉明距离比较这两个布尔值[]。这个算法有效,但不如我希望它能工作。(它不会检测图表之间的所有匹配项)。

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

C# 快速图表近似比较算法

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

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

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


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

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

基本上,它包括:

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

如果该区间包含值 0,则图表没有区别。

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

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

我会使用 1、0 -1 或创建一个枚举来表示更大、相同、更小。 通过这种方式,您可以区分所有三种状态。