このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
データ内の外れ値を削除して可視化する
この例では、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チャネルに送信します。channelID と writeAPIKey を変更して、データをチャネルに送信します。
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);
参考
関数
thingSpeakRead|hampel(Signal Processing Toolbox)