Сложение частей и деление на общее количество не всегда дает реальное представление о среднем значении, и этот проект доказывает это.

Фон

С начальной школы нас учили среднему, медиане и моде. Сложите значения вместе (1 + 3 = 4), разделите на общее количество (2) и Та-да!! (mean = 2) Среднее значение представляет собой само себя. Однако для группы инженеров на юге Чили этого числа было недостаточно.

В красивых долинах Патагонии спрятано несколько удаленных резервуаров с водой, которые по требованию подают воду в электрические генераторы. Учитывая их крайнюю удаленность, обслуживание в лучшем случае затруднено. Текущий процесс мониторинга работоспособности системы включает в себя отправку инженера на объект и его перезвон с оценкой «палец вверх» / «палец вниз».

Чтобы уменьшить количество таких поездок, на месте размещают IoT, чтобы сообщать об уровне воды в соответствующих резервуарах. Если все пойдет по плану, данные с этих датчиков не только исключат ненужные поездки, но и помогут спрогнозировать оптимальные графики технического обслуживания.

Данные

После некоторого сбора и обработки результаты IoT можно увидеть ниже. Зеленые точки представляют собой перезарядку бака, фиолетовые точки — разрядки, а синие — области относительного равновесия.

Значения по оси x представляют даты в декабре, начиная с 2018–12–06 и заканчивая 2018–12–18.

Проблема

Чтобы понять состояние генераторов, инженеры хотят знать среднюю скорость разряда (литров в час) за определенный период времени (в данном случае 6 дней). На первый взгляд это кажется простым: рассчитайте скорость разряда для каждой фиолетовой линии, сложите эти значения, разделите на общее количество и та-да!!

Однако при ближайшем рассмотрении каждой из этих фиолетовых линий можно заметить, что они обычно заканчиваются участками синего цвета. Области, выделенные синим цветом, указывают на то, что уровень воды колебался, и, что еще больше усложняет ситуацию, точная граница между фиолетовым и синим определяется только заранее определенным порогом. Это означает, что нет точной науки о том, когда начались или закончились выделения, это скорее обоснованное предположение.

Скорость разряда рассчитывается по:

 (Starting Volume — Ending Volume ) / Time Elapsed 

В большинстве случаев раздел уравнения Истекшее время измеряется минутами, а для окончательного расчета требуется скорость в час. Эта большая экстраполяция делает конечное число очень чувствительным к колебаниям, наблюдаемым как в начале, так и в конце разряда.

Решение

Чтобы приспособиться к этому, подход состоит в том, чтобы уменьшить влияние начальной/конечной точки путем разделения линии нагнетания на несколько секций, а затем рассчитать среднюю скорость нагнетания для всех секций. Таким образом, данные в центре разряда (где не было никаких колебаний) повлияют на линию «наилучшего соответствия» и улучшат окончательное число.

Последний вопрос

Сколько фрагментов необходимо?

Получается много. На приведенном ниже графике показана зависимость расчетной средней скорости разряда (ось Y) от количества секций (ось X), на которые были разделены данные. Можно отметить, что при очень небольшом количестве секций расчетный расход значительно варьировался, варьируя везде от -28 (л/ч) до -4 (л/ч) . По мере того, как данные разбивались на все более и более мелкие фрагменты, влияние колебаний уровня воды и обоснованных догадок уменьшалось, и стала проявляться более постоянная скорость сброса.

Если бы мы не разделили данные, расчеты были бы абсолютно неверными!

В производственной версии этого проекта число секций 10 000 и выше было выбрано как надежное и устойчивое к системному шуму. Урок усвоен, даже некоторые из самых элементарных математических операций могут быть усложнены при работе с несовершенными системами в несовершенном мире.

Чтобы увидеть полную реализацию, как бессерверный сервис AWS, так и пояснительные блокноты Jupyter доступны по адресу https://github.com/krapes/Iot-Monitoring.