Имя: Пароль:
1C
 
Промахи и выбросы в продажах
0 Прохожий
 
05.02.26
14:33
Нужно как-то оценить среднюю продажу в месяц. "Нормальная" продажа идет 1-2 объема, но бывают перекупы, которые иногда берут по 20-50 объемов и т.п. Нужно как-то отделить такие продажи и опираться только на "нормальные" продажи. Есть какой-то математический аппарат или просто в запросе собирать по регистраторам при условии что количество продажи меньше какого-то значения? Цель найти средний размер "нормальной" продажи, умножить на число продаж в месяц и понять потребность в месяц без учета выбросов.
Не все меряется штуками, поэтому "количеством меньше 5" результат получить не удается.
Слишком сложная математика будет пугать народ.
1 Krendel
 
05.02.26
14:39
Мат ожидание и дисперсия
2 Прохожий
 
05.02.26
14:39
(1) Оно понятно.
3 Прохожий
 
05.02.26
14:40
А может уже есть какой новомодный ИИ?
4 Krendel
 
05.02.26
14:40
Если УТ - вешаешь 1 часть на одно соглашение, другую на другое
5 Krendel
 
05.02.26
14:41
Любой платный ИИ тебе сделает анализ по твоим данным
6 Прохожий
 
05.02.26
14:54
(4) Никто ничего вешать не будет. Только роботы. Последняя надежда человечества.
7 Прохожий
 
05.02.26
14:54
(5) платный может. Разово. А мне надо вечный.
8 d4rkmesa
 
05.02.26
15:07
(0) Что-то кажется, любой продажник должен об этом больше рассказать. Медианные значения исключают всплески, по идее. Можно попробовать потыкать "анализ данных и прогнозирование" (своеобразный и крайне непопулярный функционал в платформе) https://its.1c.ru/db/v8310doc#bookmark:dev:TI000000700 .
9 Krendel
 
05.02.26
15:13
(6)(7) Ну вот и ответ ;-)
10 Галахад
 
гуру
05.02.26
16:15
(8) + 1. Посчитать медиану не сложная математика.
11 АгентБезопасной Нацио
 
05.02.26
16:17
Стандартный XYZ-анализ. Т.е. (1).
12 АгентБезопасной Нацио
 
05.02.26
16:36
хм. Был уверен, что в языке запросов есть, а оказывается - только в СКД
13 АгентБезопасной Нацио
 
05.02.26
17:19
ВЫБРАТЬ
    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    ТоварыНаСкладах.ВНаличии КАК ВНаличии
