気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
移動平均をとるか、関数近似するのがよいかと思います。
sin 関数にノイズを加えたデータを用意して、試しています。
方法1: 移動平均で滑らかにする。
移動平均 を計算する。
python
1import numpy as np 2import pandas as pd 3import matplotlib.pyplot as plt 4 5x = np.linspace(0, np.pi * 4, 1000) 6y = np.sin(x) + np.random.randn(len(x)) * 0.3 # sin(x) + ノイズ 7 8plt.plot(x, y) 9plt.show() 10 11# 移動平均を計算する。 12y2 = pd.Series(y).rolling(window=10).mean() 13 14plt.plot(x, y2) 15plt.show()
方法2
データに対して、関数近似を行う。
Numpy.polyfit を使ったカーブフィッティング - Qiita
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4x = np.linspace(0, np.pi * 4, 1000) 5y = np.sin(x) + np.random.randn(len(x)) * 0.3 # sin(x) + ノイズ 6 7plt.plot(x, y) 8plt.show() 9 10# n 次式でフィッティングする。 11f = np.poly1d(np.polyfit(x, y, 10)) 12y2 = f(x) 13 14plt.plot(x, y2) 15plt.show()
投稿2019/06/13 09:13
総合スコア21956
0
ノイズを取り除くのであれば、フィルターを使うといいかと思います。フィルターにもいろいろあるそうですが、私は理屈がまあまあ簡単なカルマンフィルターがいいかと思います。カルマンフィルターはstatsmodelsというパッケージに実装されているので、以下のような感じで実現できるはずです。
import statsmodels.api as sm result = sm.tsa.UnobservedComponent(data)
いろいろとオプションが設定できるので、公式ドキュメントで確認してください。なお、フィルターはノイズを取り除くことが主眼なので、未知のデータに対する予測は今ひとつです。ただ、あらかじめモデルを仮定しなくて済むので、ご質問のような時系列データには重宝します。
投稿2019/06/13 12:34
総合スコア3376
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/18 03:05
2019/06/18 03:38
退会済みユーザー
2019/06/19 04:25
2019/06/19 04:32