主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

データの平滑化と外れ値の検出

データの平滑化はデータ内の不要なノイズや動作を排除する手法を指し,外れ値の検出は他のデータと著しく異なるデータ点を特定します。

移動ウィンドウ法

移動ウィンドウ法は,通常,データ内の点の近傍を統計的に表すために,1回の処理を小さいバッチにして複数回データを処理する方法です。移動平均は一般的なデータ平滑化手法であり,データに沿ってウィンドウをスライドさせ,各ウィンドウ内の点の平均を計算します。これは,あるデータ点から次のデータ点への重要ではない変動を排除するために役立ちます。

たとえば,毎分間隔で3時間程度行う風速の測定について考えてみます。関数movmeanを5分のウィンドウサイズで使用して,高速の突風を平滑化します。

负载windData.mat分钟= 1:长度(速度);窗口= 5;meanspeed = movmean(速度、窗口);情节(分钟,速度,分钟,meanspeed)轴传奇(测量风速的“平均风速超过5分钟视窗”“位置”“最佳”)包含(“时间”) ylabel (“速度”

同様に,関数movmedianを使用すると,スライディングウィンドウで風速の中央値を計算できます。

medianspeed = movmedian(速度、窗口);情节(分钟,速度,分钟,medianspeed)轴传奇(测量风速的“风速中位数超过5分钟窗口”“位置”“最佳”)包含(“时间”) ylabel (“速度”

すべてのデータが移動ウィンドウ法による平滑化に適しているわけではありません。たとえば,ランダムなノイズを挿入して正弦波信号を作成します。

t = 1:0.2:15;sin(2* t) + cos(2* 0.5*t)噪声= A + 0.5*rand(1,长度(t));情节(t, t,声音吵醒)轴传奇(“原始数据”“数据”“位置”“最佳”

3のウィンドウサイズで移動平均を使用して,ノイズを含むデータを平滑化します。

窗口= 3;Amean = movmean(声音吵醒,窗口);情节(t, t Amean)轴传奇(“原始数据”“移动平均数-视窗大小3”

移動平均ではデータの全体的な形状が表示されますが,谷(局所的最小値)は正確に捕捉されません。谷の点は各ウィンドウの2つの大きな近傍に囲まれているため,平均はそれらの点の適切な近似とはなりません。ウィンドウサイズを大きくすると,平均では短いピークも排除されます。このタイプのデータの場合は,代替の平滑化手法を検討してください。

Amean = movmean(声音吵醒,5);情节(t, t Amean)轴传奇(“原始数据”“移动平均数-窗口面积5”“位置”“最佳”

一般的な平滑化法

関数smoothdataは,信号処理で使用される一般的な平滑化手法であるSavitzky-Golay法など,いくつかの平滑化オプションを提供しています。既定では,smoothdataはデータに応じて,手法に対し最適と推定されるウィンドウサイズを選択します。

Savitzky-Golay法を使用してノイズを含む信号声音吵醒を平滑化し,使用するウィンドウサイズを出力します。この手法では,movmeanと比較して,より適切な谷の近似が提供されます。

[Asgolay,窗口]= smoothdata(声音吵醒,“sgolay”);情节(t, t Asgolay)轴传奇(“原始数据”“Savitzky-Golay”“位置”“最佳”

窗口
窗口= 3

ロバストな洛斯法は,ノイズに加えて外れ値がデータに存在する場合に特に役立つ別の平滑化手法です。ノイズを含むデータに外れ値を挿入し,ロバストな洛斯を使用してデータを平滑化します。これにより,外れ値が排除されます。

声音吵醒(36)= 20;Arlowess = smoothdata(声音吵醒,“rlowess”5);情节(t,声音吵醒,t, Arlowess)轴传奇(“数据”‘强健’洛斯

外れ値の検出

データ内の外れ値によって,データ処理の結果や他の計算される量が著しく歪められることがあります。たとえば,移動中央値を使用して外れ値を含むデータを平滑化しようとすると、誤ったピークや谷が出現することがあります。

Amedian = smoothdata(声音吵醒,“movmedian”);情节(t,声音吵醒,t, Amedian)轴传奇(“数据”“移动平均”

外れ値が検出された場合,関数isoutlierは逻辑1を返します。声音吵醒で外れ値のインデックスと値を確認します。

TF = isoutlier(声音吵醒);印第安纳州=找到(TF)
印第安纳州= 36
Aoutlier =声音吵醒(印第安纳州)
Aoutlier = 20

関数filloutliersを使用すると,埋め込みメソッドを指定することによって,データ内の外れ値を置き換えることができます。たとえば,声音吵醒の外れ値にすぐ右の近傍値を埋め込みます。

Afill = filloutliers(声音吵醒,“下一个”);情节(t,声音吵醒,t, Afill)轴传奇(“带有异常值的噪声数据”“带有填充异常值的噪声数据”

非等間隔データ

すべてのデータが等間隔に配置された点で構成されているわけではなく,それがデータ処理の手法に影響することがあります。Airreg内のデータに対し不規則なサンプリング時間が含まれる,datetimeベクトルを作成します。时间ベクトルは,最初の30分間は毎分,その後の2日間は1時間ごとに取得されたサンプルを表します。

t0 = datetime(2014年,1,1,1,1,1);Timeminutes = sort(t0 + minutes(1:30));Timehours = t0 + hours(1:48);Time =[时间分钟时间小时];Airreg =兰德(1、长度(时间);情节(时间,Airreg)轴

既定では,smoothdataは等間隔の整数(この場合は1、2、…,78)について平滑化を行います。整数のタイムスタンプはAirregの点のサンプリングと対応していないため,最初の30分間のデータには平滑化後もノイズが含まれているように見えます。

Adefault = smoothdata (Airreg,“movmean”3);情节(时间、Airreg时间,Adefault)轴传奇(“原始数据”“使用默认样本点平滑数据”

smoothdatamovmean,およびfilloutliersを含むMATLAB®の多くのデータ処理関数ではサンプル点を指定でき,サンプリングの単位と頻度を基準にしたデータの処理が確保されます。Airregの最初の30分間のデータにある高周波数の変動を削除するには,时间のタイムスタンプに“SamplePoints”オプションを使用します。

Asamplepoints = smoothdata (Airreg,“movmean”小时(3),“SamplePoints”、时间);情节(时间、Airreg时间,Asamplepoints)轴传奇(“原始数据”“用样本点平滑数据”

参考

||||

関連するトピック