Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 14.12.16 00:32
Оценка:
Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.
Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.
В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.
Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.
Думал апроксимировать данные, а после отбросить те, что выходят по значению и интервалу. Но при этом скачок данных "пропадет" при переносе сенсора/отключении. То есть опять нужно на этот вариант что то лепить.
Или все же проще не получится?
Re: Алгоритм отсеивания неправильных данных
От: wildwind Россия  
Дата: 14.12.16 06:57
Оценка:
Здравствуйте, AlexNek, Вы писали:

Показал бы примеры что ли.
Re: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 14.12.16 07:36
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз

AN>Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.

Кривые бывают разные. Датчики выдают измерения с маркером времени или просто валят последовательно?
И если возможен перенос датчиков то после включения какое-то время обычно надо на прогрев (выход на номинал).
У некоторых приборов такой переходной процес до получаса может быть.

AN>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.

Ставте группами по три датчика.
Они при изменении температуры врут или просто после включения или в зависимости от входного питания?

AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

Гораздо лучше иметь оценку погрешности измерения.
Re: Алгоритм отсеивания неправильных данных
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 14.12.16 10:09
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

У меня два предложения:
1. Кластеризация
2. Если диапазон значений заранее известен и известна некоторая погрешность измерений, то можно просто отбрасывать данные "сильно" выходящие за пределы
3. Применить матстат и использовать доверительные инетрвалы, но это я плохо помню и тебе нужно разбираться самому
Sic luceat lux!
Отредактировано 14.12.2016 10:10 Kernan . Предыдущая версия . Еще …
Отредактировано 14.12.2016 10:09 Kernan . Предыдущая версия .
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 14.12.16 22:10
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AlexNek, Вы писали:


W>Показал бы примеры что ли.

Вообще-то специально хотел более обобщенно. Так как пойдут решения для показанных частей. И в принципе то "сложное" решение вроде как понятно. Интересуют самые простые и примитивные варианты. Хотя похоже прийдется делать "сложно"
Вся система располагается дома. Большинство — датчики температуры, есть и датчики влажности. Датчики посылают сигналы по радиоканалу специальному серверу, сервер выдаёт сигналы датчиков через определенное время.
Всё что можно — это прочитать данные сигналы.

Вот тут например типичный случай сбоя
  Дальше картинки


Здесь голубой линией показаны отличия между соседними выборками. Уровень 215 секунд это наиболее вероятное время между выборками, что и видно на гистограмме.
Взят тот же коричневый сигнал.

Гистограмма для голубой линии. По У колиство выборок, по Х время между выборками.
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 14.12.16 22:40
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, AlexNek, Вы писали:


AN>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

_>Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз
в основном температуру. Какая поверка дома?

AN>>Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.

_>Кривые бывают разные. Датчики выдают измерения с маркером времени или просто валят последовательно?
У меня данные только для: кода датчика, маркера времени и значения.
_>И если возможен перенос датчиков то после включения какое-то время обычно надо на прогрев (выход на номинал).
Всё на батарейках. Выглядят примерно так, только без дисплея

Искал вначале что то подобное с Z Wave, но ничего приличного и относительно дешевого не нашел.
_>У некоторых приборов такой переходной процес до получаса может быть.

AN>>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.

_>Ставте группами по три датчика.
У меня же не КИПовская лаба...
_>Они при изменении температуры врут или просто после включения или в зависимости от входного питания?
в зависимости от какой то непонятной фигни.

AN>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

_>Гораздо лучше иметь оценку погрешности измерения.
Дело не в этом.
например
вариант1: 0 минут — 10, 3мин-15, 5мин-13, 10мин-14. Для 5 минутного периода.
вариант2: 0 минут — 10, 3мин-12, 5мин- 8, 10мин-14. Для 5 минутного периода.
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 14.12.16 22:48
Оценка:
Здравствуйте, Kernan, Вы писали:

K>Здравствуйте, AlexNek, Вы писали:


AN>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

