Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Supprimer et visualiser les valeurs aberrantes dans vos données

Cet exemple montre comment détecter et supprimer les valeurs aberrantes dans les données de votre canal ThingSpeak ™ à l'aide d'un filtre Hampel. Ce filtre est étroitement lié à un filtre médian et permet de supprimer les valeurs aberrantes d'un signal sans trop lisser les données.

Lire les données

Lisez la vitesse du vent stockée dans le canal 22641 à l'aide de la fonction thingSpeakRead.

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

Supprimer les valeurs aberrantes

Supprimez les valeurs aberrantes dans les données brutes en appliquant la fonction Hampel. Spécifiez la taille de la fenêtre sur 6, soit environ trois minutes de données de chaque côté de chaque échantillon dans la fenêtre de mesure. Ce paramètre permet d'avoir suffisamment de données pour décider si chaque point est une valeur aberrante. Étant donné que les données sont dynamiques, vos résultats peuvent varier en fonction de la météo actuelle. Spécifiez le nombre d'écarts types à 2. Si un point de données diffère de la médiane locale de plus de ce nombre, il est remplacé par la valeur médiane locale.

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

Visualiser les données

Tracez les données d'origine et les données filtrées. Afficher les valeurs aberrantes détectées et supprimées.

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

Écrire des données dans ThingSpeak

Envoyez le nombre de valeurs aberrantes détectées à un canal ThingSpeak à l'aide de la fonction thingSpeakWrite. Changez le channelID et le writeAPIKey pour envoyer des données à votre canal.

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

Voir aussi

Fonctions