Анализ данных и прогнозирование в 1С – Общая статистика
Цитаты из ИТС («Руководство разработчика» — «Глава 14. Анализ данных и прогнозирование»):
«Механизм анализа данных и прогнозирования позволяет реализовывать в прикладных решениях различные средства для выявления закономерностей, которые обычно скрываются за большими объемами информации».
В механизме анализа данных и прогнозирования реализовано несколько типов анализа данных:
- Общая статистика
- Поиск ассоциаций
- Поиск последовательностей
- Кластерный анализ
- Дерево решений
Общая статистика — представляет собой механизм для сбора общей информации о данных, находящихся в полученном источнике данных. Этот тип анализа предназначен для предварительного исследования анализируемой информации. Анализ показывает ряд характеристик дискретных и непрерывных полей. При выводе отчета в табличный документ заполняются круговые диаграммы для отображения состава полей.
Типы переменных (данных) в статистике:
- Номинальные данные – данные в виде имени, ярлыка или условного кода. Пример, пол, мужской или женский.
- Порядковые данные – порядок данных, в котором большее значение, соответствует большему проявлению какого-либо признака. Могут быть ранжированы. Но интервал между значениями не может быть выражен количественно. Пример, степень ожога.
- Интервальные данные – данные расположены в осмысленном порядке, имеющие равный интервал между измерениями. Пример, температурная шкала.
- Непрерывные данные – могут принимать любое значение или в определенном диапазоне. Пример, рост, ожидается что он будет в диапазоне [150; 190].
- Дискретные данные – определенные значения, между которыми существуют четкие границы. Пример, количество детей, 1, 2, 3 ребенка, но не 3,5.
Меры центральной тенденции:
- Частота – как часто встречается (повторяется) значение в данных.
- Среднее – сумма всех значений деленное на их количество.
- Мода – чаще всего встречающиеся значения.
- Медиана – значение которое, делит упорядоченные множество пополам (значение из середины данных). Если значений четное количество, тогда используется среднее от двух ближайших значений.
Более подробнее см. источники информации, указанные в конце.
Меры изменчивости данных:
- Размах – разница между самым большим и самым маленьким значением.
- Квартили – три точки (значения) которые делят множество на четыре равные части.
- Межквартильный размах – отсекаются 25% самых маленьких и больших значений, для остальных считается размах, то есть размах для 50 % данных из середины.
- Отклонение – разность конкретного значения от среднего.
- Дисперсия – Сумма квадратов отклонений, деленная на их количество.
- Стандартное отклонение – квадратный корень из дисперсии.
Более подробнее см. источники информации, указанные в конце.
В качестве анализируемых данных, будет использоваться набор данных «Supermarket sales» — который представляет из себя, исторические данные о продажах в трех разных филиалах супермаркета, за 3 месяца.
Создана простая конфигурация, где основным объектом, является регистр сведений «Данные продаж», в который с помощью обработки «Загрузка данных из файла CSV», были загружены данные из анализируемого набора.
В наборе данных присутствуют следующие колонки:
| Invoice id | Идентификатор счет-фактуры |
| Branch | Филиал супермаркета (3 филиала, возможные значения A, B и C) |
| City | Город |
| Customer type | Тип клиента, «Members» клиент использующий членскую карту и «Normal», без членской карты |
| Gender | Пол покупателя |
| Product line | Вид номенклатуры, «Electronic accessories», «Fashion accessories», «Food and beverages», «Health and beauty», «Home and lifestyle», «Sports and travel» |
| Unit price | Цена за единицу товара |
| Quantity | Количество |
| Tax | 5% налог |
| Total | Сумма с налогом |
| Date | Дата (с January 2019 по March 2019) |
| Time | Время |
| Payment | Вид оплаты (3 возможных оплаты — Cash, Credit card and Ewallet) |
| COGS | Стоимость проданных товаров |
| Gross margin percentage | Процент валовой прибыли |
| Gross income | Валовый доход |
| Rating | Рейтинг покупателя |
Для получения общей статистики, создана обработка «Анализ данных общая статистика», на форму которой, в табличный документ, выводится результат анализа.
Код обработки:
#Область ОбщаяСтатистика
АнализДанныхОбщаяСтатистика = Новый АнализДанных;
АнализДанныхОбщаяСтатистика.ТипАнализа = Тип("АнализДанныхОбщаяСтатистика");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеПродаж.ДатаПокупки КАК ДатаПокупки,
| ДанныеПродаж.ВремяПокупки КАК ВремяПокупки,
| ДанныеПродаж.Филиал КАК Филиал,
| ДанныеПродаж.Город КАК Город,
| ДанныеПродаж.ТипКлиента КАК ТипКлиента,
| ДанныеПродаж.Пол КАК Пол,
| ДанныеПродаж.ВидНоменклатуры КАК ВидНоменклатуры,
| ДанныеПродаж.ВидОплаты КАК ВидОплаты,
| ДанныеПродаж.Цена КАК Цена,
| ДанныеПродаж.Количество КАК Количество,
| ДанныеПродаж.Сумма КАК Сумма,
| ДанныеПродаж.Налог КАК Налог,
| ДанныеПродаж.Стоимость КАК Стоимость,
| ДанныеПродаж.ПроцентВаловойПрибыли КАК ПроцентВаловойПрибыли,
| ДанныеПродаж.ВаловойДоход КАК ВаловойДоход,
| ДанныеПродаж.РейтингКлиента КАК РейтингКлиента
|ПОМЕСТИТЬ ВТ_ДанныеПродаж
|ИЗ
| РегистрСведений.ДанныеПродаж КАК ДанныеПродаж
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ДанныеПродаж.ДатаПокупки КАК ДатаПокупки,
| ВТ_ДанныеПродаж.ВремяПокупки КАК ВремяПокупки,
| ВТ_ДанныеПродаж.Филиал КАК Филиал,
| ВТ_ДанныеПродаж.Город КАК Город,
| ВТ_ДанныеПродаж.ТипКлиента КАК ТипКлиента,
| ВТ_ДанныеПродаж.Пол КАК Пол,
| ВТ_ДанныеПродаж.ВидНоменклатуры КАК ВидНоменклатуры,
| ВТ_ДанныеПродаж.ВидОплаты КАК ВидОплаты,
| ВТ_ДанныеПродаж.Цена КАК Цена,
| ВТ_ДанныеПродаж.Количество КАК Количество,
| ВТ_ДанныеПродаж.Сумма КАК Сумма,
| ВТ_ДанныеПродаж.Налог КАК Налог,
| ВТ_ДанныеПродаж.Стоимость КАК Стоимость,
| ВТ_ДанныеПродаж.ПроцентВаловойПрибыли КАК ПроцентВаловойПрибыли,
| ВТ_ДанныеПродаж.ВаловойДоход КАК ВаловойДоход,
| ВТ_ДанныеПродаж.РейтингКлиента КАК РейтингКлиента
|ИЗ
| ВТ_ДанныеПродаж КАК ВТ_ДанныеПродаж";
АнализДанныхОбщаяСтатистика.ИсточникДанных = Запрос.Выполнить();
РезультатАнализа = АнализДанныхОбщаяСтатистика.Выполнить();
ПостроительОтчетаАнализаДанных = Новый ПостроительОтчетаАнализаДанных();
ПостроительОтчетаАнализаДанных.Макет = Неопределено;
ПостроительОтчетаАнализаДанных.ТипАнализа = Тип("АнализДанныхОбщаяСтатистика");
ПостроительОтчетаАнализаДанных.Вывести(РезультатАнализа, РезультатОбщаяСтатистика);
РезультатОбщаяСтатистика.ПоказатьУровеньГруппировокСтрок(1);
#КонецОбласти
Выполним и посмотрим на результат. Первым на очереди, общая статистика по непрерывным полям:

Из таблицы, можно получить, информацию о множестве интересных фактов, например, максимальное количество товаров в одной покупке 10 штук, при этом среднее значение 5,5100, медиана 5, при стандартном отклонении 2,9234. Это говорит о том, что чаще покупают множество товаров, нежели приходят за одним, при этом средний чек составил около 300 долларов, больше всего активны покупатели с рейтингом чуть выше 6 единиц, покупатели в основном лояльны.
Дискретные поля, показали условно равномерное распределение значений, без явных лидеров. Например, показатель «Филиал», различия незначительны:

Показатель «Вид номенклатуры»:

Для поиска интересных взаимосвязей, необходимо продолжить дальнейший анализ данных.
Используемые источники информации:
- Информационно-технологическое сопровождение (1С:ИТС).
- Курс «Введение в Data Science и машинное обучение».
- Книга «Статистика и котики» — Автор: Савельев Владимир.
- Книга «Статистика для всех» — Автор: Сара Бослаф.
Дополнительная информация:
Выгрузка базы данных (dt файл, 96 Кб) — используемая версия платформы: 1С:Предприятие 8.3 (8.3.17.1496).