ПОМЕСТИТЬ ВТ_
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    ТоварыНаСкладах.Период > &Период
    И ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    И ТоварыНаСкладах.Номенклатура В(&Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_.Номенклатура КАК Номенклатура,
    СУММА(ВТ_.ВНаличии) КАК СуммаЕдиниц,
    СУММА(1) КАК КоличествоПродаж,
    СУММА(ВТ_.ВНаличии) / СУММА(1) КАК Среднее
ПОМЕСТИТЬ ВТ_Средние
ИЗ
    ВТ_ КАК ВТ_

СГРУППИРОВАТЬ ПО
    ВТ_.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_.Номенклатура КАК Номенклатура,
    СУММА((ВТ_.ВНаличии - ВТ_Средние.Среднее) * (ВТ_.ВНаличии - ВТ_Средние.Среднее)) КАК ДКвСумма
ПОМЕСТИТЬ ВТ_ДКв
ИЗ
    ВТ_ КАК ВТ_
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Средние КАК ВТ_Средние
        ПО ВТ_.Номенклатура = ВТ_Средние.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТ_.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Средние.Номенклатура КАК Номенклатура,
    ВТ_Средние.СуммаЕдиниц КАК СуммаЕдиниц,
    ВТ_Средние.КоличествоПродаж КАК КоличествоПродаж,
    ВТ_Средние.Среднее КАК Среднее,
    ВТ_ДКв.ДКвСумма/ВТ_Средние.КоличествоПродаж КАК Дисперсия,
    SQRT(ВТ_ДКв.ДКвСумма/ВТ_Средние.КоличествоПродаж) КАК СтдОткл
ИЗ
    ВТ_Средние КАК ВТ_Средние
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДКв КАК ВТ_ДКв
        ПО ВТ_Средние.Номенклатура = ВТ_ДКв.Номенклатура
14 АгентБезопасной Нацио
 
05.02.26
17:21
Ну и дальше фильтруй продажи меньше среднее+стдОткл.
Хотя, конечно, это всё для стандартного распределения, не для продаж...
В общем, задачка интересная "на подумать"...
15 АгентБезопасной Нацио
 
05.02.26
17:36
Наверное, лучше так:
ВЫБРАТЬ
    ТоварыНаСкладах.Номенклатура КАК Номенклатура,
    ТоварыНаСкладах.ВНаличии КАК ВНаличии
ПОМЕСТИТЬ ВТ_
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    ТоварыНаСкладах.Период > &Период
    И ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    И ТоварыНаСкладах.Номенклатура В(&Номенклатура)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_.Номенклатура КАК Номенклатура,
    ВТ_.ВНаличии КАК СуммаЕдиниц,
    СУММА(1) КАК КоличествоПродаж
//ПОМЕСТИТЬ ВТ_Средние
ИЗ
    ВТ_ КАК ВТ_

СГРУППИРОВАТЬ ПО
    ВТ_.Номенклатура,
    ВТ_.ВНаличии
Упорядочить ПО     
    ВТ_.Номенклатура,
    СУММА(1) УБЫВ
    
Потом соединить с собой, и посчитать, какие количества продаж дают заданное качество сервиса (ну, скажем, 90% продаж) и фильтровать по верхней границе.
Завтра для себя сделаю, закину...
16 Злопчинский
 
06.02.26
01:30
Провести кластеризацию. Дальше танцевать от нее.
17 АгентБезопасной Нацио
 
06.02.26
12:29
Посчитал. Для распределения с двумя ядрами (у меня продажи по каналам "мелкий опт" и "крупный опт" примерно равны по частоте продаж, а количество в них сильно разное) результаты некрасивые.
18 АгентБезопасной Нацио
 
06.02.26
12:39
(16) На двух кластерах сработало нормально. Но я знал, что у меня два кластера. На трех и выше уже хуже.
В общем, зависит от модели данных.
19 Прохожий
 
09.02.26
06:22
Вот, теперь узнаю Мисту. Всем хорошего дня!
20 АгентБезопасной Нацио
 
09.02.26
07:10
(19) тоже "узнаю мисту". Вместо того, чтоб рассказать о своей модели данных, плотности распределения, и "что пробовал-что получилось", ТС "пожелал хорошего дня"...
21 Прохожий
 
09.02.26
09:54
Это вопрос более риторический чем насущный. База пустая, планов громадье... Сейчас таких почти не осталось. Все дохнут. А мы вот рождаться надумали.
22 Прохожий
 
09.02.26
09:55
Я больше думаю что если будет две три продажи по позиции за месяц ни одна математика дисперсию не определит.
23 Прохожий
 
09.02.26
09:56
Там минимальное количество точек надо.
24 АгентБезопасной Нацио
 
09.02.26
11:02
(22) Дисперсию стоит считать, если продажи распределяются по нормальному закону. А это далеко не факт.
Но даже по трем точкам ты можешь посчитать центроид одного кластера (это будет среднее арифметическое), и убрать "самую дальнюю точку". Пересчитать центр, и если он изменился "достаточно мало" - успокоиться, иначе -повторять
25 Прохожий
 
09.02.26
11:22
(24) Затея. Сейчас потекут продажи, буду ковырять потихоньку.
26 Михаил Козлов
 
09.02.26
18:33
Если Вам на самом деле нужен прогноз, то была конференция Рарус, где один чел из Новосибирска неплохо обозрел, чего можно добиться анализом временных рядов. Если коротко, то процентов около 20 получается.
Конференция была около года назад. Может сохранилась ссылка на нее. Если очень нужно, пришлите на мыло в профиле или сами поищите.
Правда статистики у Вас ещё нет.
27 АгентБезопасной Нацио
 
09.02.26
19:41
(26) Насколько я понял, задача не столько "прогноз" или "анализ временных рядов", сколько "очистка данных". Конференция Рарус - это не 24 года, где рядами Фурье пытались аппроксимировать? Если да, то оно, имхо, не стоит ни просмотра, ни применения...
28 Прохожий
 
10.02.26
06:42
(26) Благодарю, это интересно. Скинул запрос в почту.
29 АгентБезопасной Нацио
 
10.02.26
07:53
(28) Рарус, Течдэй (там в разные годы было), Сергей Смирнов
https://rarus.ru/video/550163/
https://rarus.ru/events/20240718-1c-rarustechday-2024-651536/
30 АгентБезопасной Нацио
 
10.02.26
07:58
(25) Написал вчера очистку описанным способом. На месячных данных более-менее работает сходится на 3-5 итерациях. На полугодовых  сходимость плохая, разъезжается (там у некоторых данных "четыре горба"). ML-щика насмотренного надоть... Может, зашлю сына в альма-матерь евоную...
31 kuromanlich
 
10.02.26
09:41
(30) зачем такой анализ на полугодие делать? пытаться найти сверх растянутый по времени оптовый спрос инициированный перекупом можно, но зачем? думаю если месяц и 2 месяца норм отрабатывают, остальное надо именно в этих порциях анализировать и представлять
32 Lama12
 
10.02.26
09:51
(0) Извиняюсь, может офтоп. В таких задачах мне всегда интересно кто ее поставил и как он будет проверять результат? Если это маркетологи, то пусть и скажут как считать. Если это поставил директор, то какая разница как оно будет работать? Все равно будут отклонения и заказчик скажет что сделали ерунду. Понимаю если самому интересно, но как-то за счет компании свои интересы удовлетворять 😎.

Так кто заказчик, и как будет проверять?
33 АгентБезопасной Нацио
 
10.02.26
10:01
(31) По идее, на большом интервале выбросы должны очищаться лучше ("обычных продаж" должно быть больше). А по факту получается, что "изменилось покупательское поведение", и распределение "по длинному периоду" неконгруэнтно распределению "по короткому периоду".
Эх, год назад препод который нам статистическую радиотехнику читал - умер. (Я по его совету свой кластерный анализ в конце 90-х писал. Нашел тогда неожиданно связь между болезнью и национальностью) И у меня просто не осталось знакомых, с кем посоветоваться. Да и теория с тех пор вперед семимильными шагами ушла, а я отстал...
34 АгентБезопасной Нацио
 
10.02.26
10:12
(32) проверяют как всегда, "на глаз".
"тут же видно, что это выбросы"© Но "иногда" на "выбросы" говорят "ну так и должно быть, это X, он у нас раз в месяц всегда так берет".
Я вот поговорил с манагерами,  они даже предыдущую статистику объяснили - была сеть, которая брала для двух форматов магазинов разными квантами, а в октябре у них реструктуризация (продались федералам), и они  сменили размеры закупок... В общем, "в каждой избушке свои погремушки".
Для двухмерного анализа (канал/размер), кстати, результаты гораздо лучше получаются. В трехмерном еще лучше, но дольше.
35 Прохожий
 
10.02.26
13:10
(32) Проверять будет совесть. А идея держать склады под средние продажи. Оверстоки надо понять. Может штрафы кому повыписать.А себе - премии.
36 Прохожий
 
10.02.26
13:13
(34) Х надо исключить. Его продажи отдельно обеспечат.
37 Lama12
 
10.02.26
13:14
(35)А, понятно. Сам и управляющий бизнесом. Ну тогда норм.
38 Прохожий
 
10.02.26
13:18
Все рулят товар куда хотят -это же хуже чем один по формуле?
39 АгентБезопасной Нацио
 
10.02.26
14:20
(35) >>держать склады под средние продажи
У среднего человека одна сиська и одно яйцо ©
а регулярные выбросы - они входят в "средние продажи". Поэтому либо и по ним усреднять, либо второй признак.
>> Х надо исключить.
Для этого надо определить, что этот "всегдашний X" - существует.
>>Оверстоки надо понять.
угу. Я для этого в обработке сделал даже "список исключенных продаж". Т.е. список выкинутых при очистке продаж.
Но в общем случае,  нужно знать модель продаж по каждому товару. А модели - разные, даже в одной товарной подгруппе. А оптимальная консенсусная кластеризация - np-полная задача. Поэтому "по формуле" не кластеризуешь в общем случае. Может, я и усложняю (привык к решению "в общем виде")...
Программист всегда исправляет последнюю ошибку.