Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2019, 10:45   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
Восклицание Статистический анализ, поиск "сильных" отклонений

Здравствуйте.
Сейчас сижу пишу статистический анализатор, постараюсь сильно в подробности не вдаваться.
Общая задача - анализ ресурса автомобильных запчастей на основании длительности времени их работы до выхода из строя (пробег или моточасы).
Есть выборка данных, условный поршень на 100 000 автомобилях, то есть у меня есть информация о длительности работы 100 000 одинаковых поршней. Разумеется от поршня к поршню количественный показатель времени работы будет разниться, НО должен находиться в какой-то "обойме", и моя текущая задача понять, как искать отклонения от этой "обоймы".

Тут проблема в том, что я не знаю, что считать этой "обоймой".
Разница между максимальным и минимальным - точно не вариант, потому что и то и другое может находиться за пределами этой "обоймы", или что само собой разумеющееся - составляет весь диапазон на графике по вертикали.
Значение разницы первого и последнего значения выборки покажет общую тенденцию, но чем ближе эта разница к нулю - тем больше у меня "отклонений".
Я может чего не знаю (более чем скорее всего), но нужно искать вертикальные границы на графике.
Визуально (на графике) эти границы видны "интуитивно", но как их найти математически ?

Приложил изображение с графиком, для простоты восприятия выборка 100 элементов.
Данные получены рандомом в диапазоне 13 000 +- 2 500 - та самая "обойма", или разброс, в 5 000. Зелёными линиями нарисована эта "обойма". Для наглядности одно значение было вручную отредактировано так, что бы оно было вне "обоймы", 17 000.
Суть в том, что я генерировал эти данные, и задавал разброс в 5 000, поэтому "обойма" мне известна.
Мне же нужно сделать так, что бы я мог рассчитать неизвестную мне "обойму", когда данные, согласно тематике проведения анализа, были получены из разных независимых источников.

Итоговый вопрос (повторяю и перефразирую): как рассчитывать "нормальный" разброс, от которого мне потом нужно будет искать отклонения ?
Изображения
Тип файла: jpg chart.jpg (36.5 Кб, 67 просмотров)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 03.10.2019, 11:10   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Считаете среднее квадратичное отклонение( "нормальный" разброс) всё что больше 3-х отклонений (правило 3-х сигм) то выходит за порог.
Код:
function StdDev(a: TArrayReal):Real;Overload;
var i: Integer;
Var_ , Mean_:Real;
begin
Mean_:=0;
Var_:=0;
for i:=0 to Length(a)-1 do
 begin
 Mean_:=Mean_+a[i];
 Var_:=Var_+a[i]*a[i];
 end;
Result:=Sqrt(Var_/Length(a)-(Mean_/Length(a))*(Mean_/Length(a)));
end;
Не обязнательно брать 3-сигмы можно меньше можно больше.

Второй способ ищем локальные максимумы и минимумы.
Локальный это у
Код:
if (a[i-1]<[i]) and (a[i]>[i+1]) then LocalMax:=i;
if (a[i-1]>[i]) and (a[i]<[i+1]) then LocalMin:=i;
Далее загоняете их в массивы сортируете по возрастанию. Крайние N-точек назначаете выбросами. Или можно взять медиану от этих массивов и плюс минус 10% от медианы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 04.10.2019, 18:27   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Добавлю своё:
Цитата:
были получены из разных независимых источников
Не следует считать, что таким образом полученные данные имеют одинаковый вес.
Возможно, что данных от каждого источника достаточно, что бы провести дополнительный анализ и ввести понятие веса источника (0.0 -:- 1.0).
После этого данные источника корректируются на вес и далее все данные обрабатываются вместе (от всех источников), например, как в посте выше.

PS: Например обнаружится, что дисперсия данных одного источника заметно отличается от таковой для данных другого источника.
Вес - это и уровень доверия источнику и учёт различных методик оценки, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.10.2019, 23:26   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
После этого данные источника корректируются на вес и далее все данные обрабатываются вместе (от всех источников), например, как в посте выше
У меня немного наоборот. Я провожу анализ разброса, для выяснения этого самого веса и построения градаций. В случае с запчастями - речь о разных условиях эксплуатации одной и той же детали, с поправкой на брак.
С браком тоже не всё так однозначно. Например должно быть 60 000, в ряде присутствует условно 100 - брак или агрессивные условия эксплуатации. Первое должно быть минимальным, второе должно встречаться местами.
Что до уровня доверия к источнику - это вообще капец как сложно будет нормализовать, потому то предполагаемый источник - широкие народные массы, которые ведут бортовой журнал. Это в работе отмечено как отдельная проблема, которую необходимо разрешать уже в процессе проведения анализа.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 08.10.2019 в 23:29.
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23