K>У меня два предложения:
K>1. Кластеризация
по каким критериям разбивать на кластеры?
K>2. Если диапазон значений заранее известен и известна некоторая погрешность измерений, то можно просто отбрасывать данные "сильно" выходящие за пределы
предположим дипазон 16..24, а вот 18 это для текущего момента верно или нет?
K>3. Применить матстат и использовать доверительные инетрвалы, но это я плохо помню и тебе нужно разбираться самому
Не подходит, в этом случае только одна величина фиговая. А у меня две.
Re: Алгоритм отсеивания неправильных данных
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 15.12.16 11:26
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

AN>Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.
AN>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.
AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.
AN>Думал апроксимировать данные, а после отбросить те, что выходят по значению и интервалу. Но при этом скачок данных "пропадет" при переносе сенсора/отключении. То есть опять нужно на этот вариант что то лепить.
AN>Или все же проще не получится?
Так Ransac, не?
<Подпись удалена модератором>
Re: Алгоритм отсеивания неправильных данных
От: Spinifex Россия https://architecture-cleaning.ru/
Дата: 15.12.16 12:41
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

AN>Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.
AN>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.
AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.
AN>Думал апроксимировать данные, а после отбросить те, что выходят по значению и интервалу. Но при этом скачок данных "пропадет" при переносе сенсора/отключении. То есть опять нужно на этот вариант что то лепить.
AN>Или все же проще не получится?

Как вариант:
Dixon's Q test
Re[3]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 15.12.16 14:29
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, kov_serg, Вы писали:


_>>Здравствуйте, AlexNek, Вы писали:


AN>>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

_>>Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз
AN>в основном температуру. Какая поверка дома?
Элементарно — рядом обычный термометр положи и сравнивай показания.

AN>>>Результаты измерения довольно хорошо могут описываться кривыми. Хотя возможен перенос датчика с места на место или вообще его отключение на некоторое время.

_>>Кривые бывают разные. Датчики выдают измерения с маркером времени или просто валят последовательно?
AN>У меня данные только для: кода датчика, маркера времени и значения.
_>>И если возможен перенос датчиков то после включения какое-то время обычно надо на прогрев (выход на номинал).
AN>Всё на батарейках. Выглядят примерно так, только без дисплея
AN>Image: rst-02252-305x305.jpg
AN>Искал вначале что то подобное с Z Wave, но ничего приличного и относительно дешевого не нашел.
_>>У некоторых приборов такой переходной процес до получаса может быть.
Тут куча источников тепла, батарейка радио модуль (в случаее помех может повышать мощность)

AN>>>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.

_>>Ставте группами по три датчика.
AN>У меня же не КИПовская лаба...
_>>Они при изменении температуры врут или просто после включения или в зависимости от входного питания?
AN>в зависимости от какой то непонятной фигни.
Постарайтесь локализовать фигню или меняйте датчики если фигня в них.

AN>>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

_>>Гораздо лучше иметь оценку погрешности измерения.
AN>Дело не в этом.
AN>например
AN>вариант1: 0 минут — 10, 3мин-15, 5мин-13, 10мин-14. Для 5 минутного периода.
AN>вариант2: 0 минут — 10, 3мин-12, 5мин- 8, 10мин-14. Для 5 минутного периода.

Тут не совсем понятно где стоят датчики, могут быть сквозняки, может падать солнце, или кошка пришла погреться.
как альтернатива: можно на микроконтроллере герлянду i2c датчиков температуры (8 LM75 например) повесить и по инфракрасному порту предавать, элементов минимум будет.
Отредактировано 15.12.2016 14:39 kov_serg . Предыдущая версия . Еще …
Отредактировано 15.12.2016 14:39 kov_serg . Предыдущая версия .
Re[3]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 15.12.16 14:43
Оценка:
Здравствуйте, AlexNek, Вы писали:



Это пила на хвостах сбои?
Вы датчики опрашиваете по очереди в течении 3х минут или сразу все каждые 3 минуты?
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 15.12.16 22:20
Оценка:
Здравствуйте, С3141566=Z, Вы писали:

СZ>Здравствуйте, AlexNek, Вы писали:

