tmon analytics
- Реализовать поддержку скриптом аргументов, переданных из командной строки (???)
- пакет getopt
- Адаптировать скрипт для загрузки и выгрузки данных через JSON (убрать загрузку данных из CSV и RDS???)
- Решить вопрос с кодировкой символов в тексте скрипта (CP1251 или UTF-8)
- Согласовать формат входных и выходных данных в JSON
Для конвертации данных между объектами R и JSON-представлением выбран пакет jsonlite, главным преимуществом которого является продуманное соответствие между основными типами объектов R (vector, data,frame, list и т.п.) и их представлением в JSON-формате (https://cran.r-project.org/web/packages/jsonlite/vignettes/json-mapping.pdf).
Самым узким местом была реконстрункция базовой линии путём вызова функции reconstruct.point для каждого timestamp'a. На данный момент реализовано два альтернативных подхода:
- Данные разбиваются на куски, для которых одинаковы коэффициенты регрессии (dplyr::group_by). Затем для каждого куска (dplyr::do) выбираем в нужных таблицах коэффициенты регрессии и проводим расчёт прогноза (reconstruct.df).
- Информация из таблиц коэффициентов регрессии для каждого дня недели и каждой часовой группы добавляется с помощью функции dplyr::left_join (reconstruct.df_fast).
##Сравнение времени выполнения для каждого варианта
Интервал прогноза по модели | reconstruct.point | reconstruct.df | reconstruct.df_fast |
---|---|---|---|
один timestamp (1) | 13ms | 21ms | 19ms |
один час (4) | 52ms | 47ms | 20ms |
один день (96) | 1236ms | 846ms | 28ms |
два дня (192) | 2470ms | 1683ms | 35ms |
неделя (672) | 8660ms | 6109ms | 76ms |
две недели (1344) | 17356ms | 6155ms | 132ms |
четыре недели (2688) | 34514ms | 6371ms | 247ms |
График:
В будущем можно также оптимизировать расчёт коэффициентов регрессии (т.е. заполнение таблиц days.fit и regr_hdata).