質問編集履歴

5

文章の修正

2020/12/27 11:07

投稿

multinguish
multinguish

スコア6

test CHANGED
File without changes
test CHANGED
@@ -15,6 +15,8 @@
15
15
  こちらのサイトを参考に、指数加重移動標準偏差による外れ値の検出と除外を計画しました。
16
16
 
17
17
  血流量の列をyに格納した状態で以下を実行しました。
18
+
19
+ ```ここに言語を入力
18
20
 
19
21
  df_csv_ewm = y.ewm(span=90).mean()
20
22
 
@@ -68,6 +70,8 @@
68
70
 
69
71
  plot_outlier(ts)
70
72
 
73
+ ```
74
+
71
75
 
72
76
 
73
77
  これにより標準偏差から3.0倍以上外れているデータを外れ値として検出、描画を行うことができました。

4

文章の修正

2020/12/27 11:07

投稿

multinguish
multinguish

スコア6

test CHANGED
File without changes
test CHANGED
@@ -48,8 +48,6 @@
48
48
 
49
49
 
50
50
 
51
- # 標準偏差から 3.0 倍以上外れているデータを外れ値としてプロットする
52
-
53
51
  ax.fill_between(ts.index,
54
52
 
55
53
  ewm_mean - ewm_std * threshold,
@@ -72,7 +70,7 @@
72
70
 
73
71
 
74
72
 
75
- これにより外れ値検出描画を行うことができました。
73
+ これにより標準偏差から3.0倍以上外れているデータを外れとして検出描画を行うことができました。
76
74
 
77
75
  次に外れ値の除外を行おうと考えました。
78
76
 

3

誤字の修正

2020/12/27 11:05

投稿

multinguish
multinguish

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,6 @@
1
1
  python初心者です。
2
2
 
3
3
 
4
-
5
- こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
6
-
7
- しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
8
-
9
- ご意見をいただければ幸いです。
10
4
 
11
5
  ### 前提・実現したいこと
12
6
 

2

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

2020/12/27 11:04

投稿

multinguish
multinguish

スコア6

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

1

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

2020/12/27 11:03

投稿

multinguish
multinguish

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  python初心者です。
2
2
 
3
- 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
+ [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]
4
4
 
5
5
  こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
6
6