...
СZ>Так Ransac, не?
надо глянуть.
https://ru.wikipedia.org/wiki/RANSAC
хотя сразу смущает пункт 2
"функция M , позволяющая вычислить параметры θ модели P по набору данных из n точек"
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 15.12.16 22:23
Оценка:
Здравствуйте, Spinifex, Вы писали:

S>Здравствуйте, AlexNek, Вы писали:

...
S>Как вариант:
S>Dixon's Q test
надо тоже поближе разобраться
Re[4]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 15.12.16 22:43
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>>>Здравствуйте, AlexNek, Вы писали:


AN>>>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

_>>>Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз
AN>>в основном температуру. Какая поверка дома?
_>Элементарно — рядом обычный термометр положи и сравнивай показания.
Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда.


AN>>>>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.

_>>>Ставте группами по три датчика.
AN>>У меня же не КИПовская лаба...
_>>>Они при изменении температуры врут или просто после включения или в зависимости от входного питания?
AN>>в зависимости от какой то непонятной фигни.
_>Постарайтесь локализовать фигню или меняйте датчики если фигня в них.
Ну допустим фигня в "сервере", что это мне даёт? Хотя "сервер" менял, то же самое.
Мне нужно просто базу "почистить". При записи в базу отфильтровать видимо не получится.

AN>>>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

_>>>Гораздо лучше иметь оценку погрешности измерения.
AN>>Дело не в этом.
AN>>например
AN>>вариант1: 0 минут — 10, 3мин-15, 5мин-13, 10мин-14. Для 5 минутного периода.
AN>>вариант2: 0 минут — 10, 3мин-12, 5мин- 8, 10мин-14. Для 5 минутного периода.

_>Тут не совсем понятно где стоят датчики, могут быть сквозняки, может падать солнце, или кошка пришла погреться.

_>как альтернатива: можно на микроконтроллере герлянду i2c датчиков температуры (8 LM75 например) повесить и по инфракрасному порту предавать, элементов минимум будет.
Мне нужна нормальная коробочка на улицу, на батарии и в комнаты. Раньше думал "сервер" на расберри сделать, но получается дороже чем купить всё готовое, да и морока только с софтом в данном случае.
Re[4]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 15.12.16 22:54
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, AlexNek, Вы писали:


_>Image: sample.jpg


_>Это пила на хвостах сбои?

_>Вы датчики опрашиваете по очереди в течении 3х минут или сразу все каждые 3 минуты?
Пила один из видов сбоя.
Я к датчикам не имею никакого отношения. Всем занимается "сервер" — такая же маленькая коробочка.
"Сервер" автоматом отсылает данные — вот эти данные я и получаю. Каждый тип датчиков имеет свой интервал. Есть 3х минутные, есть 7-ми минутные.
Но тут уж какое железо есть такое и будет. Никаких измений не предвидится.
Re[5]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 16.12.16 07:02
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, kov_serg, Вы писали:


_>>>>Здравствуйте, AlexNek, Вы писали:


AN>>>>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

_>>>>Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз
AN>>>в основном температуру. Какая поверка дома?
_>>Элементарно — рядом обычный термометр положи и сравнивай показания.
AN>Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда.
Разберите один датчик и по даташитам посмотрите характеристики.

AN>>>>>В процессе анализа результатов выяснилось, что датчики иногда "врут" при этом данные появлются гораздо чаще или реже.

_>>>>Ставте группами по три датчика.
AN>>>У меня же не КИПовская лаба...
_>>>>Они при изменении температуры врут или просто после включения или в зависимости от входного питания?
AN>>>в зависимости от какой то непонятной фигни.
_>>Постарайтесь локализовать фигню или меняйте датчики если фигня в них.
AN>Ну допустим фигня в "сервере", что это мне даёт? Хотя "сервер" менял, то же самое.
AN>Мне нужно просто базу "почистить". При записи в базу отфильтровать видимо не получится.
Отфильтровать можно, но нужно точно понимать что вы хотите выкинуть. Возмите записи и поэкспериментируйте с фильтрами.
Самые простые н.ч. фильтры типа y[i+1]=q*y[i]+(1-q)*x[i]
где q=exp(ln(th)/n), n-число измерений на котором на котром история будет мельше порога точности например %0.1 th=0.001
берём энергию сигнала (дисперсию) (x[i+1]-x[i])^2 так же сглаживаем например на 4х измерениях и по порогу определяем когда звенит.
... вообще вариантом много. Можно построить модели и предсказывать значения, но у вас скорее всего датчики гавно.

