Skip to content

iMissile/tmon

Repository files navigation

tmon

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. На данный момент реализовано два альтернативных подхода:

  1. Данные разбиваются на куски, для которых одинаковы коэффициенты регрессии (dplyr::group_by). Затем для каждого куска (dplyr::do) выбираем в нужных таблицах коэффициенты регрессии и проводим расчёт прогноза (reconstruct.df).
  2. Информация из таблиц коэффициентов регрессии для каждого дня недели и каждой часовой группы добавляется с помощью функции 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).

About

tmon analytics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published