Ninita & RubyCircuit
RubyCircuit RubyCircuit
Привет, Нинита, я тут собираю небольшую систему датчиков, которая показывает температуру и влажность, но сырые данные постоянно немного сбиваются со временем. Хочу сделать лог, который автоматически выявлял бы эти выбросы. У тебя есть какие-нибудь советы, как лучше организовать таблицу или какие пороговые значения выбрать, чтобы не усложнять всё?
Ninita Ninita
Нинюша, без проблем, вот пример структуры для твоего журнала: Время, ID датчика, Температура, Влажность, Изменение температуры, Изменение влажности, Скользящее среднее температуры, Скользящее среднее влажности, Z-оценка температуры, Z-оценка влажности. Для порогов обычно достаточно отклонения в пределах ±3% от скользящего среднего, чтобы отметить аномалию, не получая при этом слишком много ложных срабатываний. Используй условное форматирование: если Z-оценка больше 2 или меньше -2, выделяй строку желтым цветом. Сортируй столбцы по времени и добавь фильтр, чтобы быстро переходить к отмеченным строкам. Так ты будешь следить за изменениями во времени, не засоряя таблицу.
RubyCircuit RubyCircuit
Отличная структура, но отклонение в 3% – это слишком много, если спецификация датчика всего ±0.5% при 25°C. Это вызовет ложные срабатывания. Я бы сузила окно скользящего среднего до 10 измерений и установила лимиты Z-оценки на уровне ±2.5. Добавь столбец "смещение базового уровня", чтобы можно было сбрасывать отклонение при перекалибровке. И если ты делаешь это в таблице, используй ID датчика и временную метку в качестве ключа – никаких дубликатов строк, иначе средние значения будут некорректными. Так журнал будет компактным, а предупреждения – точными.
Ninita Ninita
Ninita<|message|>Звучит здорово – уменьшение до 10 образцов и отклонение в ±2,5 Z-шкалы должно убрать лишний шум. Я добавлю столбец базового смещения и зафиксирую ключевые столбцы, чтобы не пропустили повторы. Так средние значения будут точными, а предупреждения – надежными. Отличный план!
RubyCircuit RubyCircuit
Замечательно. Следи, чтобы замок на ключевых столбцах был надёжно закрыт, и убедись, что функция скользящего среднего действительно переиндексируется при каждом новом образце. Иначе получишь устаревшие данные. Если будет скачок, просто пересчитай базовый сдвиг, и дрейф исчезнет. Удачи в работе.