確率密度関数の局所的な最大値を見つけようとしています(Rのdensity
方法を使用して見つけました)。大量のデータがあるため、単純な「周辺を見る」方法(ポイントを見て周辺の最大値であるかどうかを確認する方法)を実行できません。さらに、フォールトトレランスやその他のパラメータを使用して「辺りを見る」のではなく、スプライン補間のようなものを使用してから1次導関数の根を見つける方がより効率的で一般的です。
だから、私の質問:
- からの関数が与えられた場合
splinefun
、どのメソッドが局所最大値を見つけますか? - を使用して返される関数の導関数を見つける簡単/標準的な方法はあり
splinefun
ますか? - 確率密度関数の極大値を見つけるためのより良い/標準的な方法はありますか?
参考のために、以下は私の密度関数のプロットです。私が使用している他の密度関数の形式は似ています。私はRには慣れていないが、プログラミングには慣れていないので、必要なものを達成するための標準ライブラリまたはパッケージがあるかもしれません。
ご協力いただきありがとうございます!!
これに対する私のnは2 ^ 15であり、データにはポイントごとのレベルで多くの分散があるようです。近傍法(を介して
—
アーロンレビン
msExtrema {msProcess}
)に似た方法を使用して最大/最小ファインダーを作成しようとしましたが、許容値設定で再生することにより、すべてではなく、いくつかの最大値のみを識別できました。
のコードを見ると、これはパッケージからの
—
ワンストップ
msExtrema
単純なラッパーです。ローカル最小値ではなく、ローカル最大値のみが必要な場合は、直接使用する方が良いでしょう。デフォルトを使用してもすべての極大値が見つからない理由がわかりません。また、2 ^ 15 = 32768は、効率が大きな心配になるほど大きくないはずです。peaks
splus2R
span=3
splinefunによって返される関数には、デフォルトで0の引数「deriv」があります。一次導関数にderiv = 1を設定します。
—
シアン
うーん、
—
慣れ
peaks
バグmax.col
があるようです。デフォルト設定のを使用して呼び出します。これは、ties.method = "random"
タイをランダムに解除するだけでなく、タイを宣言するための相対許容誤差1e-5を設定します。前者は紛らわしく、後者は間違いなくここで欲しいものではありません。peaks()
また、strict
不十分に文書化されたパラメータを取り、関数のコードを見て、何もしません。ああ、ユーザー提供のソフトウェアライブラリの喜び!ただし、プログラミングに
density()
すべてのデータの密度を推定するのではなく、n値の密度を推定します。ここで、nはデフォルト値n = 512のユーザー指定パラメーターです