AN>>>>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

_>>>>Гораздо лучше иметь оценку погрешности измерения.
AN>>>Дело не в этом.
AN>>>например
AN>>>вариант1: 0 минут — 10, 3мин-15, 5мин-13, 10мин-14. Для 5 минутного периода.
AN>>>вариант2: 0 минут — 10, 3мин-12, 5мин- 8, 10мин-14. Для 5 минутного периода.

_>>Тут не совсем понятно где стоят датчики, могут быть сквозняки, может падать солнце, или кошка пришла погреться.

_>>как альтернатива: можно на микроконтроллере герлянду i2c датчиков температуры (8 LM75 например) повесить и по инфракрасному порту предавать, элементов минимум будет.
AN>Мне нужна нормальная коробочка на улицу, на батарии и в комнаты. Раньше думал "сервер" на расберри сделать, но получается дороже чем купить всё готовое, да и морока только с софтом в данном случае.
Есть arduin-ы и датчики датчики +-0.5С или самому на какой-нибудь msp430 собрать и в герметичную распред коробку засунуть.
Re[3]: Алгоритм отсеивания неправильных данных
От: Dym On Россия  
Дата: 16.12.16 12:03
Оценка:
AN>Вот тут например типичный случай сбоя
Такое ощущение, что в определенный момент в канал передачи данных попадает высокочастотная составляющая. Может пила идет когда компрессор холодильника включается?

AN>Датчики посылают сигналы по радиоканалу

Несущую частоту покрутить можно?
Счастье — это Glück!
Re[6]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 16.12.16 22:25
Оценка:
Здравствуйте, kov_serg, Вы писали:


_>>>>>Здравствуйте, AlexNek, Вы писали:


AN>>>>>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

_>>>>>Что именно измеряют датчики и с какой точностью? когда поверку проходили в последний раз
AN>>>>в основном температуру. Какая поверка дома?
_>>>Элементарно — рядом обычный термометр положи и сравнивай показания.
AN>>Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда.
_>Разберите один датчик и по даташитам посмотрите характеристики.
А не нужно ничего разбирать, в дорогих сенсорах один датчик внешний "на шнурочке" точность измерения ± 0,5°C градуса в диапазоне -50…+110°C. Никаких данных нет, просто железный цилиндрик. Других для отопительной батареи просто нет.


_>Отфильтровать можно, но нужно точно понимать что вы хотите выкинуть. Возмите записи и поэкспериментируйте с фильтрами.

_>Самые простые н.ч. фильтры типа y[i+1]=q*y[i]+(1-q)*x[i]
_>где q=exp(ln(th)/n), n-число измерений на котором на котром история будет мельше порога точности например %0.1 th=0.001
_>берём энергию сигнала (дисперсию) (x[i+1]-x[i])^2 так же сглаживаем например на 4х измерениях и по порогу определяем когда звенит.
_>... вообще вариантом много. Можно построить модели и предсказывать значения, но у вас скорее всего датчики гавно.
Скорее всего сервер дуреет, но мне в принципе не играет роли кто дуреет. Всё что я могу изменить — это моя прога.
Бум пробовать...

AN>>>>>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

_>>>>>Гораздо лучше иметь оценку погрешности измерения.
AN>>>>Дело не в этом.
AN>>>>например
AN>>>>вариант1: 0 минут — 10, 3мин-15, 5мин-13, 10мин-14. Для 5 минутного периода.
AN>>>>вариант2: 0 минут — 10, 3мин-12, 5мин- 8, 10мин-14. Для 5 минутного периода.

