Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

データ内の外れ値を削除して視覚化する

この例では、Hampel フィルターを使用してThingSpeak™チャネルデータ内の外れ値を検出して削除する方法を示します。このフィルターはメディアン フィルターと密接に関連しており、データを過度に平滑化することなく信号から異常値を除去するのに役立ちます。

データの読み取り

thingSpeakRead関数を使用して、チャネル22641 に保存されている風速を読み取ります。

data = thingSpeakRead(12397,'NumPoints',80,'Fields',2,'outputFormat','table');

外れ値の削除

関数 Hampel を適用して、生のデータ中にある外れ値を削除します。ウィンドウ サイズを 6、つまり測定ウィンドウ内の各サンプルの両側に約 3 分のデータを指定します。この設定により、各点が外れ値であるかどうかを判断するための十分なデータが得られます。データは動的であるため、結果は現在の天候によって異なる場合があります。標準偏差の数を 2 に指定します。データ ポイントがローカル中央値とこの数値を超えて異なる場合、そのデータ ポイントはローカル中央値に置き換えられます。

windowSize = 6;
numMedians = 2;
[filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);

データの視覚化

元のデータとフィルター処理されたデータをプロットします。検出および削除された外れ値を表示します。

plot(data.Timestamps,data.WindSpeedmph);
hold
plot(data.Timestamps,filteredData);
plot(data.Timestamps(outliers),data.WindSpeedmph(outliers),'Marker','Square','Linestyle','None','Color','black');
ylabel('Wind Speed (mph)');
legend('Orginal Data', 'Filtered Data','Outliers');
Current plot held

ThingSpeakへのデータの書き込み

thingSpeakWrite関数を使用して、検出された外れ値の数をThingSpeakチャネルに送信します。データをチャネルに送信するには、channelIDwriteAPIKeyを変更します。

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);

参考

関数