0

単純な形状マッチング アルゴリズムを実装して、各プロットが 100 を超えるノードを持つ同様のプロット (12,000 エントリを超える) のデータベースに対して、わずか 8 点 (x, y) から補間されたプロットを一致させる最良の方法は何でしょうか。データベースには 6 つのカテゴリのプロット (6 つの異なる条件下で測定された信号) があり、主な目的は適切なカテゴリを見つけることです (つまり、すべてのカテゴリに対して比較する約 2000 のプロットがあります)。

8 ノード プロットは測定からの実際のデータを表しますが、今のところ、データベースからランダム プロットを選択し、そこから 8 ポイントを選択して、ガウス乱数ジェネレーターを使用して塗りつぶすことで、これをシミュレートしています。

データベースからの各プロットに対して 8 ノード プロットの形状を比較するために、非線形最小二乗法を実装する最良の方法は何でしょうか? これに役立つと知っている C++ ライブラリはありますか?

最小二乗法で使用するために 8 ノード プロットの実際の式 (f(x)) を見つける必要がありますか、それとも gsl ライブラリからの補間など、要求された点で補間を使用するだけで十分でしょうか?

4

1 に答える 1

1

実際の公式を知らなくても、最小二乗法を使用できます。すべてのプロットが同じ x 値で測定されている場合、これは簡単です。通常の方法で合計を計算するだけです。

ここに画像の説明を入力

ここで、y_i は 8 ノード プロットの点、sigma_i は点の誤差、Y(x_i) は y_i と同じ x 位置でのデータベースからのプロットの値です。すべてのプロットが同じ x 値で測定されている場合、これが些細なことである理由がわかります。

そうでない場合、Y(x_i) は、データベースからのプロットを関数でフィッティングするか (わかっている場合)、ポイント間を補間することによって (わからない場合) 取得できます。最も簡単な補間は、ポイントを直線で結び、必要な x_i で直線の値を見つけることです。他の補間の方がうまくいくかもしれません。

私の分野では、ROOTを使用してこのようなことを行います。ただし、scipyには優れた関数のコレクションがあり、Python を使用することに問題がなければ、簡単に使い始めることができます。

発生する可能性のある大きな問題の 1 つは、2 つのプロットが独立していないことです。ウィキペディアは、この場合のマクネマーの検定を提案しています。

考えられるもう 1 つの問題は、テスト プロットに多くの情報がないため、結果が統計的変動の影響を大きく受けるということです。言い換えれば、テスト ポイントが 8 つしかなく、2 つのプロットが一致する場合、基になる関数が本当に同じかどうか、または 8 つのポイントが (エラー バー内で) 飛び回っているだけかどうかをどのように知ることができますか?データベースからのプロットのように -- まったくの偶然です! … 残念ながら、あなたは本当に知りません。したがって、よくテストされたプロットには偽陽性 (純度が低い) が含まれ、たまたまうまくテストされなかったプロットの一部は、おそらく実際には良い一致 (低効率) でした。

これを解決するには、より多くのポイントを含むテスト プロットを使用するか、他の情報を取り込む必要があります。他の理由で一致しないことがわかっているデータベースからプロットを捨てることができれば、それは大いに役立ちます。

于 2013-05-09T09:11:19.550 に答える