_>>>Тут не совсем понятно где стоят датчики, могут быть сквозняки, может падать солнце, или кошка пришла погреться.

_>>>как альтернатива: можно на микроконтроллере герлянду i2c датчиков температуры (8 LM75 например) повесить и по инфракрасному порту предавать, элементов минимум будет.
AN>>Мне нужна нормальная коробочка на улицу, на батарии и в комнаты. Раньше думал "сервер" на расберри сделать, но получается дороже чем купить всё готовое, да и морока только с софтом в данном случае.
_>Есть arduin-ы и датчики датчики +-0.5С или самому на какой-нибудь msp430 собрать и в герметичную распред коробку засунуть.
Arduino отмёл сразу, как только нашел, что в последнюю малину можно грузить проги на шарпе, да и она мне больше понравилась как "серверный комп".
Если бы я занимался разработкой железа, то может быть что то и сфарганил. Была бы хоть среда разработки готовая. А так, гораздо проще купить готовое, а после просто докупать датчики.
Re[4]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 16.12.16 22:34
Оценка:
Здравствуйте, Dym On, Вы писали:

AN>>Вот тут например типичный случай сбоя

DO>Такое ощущение, что в определенный момент в канал передачи данных попадает высокочастотная составляющая. Может пила идет когда компрессор холодильника включается?
О внешних помехах, как то не думал. Но периодичность отсылки данных регулирует какой-то микроконтроллер и сбить его помехой именно таким образом как то маловероятно. Хотя может быть ошибка в его программе, которая инициируется помехой.

AN>>Датчики посылают сигналы по радиоканалу

DO>Несущую частоту покрутить можно?
Скорее всего нет, наверняка кварц какой нибудь стоит, да и везде всё одинаково изменить будет проблематично.
Re[7]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 17.12.16 06:23
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, kov_serg, Вы писали:



AN>>>Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда.

_>>Разберите один датчик и по даташитам посмотрите характеристики.
AN>А не нужно ничего разбирать, в дорогих сенсорах один датчик внешний "на шнурочке" точность измерения ± 0,5°C градуса в диапазоне -50…+110°C. Никаких данных нет, просто железный цилиндрик. Других для отопительной батареи просто нет.
AN>
Так вы температуру батарей измеряете. Датчики бывают аналоговые и цифровые, аналоговые измеряют или сопротивление или миливольты у них еще наводки могут быть.
Возьмите вольтметр и измерте потенциал на конца положив датчик в кружку с кипятком. Если датчики дешовые то скорее всего аналоговые.
Более того если вам надо много термопар то они делается в домашних условиях, только каждый калибровать придётся.

_>>... вообще вариантом много. Можно построить модели и предсказывать значения, но у вас скорее всего датчики гавно.

AN>Скорее всего сервер дуреет, но мне в принципе не играет роли кто дуреет. Всё что я могу изменить — это моя прога.
Сложилось впечатление что именно вы купили этот набор для измерений.

AN>Arduino отмёл сразу, как только нашел, что в последнюю малину можно грузить проги на шарпе, да и она мне больше понравилась как "серверный комп".

У меня сервером трудится такое http://www.orangepi.org/orangepiplus2/ в ней гигабит и сата (правда по усб шине). Но для простых задач arduino самое оно по функционал/цена

AN>Если бы я занимался разработкой железа, то может быть что то и сфарганил. Была бы хоть среда разработки готовая. А так, гораздо проще купить готовое, а после просто докупать датчики.

Может проще купить вменяемые датчики и потом не заниматься шаманством с привлечением фаз луны и высшей математики.
Для ардуино есть ide сделана всё так что даже школьники успешно справляются. Для быстроко прототипирования очень удобно. Там обычный C++ можно даже сказать C с классами. Но полёт фантазии не ограничивает.
Re[8]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 17.12.16 15:48
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, AlexNek, Вы писали:


AN>>Здравствуйте, kov_serg, Вы писали:



AN>>>>Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда.

