Elimine y visualice valores atípicos en sus datos
Este ejemplo muestra cómo detectar y eliminar valores atípicos en los datos de su canal ThingSpeak™ utilizando un filtro Hampel. Este filtro está estrechamente relacionado con un filtro de mediana y ayuda a eliminar valores atípicos de una señal sin suavizar demasiado los datos.
Leer datos
Lea la velocidad del viento almacenada en el canal 22641 usando la función thingSpeakRead
.
data = thingSpeakRead(12397,'NumPoints',80,'Fields',2,'outputFormat','table');
Eliminar valores atípicos
Elimine los valores atípicos en los datos sin procesar aplicando la función Hampel
. Especifique el tamaño de la ventana como 6, o aproximadamente tres minutos de datos a cada lado de cada muestra en la ventana de medición. Esta configuración permite disponer de datos suficientes para decidir si cada punto es un valor atípico. Dado que los datos son dinámicos, sus resultados pueden variar según el clima actual. Especifique que el número de desviaciones estándar sea 2. Si un punto de datos difiere de la mediana local en más de este número, se reemplaza con el valor de la mediana local.
windowSize = 6; numMedians = 2; [filteredData,outliers]=hampel(data.WindSpeedmph,windowSize,numMedians);
Visualizar datos
Trazar los datos originales y los datos filtrados. Muestra los valores atípicos detectados y eliminados.
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
Escribir datos en ThingSpeak
Envíe el número de valores atípicos detectados a un canal ThingSpeak usando la función thingSpeakWrite
. Cambia el channelID
y el writeAPIKey
para enviar datos a tu canal.
channelID=17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,sum(outliers),'WriteKey',writeAPIKey);
Consulte también
Funciones
thingSpeakRead
|hampel
(Signal Processing Toolbox)