teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

文章の修正

2020/12/27 11:07

投稿

multinguish
multinguish

スコア6

title CHANGED
File without changes
body CHANGED
@@ -7,6 +7,7 @@
7
7
  [https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
8
8
  こちらのサイトを参考に、指数加重移動標準偏差による外れ値の検出と除外を計画しました。
9
9
  血流量の列をyに格納した状態で以下を実行しました。
10
+ ```ここに言語を入力
10
11
  df_csv_ewm = y.ewm(span=90).mean()
11
12
  ts=pd.Series(y)
12
13
  fig, ax=plt.subplots()
@@ -33,6 +34,7 @@
33
34
  ax.legend()
34
35
  return fig
35
36
  plot_outlier(ts)
37
+ ```
36
38
 
37
39
  これにより標準偏差から3.0倍以上外れているデータを外れ値として検出、描画を行うことができました。
38
40
  次に外れ値の除外を行おうと考えました。

4

文章の修正

2020/12/27 11:07

投稿

multinguish
multinguish

スコア6

title CHANGED
File without changes
body CHANGED
@@ -23,7 +23,6 @@
23
23
  ax.plot(ts, label='original')
24
24
  ax.plot(ewm_mean, label='ewma')
25
25
 
26
- # 標準偏差から 3.0 倍以上外れているデータを外れ値としてプロットする
27
26
  ax.fill_between(ts.index,
28
27
  ewm_mean - ewm_std * threshold,
29
28
  ewm_mean + ewm_std * threshold,
@@ -35,7 +34,7 @@
35
34
  return fig
36
35
  plot_outlier(ts)
37
36
 
38
- これにより外れ値検出描画を行うことができました。
37
+ これにより標準偏差から3.0倍以上外れているデータを外れとして検出描画を行うことができました。
39
38
  次に外れ値の除外を行おうと考えました。
40
39
  調べたところ「drop」「clear」などが使えるのではないかと思ったのですが、どの位置で実行すべきか構文の理解の問題かわかりませんでした。
41
40
  outlierの定義の次に

3

誤字の修正

2020/12/27 11:05

投稿

multinguish
multinguish

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,5 @@
1
1
  python初心者です。
2
2
 
3
- こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
4
- しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
5
- ご意見をいただければ幸いです。
6
3
  ### 前提・実現したいこと
7
4
  1秒ごとに皮下血流量の測定を行っております。
8
5
  血流低下をアラートするシステムの実装を目指しております。

2

具体的な操作の詳細を追記しました。

2020/12/27 11:04

投稿

multinguish
multinguish

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,52 @@
1
1
  python初心者です。
2
- [https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
2
+
3
3
  こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
4
4
  しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
5
- ご意見をいただければ幸いです。
5
+ ご意見をいただければ幸いです。
6
+ ### 前提・実現したいこと
7
+ 1秒ごとに皮下血流量の測定を行っております。
8
+ 血流低下をアラートするシステムの実装を目指しております。
9
+ 専用のセンサーにて血流量測定を行なっておりますが、体動によるノイズで流量がたまに異常高値となってしまうため、外れ値の検出と除外を行いたいと考えています。
10
+ [https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
11
+ こちらのサイトを参考に、指数加重移動標準偏差による外れ値の検出と除外を計画しました。
12
+ 血流量の列をyに格納した状態で以下を実行しました。
13
+ df_csv_ewm = y.ewm(span=90).mean()
14
+ ts=pd.Series(y)
15
+ fig, ax=plt.subplots()
16
+ ax.plot(ts, label="original")
17
+ ax.plot(df_csv_ewm, label="ewma")
18
+ ax.legend()
19
+
20
+ def plot_outlier(ts, ewm_span=90, threshold=3.0):
21
+ assert type(ts) == pd.Series
22
+ fig, ax = plt.subplots()
23
+
24
+ ewm_mean = ts.ewm(span=ewm_span).mean() # 指数加重移動平均
25
+ ewm_std = ts.ewm(span=ewm_span).std() # 指数加重移動標準偏差
26
+ ax.plot(ts, label='original')
27
+ ax.plot(ewm_mean, label='ewma')
28
+
29
+ # 標準偏差から 3.0 倍以上外れているデータを外れ値としてプロットする
30
+ ax.fill_between(ts.index,
31
+ ewm_mean - ewm_std * threshold,
32
+ ewm_mean + ewm_std * threshold,
33
+ alpha=0.2)
34
+ outlier = ts[(ts - ewm_mean).abs() > ewm_std * threshold]
35
+ ax.scatter(outlier.index, outlier, label='outlier')
36
+
37
+ ax.legend()
38
+ return fig
39
+ plot_outlier(ts)
40
+
41
+ これにより外れ値の検出と描画を行うことができました。
42
+ 次に外れ値の除外を行おうと考えました。
43
+ 調べたところ「drop」「clear」などが使えるのではないかと思ったのですが、どの位置で実行すべきか構文の理解の問題かわかりませんでした。
44
+ outlierの定義の次に
45
+ ts.drop(outlier)など入力するのですが
46
+
47
+ AttributeError: 'Series' object has no attribute 'drop'
48
+
49
+ と表示されてしまいます。
50
+
51
+ 外れ値を除外した状態のグラフ描画、また除外した状態にして他値との相関評価ができればと考えております。
52
+ ご意見いただければ幸いです。

1

参照元に飛べるようにしました

2020/12/27 11:03

投稿

multinguish
multinguish

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  python初心者です。
2
- https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B
2
+ [https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
3
3
  こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
4
4
  しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
5
5
  ご意見をいただければ幸いです。