_>>>Разберите один датчик и по даташитам посмотрите характеристики.
AN>>А не нужно ничего разбирать, в дорогих сенсорах один датчик внешний "на шнурочке" точность измерения ± 0,5°C градуса в диапазоне -50…+110°C. Никаких данных нет, просто железный цилиндрик. Других для отопительной батареи просто нет.
AN>>Image: sensor-extb.jpg
_>Так вы температуру батарей измеряете.
Еще улица и комната.
Датчики бывают аналоговые и цифровые, аналоговые измеряют или сопротивление или миливольты у них еще наводки могут быть.
_>Возьмите вольтметр и измерте потенциал на конца положив датчик в кружку с кипятком. Если датчики дешовые то скорее всего аналоговые.
_>Более того если вам надо много термопар то они делается в домашних условиях, только каждый калибровать придётся.
И куда я их потом засуну?

_>>>... вообще вариантом много. Можно построить модели и предсказывать значения, но у вас скорее всего датчики гавно.

AN>>Скорее всего сервер дуреет, но мне в принципе не играет роли кто дуреет. Всё что я могу изменить — это моя прога.
_>Сложилось впечатление что именно вы купили этот набор для измерений.
Так этот набор по всему миру продается, только софт там мне совсем не подходит. Но похоже "фильтр" у них там стоит на входе.

AN>>Arduino отмёл сразу, как только нашел, что в последнюю малину можно грузить проги на шарпе, да и она мне больше понравилась как "серверный комп".

_>У меня сервером трудится такое http://www.orangepi.org/orangepiplus2/ в ней гигабит и сата (правда по усб шине). Но для простых задач arduino самое оно по функционал/цена
Не хочу, я ни Яву ни Плюсы.

AN>>Если бы я занимался разработкой железа, то может быть что то и сфарганил. Была бы хоть среда разработки готовая. А так, гораздо проще купить готовое, а после просто докупать датчики.

_>Может проще купить вменяемые датчики и потом не заниматься шаманством с привлечением фаз луны и высшей математики.
_>Для ардуино есть ide сделана всё так что даже школьники успешно справляются. Для быстроко прототипирования очень удобно. Там обычный C++ можно даже сказать C с классами. Но полёт фантазии не ограничивает.
Датчики куда подключать? По кабелю? Требование было моё чтобы датчик был автономный + радиоканал. Для этого нужен контроллер с обвязкой. Хотя можно было взять и готовые датчики, но непонятно было как сделать "приемник"
Так а где особое шаманство? В общем всё работает, просто хочется большего. А так еще и с железом нужно было постоянно разбираться.
Re[3]: Алгоритм отсеивания неправильных данных
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 17.12.16 17:06
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Здравствуйте, С3141566=Z, Вы писали:


СZ>>Здравствуйте, AlexNek, Вы писали:

AN>...
СZ>>Так Ransac, не?
AN>надо глянуть.
AN>https://ru.wikipedia.org/wiki/RANSAC
AN>хотя сразу смущает пункт 2
AN>"функция M , позволяющая вычислить параметры θ модели P по набору данных из n точек"
Примени простейшую модель -- сколько то низких гармоник с коеффициентами (параметры модель) или аторегрессионку низкого порядка. , поскольку данные в целом гладкие, то она их схватит. Пилу выкинет, естественно.
<Подпись удалена модератором>
Re[9]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 21.12.16 07:54
Оценка:
Здравствуйте, AlexNek, Вы писали:

...
AN>Датчики куда подключать? По кабелю? Требование было моё чтобы датчик был автономный + радиоканал. Для этого нужен контроллер с обвязкой. Хотя можно было взять и готовые датчики, но непонятно было как сделать "приемник"
Есть куча готовых радио модулей https://uscr.ru/podklyuchenie-radio-modulya-nrf24-k-arduino https://geektimes.ru/post/255754/
даже gsm модем можно при желание подключть https://geektimes.ru/post/243033/ http://www.2150692.ru/faq/46-sim800l-arduino

AN>Так а где особое шаманство? В общем всё работает, просто хочется большего.

