1

私は2つの一連の値を持っています。それらをチャートで示すことにより、それらは非常に似ています (同じ動作をします。一方が成長すると、もう一方が成長し、一方が小さい値を持つと、もう一方が小さい値になります。ただし、一方が大きくなり、他は降順です)。重要なのは、それらが厳密に同じ値を持っていないことです。これら 2 つのグラフの一般的な動作に関心があります。

現在、両方のグラフで平均をとり、2 つの bool 配列を作成して比較しています。値が平均を上回っている場合、対応する bool[] の値は true、それ以外の場合は false です。次に、ハミング距離を使用して、これら 2 つの bool[] を比較します。このアルゴリズムは機能しますが、機能することを望んでいたほどではありません。(チャート間のすべての一致を検出するわけではありません)。

この操作を実行するためのより良いアルゴリズムのアイデアを持っている人はいますか?

4

3 に答える 3

2

2 つの数値リスト間の距離を計算する簡単な方法は、それらの差の 2 乗和を計算することです。これは統計でよく使われます。

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

しかし、基本的な問題は、そのような分析からどのようなステートメントを期待するかです。


もう 1 つの可能性は、2 つの系列間の相関係数を計算することです。の係数は+1、2 つの系列が 100% 適合することを意味し、2 つの系列0の間に明らかな関係がなく-1、互いに正反対であることを意味します。

于 2012-06-04T21:05:19.293 に答える
1

パフォーマンスを向上させるために、「ゼロ平均テスト」を使用します。信頼区間を使用して、2 つのサンプルの平均値が有意に異なるかどうかを確認します。

基本的に、それは次のもので構成されています。

  1. チャートのすべてのポイントの差を計算します
  2. これらの差の平均と標準誤差を計算します (次のポイントで必要です)
  3. 決定された信頼の信頼区間を計算します (95%、99%、...、必要な精度によって異なります)。

その間隔に値 0 が含まれている場合、グラフは同じです。

このアプローチの問題は、間隔を計算するために統計ライブラリが必要になることです。そのため、それがあなたの問題に適合するかどうかはわかりません

于 2012-06-04T21:03:09.770 に答える
0

現時点では、2 つの状態より大きいまたは小さい & 等しいだけを区別しています。

私は 1, 0 -1 を使用するか、より大きい、同じ、より小さいを表す列挙型を作成します。このようにして、3 つの状態すべてを区別できます。

于 2012-06-04T20:30:28.317 に答える