2017-05-24 13 views
0

scipy.interpolate.UnivariateSplineを使用して3次スプライン曲線を作成しようとしていますが、スムージング係数のsに適切な値を見つけることができません。scipy.interpolate.UnivariateSplineに適切な平滑化係数を選択する方法

s=0で、各データポイントは結び目になり、曲線は各ポイントを通過します。一方、sの値が大きいと、2ノットのカーブを返します。

理想的には、私は2ノット以上のカーブでよりフィット感がよく、すべての点を通過するカーブは間違いないと思っています。私は約5ノットのカーブがフィット感と滑らかさのバランスが良いと信じています。

現在、私はUnivariateSplineでカーブを作り、ノットの数が約5になるまで滑らかさを調整しています。明らかに、これは最良のプロセスではありません。

データセットに基づいて平滑係数を決定するためのより良い計算方法または統計的方法がありますか?

答えて

1

scipyのダウンロード自体は、(ドキュメントから)このヒューリスティックを使用する:

陽性ノットの数を選択するために使用される係数を平滑化します。平滑条件が 満たされるまでノットの数が増加することになる。

sum((w[i] * (y[i]-spl(x[i])))**2, axis=0) <= s 

の推定値である1/[I] Wあれば良い値でなければならなし(デフォルト)、S = LEN(w)の場合y [i]の標準偏差。 0の場合、スプライン はすべてのデータ点を補間します。私の経験で

あなたはスプラインを使用しているとき、あなたはルックスのために行くとあなたが実際に後で使用したい機能に合うようにしようとしていないので、それは実際にはない場合、あなたはおそらく手でチェックする必要がありますされていますよく見える。私はおそらくちょうどデータを見て、そしてforループを使って3-4バージョンを作って、どれがきれいであるかを調べるでしょう:)

関連する問題