Как где шаманство, плавают показания вашиъ датчиков и вы валите это почему-то на софт. И хотите выличит это присыпками, чем не шаманство. Метрология шаманства не любит.
AN>А так еще и с железом нужно было постоянно разбираться.
А вы как хотели
Re: Алгоритм отсеивания неправильных данных
От: StanislavK Великобритания  
Дата: 21.12.16 15:20
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

Если есть модель (а судя по "измерения довольно хорошо могут описываться кривыми" она есть), то можно использовать фильтр калмана, он широко применяется, например, в робототехнике для определения местоположения:

Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, containing statistical noise and other inaccuracies, and produces estimates of unknown variables that tend to be more precise than those based on a single measurement alone


https://en.wikipedia.org/wiki/Kalman_filter

про него дофига есть всяких публикаций.
Сорри, если кто-то уже про это писал...
Re[10]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 21.12.16 22:06
Оценка: +1
Здравствуйте, kov_serg, Вы писали:

_>Здравствуйте, AlexNek, Вы писали:


_>...

AN>>Датчики куда подключать? По кабелю? Требование было моё чтобы датчик был автономный + радиоканал. Для этого нужен контроллер с обвязкой. Хотя можно было взять и готовые датчики, но непонятно было как сделать "приемник"
_>Есть куча готовых радио модулей https://uscr.ru/podklyuchenie-radio-modulya-nrf24-k-arduino https://geektimes.ru/post/255754/
_>даже gsm модем можно при желание подключть https://geektimes.ru/post/243033/ http://www.2150692.ru/faq/46-sim800l-arduino

То бишь клиентом тоже ардуино с 4 батарейками АА? По цене конечно дешевле малины, но сравнить по размеру с фирменным датчиком, где 2 ААА стоит

AN>>Так а где особое шаманство? В общем всё работает, просто хочется большего.

_>Как где шаманство, плавают показания вашиъ датчиков и вы валите это почему-то на софт. И хотите выличит это присыпками, чем не шаманство. Метрология шаманства не любит.
нифига сами датчики не плавают, а вот на помеху — да похоже. С каких пор датчики пилой стали плавать?

AN>>А так еще и с железом нужно было постоянно разбираться.

_>А вы как хотели
Купить, поставить и не трогать. С железом я давно завязал и совсем не хочется возвращаться.
Re[2]: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 21.12.16 22:21
Оценка:
Здравствуйте, StanislavK, Вы писали:

SK>Здравствуйте, AlexNek, Вы писали:


AN>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд.

AN>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.

SK>Если есть модель (а судя по "измерения довольно хорошо могут описываться кривыми" она есть), то можно использовать фильтр калмана, он широко применяется, например, в робототехнике для определения местоположения:

SK>

SK>Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, containing statistical noise and other inaccuracies, and produces estimates of unknown variables that tend to be more precise than those based on a single measurement alone


SK>https://en.wikipedia.org/wiki/Kalman_filter


SK>про него дофига есть всяких публикаций.

Что то припоминаю. Похоже можно будет использовать при вводе новых данных.
Но не хочу метаться туда/сюда. Я пока другое пробую.
Re[3]: Алгоритм отсеивания неправильных данных
От: B0FEE664  
Дата: 04.01.17 11:38
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Вообще-то специально хотел более обобщенно. Так как пойдут решения для показанных частей. И в принципе то "сложное" решение вроде как понятно. Интересуют самые простые и примитивные варианты.


Простой вариант — это линейный фильтр такой, например, см. программу

Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.
И каждый день — без права на ошибку...
Re[4]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 04.01.17 16:16
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.


Это не поможет. Получится просто огибающая пилы, но тоже пила.
Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала.

Самое простое взять четные и нечетные измерения по отдельности и будет красота
Re[5]: Алгоритм отсеивания неправильных данных
От: B0FEE664  
Дата: 04.01.17 17:41
Оценка:
Здравствуйте, kov_serg, Вы писали:

BFE>>Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.


_>Это не поможет. Получится просто огибающая пилы, но тоже пила.


