平滑化されたデータからRの変曲点を見つける


13

私が使用して滑らかにしたいくつかのデータがありますloess。平滑化された線の変曲点を見つけたいです。これは可能ですか?私は誰かがこれを解決するための派手な方法を作っていると確信しています...つまり...結局のところ、それはRです!

使用する平滑化機能を変更しても問題ありません。それloessは私が過去に使用したものだからです。ただし、平滑化機能は問題ありません。変曲点は、使用する平滑化関数に依存することを理解しています。大丈夫です。変曲点を吐き出すのに役立つ平滑化関数を用意することから始めたいと思います。

私が使用するコードは次のとおりです。

x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)

ここに画像の説明を入力してください


3
変化点分析を見てみたいと思うかもしれません。
ニコ

このコード行は非常に便利です。infl <-c(FALSE、diff(diff(out)> 0)!= 0)しかし、このコードは上下に関係なくすべての転換点を見つけます。時系列でどのポイントが上に曲がり、どのポイントが下に曲がるかをどのように確認できますか?たとえば、上向きの転換点を緑に、下向きの転換点を赤にプロットして色を付けます。
user3511894

回答:


13

Rを使用して平滑化された曲線の変曲点を見つけるという観点からは、yの変化が符号を切り替える平滑化されたy値の場所を見つけるだけで済みます。

infl <- c(FALSE, diff(diff(out)>0)!=0)

次に、これらの変曲が発生するポイントをグラフに追加できます。

points(xl[infl ], out[infl ], col="blue")

統計的に意味のある変曲点を見つけるという観点から、@ nicoには、セグメント化回帰とも呼ばれる変化点分析を検討する必要があることに同意します。


これは仕事をややうまくやるようです。私はそれが理想的ではないと理解し、それが与える結果は確かに理想的ではありません。貢献してくれてありがとう。直線のようなものを除いて、ほとんどの場合をカバーします。
user164846

3
@ user164846、わかりません。直線には変曲点はありません。
ジャンV.アダムス14年

また、Savitzky-Golay-filtersなど、すぐに派生物を提供するスムーザーをご覧ください。ただし、スムーザーの選択は常にデータとアプリケーションによって決定されるべきであり、逆ではありません!
cbeleitesはモニカをサポートします14

4

ここにはいくつかのレベルで問題があります。

まず、黄土はたまたま1つだけ滑らかになり、多くの選択肢があります。楽観主義者は、ほぼすべての合理的なスムーザーが実際のパターンを見つけ、ほぼすべての合理的なスムーザーが実際のパターンに同意すると主張します。悲観論者は、これが問題であり、「合理的なスムーザー」と「実際のパターン」はここで相互に定義されていると主張しています。要するに、なぜ黄土で、なぜここで良い選択だと思いますか?選択は、単一のスムーザーまたはスムーザーの単一の実装ではなく(黄土または低黄という名前のすべてがソフトウェア全体で同じというわけではありません)、単一のスムージング(それが選択された場合でも)あなたのためのルーチン)。あなたはこの点に言及しますが、それはそれに対処していません。

より具体的には、おもちゃの例が示すように、転換点のような基本的な機能は、黄土では簡単に保持されない可能性があります(黄土も特定しません)。最初のローカルミニマムは消え、2番目のローカルミニマムは、表示する特定のスムースによって置き換えられます。1次ではなく2次導関数のゼロによって定義される変曲は、さらに気まぐれになることが予想されます。


レスを選んだのは、インターネットから入手したからです。私は一般にスムージングの経験が豊富なので、単にコードをオンラインで入手しました。より良い提案がありますか?
user164846

申し訳ありませんが、コメントがわかりません。スムージングの経験が豊富な場合は、ノイズを抑制しながら、どのスムーザーが屈曲を最もよく維持するかについて議論する必要があります。それは私には矛盾する目的のように思えますが、なぜ私が間違っているのかという技術的議論を聞いてうれしいです。
ニックコックス

申し訳ありませんが、私はmean't「経験不足」(笑)
user164846

1
そうですか。寿命は短く、考えられるすべての方法を試すことはできません。実際のデータは表示されませんが、玩具の例では、平滑化により識別可能な構造が削除される可能性があることを強調しています。
ニックコックス

2

この問題に対する多くの素晴らしいアプローチがあります。いくつかが含まれます。(1)-チェンジポイント-パッケージ(2)-セグメント化-パッケージ。ただし、変更点の数を選択する必要があります。(3)-earth-パッケージに実装されているMARS

バイアス/分散のトレードオフに応じて、すべてがわずかに異なる情報を提供します。-segmented-は一見の価値があります。異なる数の変化点モデルをAIC / BICと比較できます


1

おそらくfdaライブラリを使用できます。適切な連続関数を推定すると、2次導関数がゼロになる場所を簡単に見つけることができます。

FDAクラン

FDAイントロ


一次導関数のゼロは、最小値と最大値を定義します。第二の意味だと思います。「簡単」とは何ですか?数値的に区別する方法は複数あります。
ニックコックス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.