В обобщенном случае — поможет, но вам нужно что-то другое, как мне кажется. Если у вас действительно одни отсчёты намного более частые, чем другие, то можно просто усреднить: сложите все отчёты за 20 минут и разделите на их количество — получите средний результат за 20 минут. Следующие 20 минут опять накапливаете данные и по истечении выдаёте среднее значение. Если за 20 минут у был один отсчёт — его и получите. Соответственно то, что датчик был перемещён, можно будет увидеть через 20 минут.

_>Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала.

Возможно, но и другие варианты исключить нельзя.

_>Самое простое взять четные и нечетные измерения по отдельности и будет красота

А нужна красота или реальность?
И каждый день — без права на ошибку...
Re[6]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 04.01.17 19:16
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>В обобщенном случае — поможет, но вам нужно что-то другое, как мне кажется. Если у вас действительно одни отсчёты намного более частые, чем другие, то можно просто усреднить: сложите все отчёты за 20 минут и разделите на их количество — получите средний результат за 20 минут. Следующие 20 минут опять накапливаете данные и по истечении выдаёте среднее значение. Если за 20 минут у был один отсчёт — его и получите. Соответственно то, что датчик был перемещён, можно будет увидеть через 20 минут.

Не поможет будет лютое усреднение все пики лягут. Более того будет отставание если в realtime делать, теже 20мин (~6 точек)

_>>Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала.

BFE>Возможно, но и другие варианты исключить нельзя.
Да фигня. Протокол с контрольной суммой http://wmrx00.sourceforge.net/Arduino/OregonScientific-RF-Protocols.pdf плавает очень специфично. Если бы были помехи
то правание было бы сколь-нибудь случайным. А тут 146% софт сбора данных кто-то по пьяни делал.

_>>Самое простое взять четные и нечетные измерения по отдельности и будет красота

BFE>А нужна красота или реальность?
Вы не поняли. Там измерения через 3мин 12сек (примерно 500 точек сутки) если мерить с шагом в 6мин всё зебест, но имеем два графика, причем разных О чем это говорит? Там два разных датчика и софт их не различает (либо разных фильтра). Другой вариант просто out of bounds местами.
Отредактировано 04.01.2017 19:18 kov_serg . Предыдущая версия .
Re: Алгоритм отсеивания неправильных данных
От: AlexNek  
Дата: 04.01.17 22:55
Оценка:
Что то тема опять всплыла, так что немного расскажу о продвижках.
Прежде всего тем кому интересна подобная тема, могу порекомендовать Math.NET Numerics
Там есть одна довольно удобная функция Interpolate.CubicSplineRobust, которая вроде справляется с данной задачей нормально.

однако, если глянуть на зеленные точки (они правда не все видны), где то я нахомутал видимо. Но пока нет времени разбираться.
В процессе экспериментов выяснилось, что "чистые" статистические методы не подходят — дают слишком большой разрешенный диапазон.

Делал так:
Вначале поделил данные на "хорошие" и "плохие". "Хорошие" (Ок), те в которых девиация интервала передачи входит в доверительный диапазон и "плохие"(Nok) — все остальные.
Затем "заполнял" "плохие" промежутки интеполированными данными и удалял плохие "данные". Ведь в итоге нужно обновить базу данных, не добавляя новых записей.
Re[2]: Алгоритм отсеивания неправильных данных
От: kov_serg Россия  
Дата: 05.01.17 15:06
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Что то тема опять всплыла, так что немного расскажу о продвижках.

...

o_O лёккое недоумение. Вы умеете строить не информативные графики. (на будующее оси и единицы измерения обязательны)

AN>однако, если глянуть на зеленные точки (они правда не все видны), где то я нахомутал видимо. Но пока нет времени разбираться.

AN>В процессе экспериментов выяснилось, что "чистые" статистические методы не подходят — дают слишком большой разрешенный диапазон.
...
Есть сглаживающие сплайны. Видимо вы их и применили. Но они вас не спасут. Просто попробуйте использовать точки через одну. Т.е. четные и нечетные измерения на два отдельных графика
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.