Как стать автором
Поиск
Написать публикацию
Обновить
6.65

R *

Язык для статистической обработки данных

Сначала показывать
Порог рейтинга
Уровень сложности

Анализ распределения временных интервалов между покупками на R

Время на прочтение10 мин
Количество просмотров4.5K

В статье я провожу ресёрч интервалов между собственными банковскими тратами за последние полгода и с помощью статистических методов в R пытаюсь понять, какому распределению эти интервалы подчиняются.

Я представляю:

1. Код на R для анализа любых временных интервалов.

2. Подбор экспоненциального и степенного распределения под данные с помощью метода максимального правдоподобия (MLE). Для экспоненциального я использую fitdistr() из пакета MASS, а для степенного fit_power_law() из пакета igraph.

3. Проверку данных на соответствие подобранному распределению с помощью теста Колмогорова-Смирнова. Я использую функцию ks.test() из пакета stats.

Читать далее

ETL в анализе данных без перерывов на кофе и курилку

Время на прочтение18 мин
Количество просмотров7.8K


Кадр из фильма «Индиана Джонс: В поисках утраченного ковчега» (1981)


Наблюдаемая все чаще и чаще картина в задаче анализа данных вызывает удручающее впечатление. Intel, AMD и другие производители непрерывно наращивают вычислительную мощность. Гениальные математики-программисты пишут суперэффективные библиотеки и алгоритмы. И вся эта мощь гасится и распыляется рядовыми аналитиками и разработчиками. Причем начинается это все с нулевого этапа — этап подготовки и загрузки данных для анализа. Многочисленные вопросы и диалоги показывают, что в нынешних программах обучения зияют огромные дыры. Людям просто незнакомы многие концепции и инструменты, уже давно придуманные для этих задач. Для тех, кто хочет увеличить свою продуктивность, далее тезисно будут рассмотрены ряд таких подходов и инструментов в частичной привязке к реальным задачам.


В первую очередь, материал ориентирован на аналитиков, которые манипулируют разумными объемами данных, необходимых для решения практических задач. ETL из Бигдаты в котором перекачиваются сотни Тб ежесуточно живет своей отдельной жизнью.


Является продолжением серии предыдущих публикаций.

Читать дальше →

В глубины регрессии или про пакет frm в R

Время на прочтение4 мин
Количество просмотров1.6K

В статье обозревается оригинальный подход к построению моделей цензурированной регрессии, если зависимая переменная лежит в интервале [0;1] с помощью пакета frm.

Читать далее

Мы не идем простыми путями или о применении P-сплайнов в регрессии

Время на прочтение5 мин
Количество просмотров2K

Обзор части функционала нового пакета SOP, реализующего алгоритм построения уравнения регрессии с использованием модификаций P-сплайнов.

Читать далее

Как в Trello оценить процессные задачи и построить их визуализацию?

Время на прочтение8 мин
Количество просмотров5.6K

Если вы задавались вопросом:
- "Как четко (или почти четко) измерить эффективность процессной работы программистов, маркетологов, аналитиков, дизайнеров и на основе этих измерений построить визуализацию?" - то эта статья будет вам интересна.

В решении задачи используем язык программирования R, графики на ggplot и Trello как инструмент таск-менеджмента в том виде в котором ранее скорее всего вы его не использовали.

Разберем подробно

Уходим с Mercurial на Git

Время на прочтение3 мин
Количество просмотров11K
Кадр из фильма «Красный шар». Режиссер Альбер Ламорис. 1956 год

Так уж случилось, что у меня остался ряд репозиториев на Mercurial, которые захостил на Bitbucket много лет назад. Проекты перешли в полуархивное состояние, поэтому заглядывал в них не так уж и часто. И тут я решил обратиться к материалам, надо было внести правку. С удивлением обнаружил, что репозиториев на битбакете нет, но есть публикация «Sunsetting Mercurial support in Bitbucket».

Не критично, локальные репозитории сохранились же (а там коммитов за 10+ лет). Попробуем переехать на github/gitlab по инструкции из статьи. И, конечно же, эти инструкции работают только с latin-1, русские буквы либо не дают переехать, либо заменяются на ?. Извечная проблема кодировок. Можно ли что-то сделать?

UPDATE по результатам комментариев.
Для «приземления» задачи рассмотрите контекст коммерческой поддержки большой инсталляции ПО, созданного в компании где вы сейчас работаете, которое n лет уже не развивается (выпустили совсем новую ветку), но обязательства по поддержке остались по проданным ранее контрактам. И периодически всплывают баги.

Является продолжением серии предыдущих публикаций.
Читать дальше →

Большая подборка телеграмм-каналов для аналитиков

Время на прочтение6 мин
Количество просмотров66K

Работа аналитика требует постоянного пополнения своих знаний - новые инструменты, обновления и методы создаются, как горячие пирожочки. Но перерабатывать такие объемы информации просто нереально, а узнавать что-то новенькое и полезное хочется. И что делать?

Можно, конечно, подписаться на «стоковые» группы и каналы, которые каждый день публикуют по 10-20 постов с «полезным» материалом. Но, признайтесь, это просто самообман: во-первых, столько информации в день просто невозможно пропустить через себя - это только и надо, что статьи читать, а есть же еще работа/учеба. Во-вторых, «полезность» этих статей сомнительна - не каждый пост от умного индуса можно считать полезным, увы :(

Так как же быть? Ответ прост - читать авторские каналы, где реальные специалисты делятся информацией, которую они для себя считают полезной!

Итак, мы собрали для Вас большую подборку телеграм-каналов на любой вкус - каждый найдет для себя что-то интересное. Здесь и BI, и продуктовая аналитика, и программирование, и дашборды, и хранилища данных - одним словом, есть где разгуляться аналитической душе! 

Сохраняйте себе и подписывайтесь на ребят - они это точно заслужили! :)

Читать далее

Разработка (dev) и data science в enterprise — битва за ресурсы или эффективное сотрудничество?

Время на прочтение9 мин
Количество просмотров4.6K

В подавляющем большинстве случаев, когда речь заходит о «настоящей» разработке продукта или решения enterprise уровня, сразу появляются корпоративные архитекторы и глобальные архитектуры и шаблоны, высокоуровневые модели данных и концепты, попытки охватить всё и вся. Формируется шорт лист из языков и фреймворков, в рамках которых идет вся последующая разработка. Все «только на Java» или «только на C#» или… (впишите на свое усмотрение).
Несомненно, это является отражением предыдущего проектного опыта, лучших мировых практик, готовности подхватить новые запросы бизнеса и в общем случае такой подход оправдан. Но в каждом частном случае подобный глобализм на этапе взлета продукта, в тот момент, когда многое еще находится в состоянии неопределенности, может просто погрести под собой начинание и превратить проект в очередную неудачу. Можно ли что-то изменить, упростить и улучшить не теряя при этом в качестве?
Оказывается что это вполне возможно за счет объединения классической разработки ПО с инструментами и подходами data science (далее просто DS). Как этого можно достичь — разберем по шагам.

Материал является продолжением серии предыдущих публикаций.
Читать дальше →

Расчёт полной аэродинамической силы беспилотного летательного аппарата в SimInTech

Время на прочтение4 мин
Количество просмотров10K

В настоящий момент идёт широкое развитие беспилотной авиации ведущими мировыми державами. Каждый разработчик опытного образца создаёт свою уникальную форму летательного аппарата в зависимости от тактико-технических требований. На борту беспилотного летательного аппарата управляемого автономно система управления решает задачу по поиску оптимального маршрута для движения к цели и выработки управляющего воздействия для достижения цели. Для выработки управляющего воздействия необходимо учитывать силы и моменты действующие на летательный аппарат. Полёт беспилотного летательного аппарата (БПЛА) проходит в плотных слоях атмосферы, поэтому важно учитывать аэродинамическую силу и момент создаваемый силой, действующие на летательный аппарат. В данной статье рассмотрен пример расчёта только полной аэродинамической силы БПЛА в системе модельно-ориентированного проектирования систем автоматического управления SimInTech. В качестве примера выберем перспективный многоцелевой БПЛА отечественного разработчика (рис. 1).

Читать далее

Как обзавестись «чуйкой» опытного хирурга или предсказательная модель молодого аспиранта

Время на прочтение8 мин
Количество просмотров2.4K

Если спросить у эндоваскулярного хирурга с 10-летним стажем про стентирование артерий сердца при инфаркте миокарда - он может сказать , “Уверен, что у этого пациента артерия закроется после нашей операции”. Раньше я воспринимал это как данность. В институте мне нравилось это называть интуицией врача, или предчувствие исхода. В аспирантуре захотелось обличить все эти метафизические предсказания в закономерную структуру, поддающуюся логическому объяснению. Опытный хирург обучил свою нейросеть в головном мозге таким образом, что она оценивает несколько параметров пациента и предсказывает вероятность возникновения окклюзии артерии. Сейчас покажу как я сделал то же самое без большого стажа, и программы для расчета статистики.

Как смоделировать "чуйку" хирурга

Запросить 100 серверов нельзя оптимизировать код. Ставим запятую

Время на прочтение7 мин
Количество просмотров6.6K

Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие базовые алгоритмы. Но прочесть и усвоить все — задача, требующая много усилий и времени, которая должна как-то быть мотивирована.


Многие могут предположить, что нюансы необходимо было знать 50 лет назад, а сейчас можно пользоваться готовыми пакетами и функциями и не погружаться в детали. Однако, это далеко не так. Равно как никто не отменял важность понимания представления методов хранения данных в памяти и их обработки в процессоре.


Далее разберем нюансы на примере функций сортировки. Сортировка и поиск используются максимально часто во всех манипуляциях с данными. Экономия нескольких миллисекунд на операции может приводить к суммарному сокращению часов расчета на значительных данных.


Является продолжением серии предыдущих публикаций.

Читать дальше →

extendr: вызываем rust из R (и наоборот)

Время на прочтение11 мин
Количество просмотров1.7K

R, как и большинство подобных ему высокоуровневых скриптовых языков, часто полагается на код, написанный на более низкоуровневом языке. Библиотеки R - пакеты (packages) - нередко содержат код, написанный на C, C++ или FORTRAN. Нативный код позволяет обойти различные ограничения (например, однопоточность) и ускорить выполнение сложных алгоритмов за счет оптимизаций, попросту недоступных из самого R. Вся эта вычислительная мощь, тем не менее, получает удобный и совместимый с другими инструментами интерфейс на стороне R.

Разработка пакетов с C/ C++ кодом давно налажена благодаря сторонним библиотекам, включая {usethis}, {devtools}, {pkgbuild}, {cpp11} и т.д. Но что насчет других низкоуровневых языков? Ведь R всего-навсего динамически подгружает и вызывает библиотеки, поэтому если соблюсти все необходимые условия, можно, например, создать пакет с кодом, написанном на Rust. Несмотря на то, что на практике это действительно работает, разработка, поддержка и внедрение таких инструментов - довольно трудоемкий процесс. Точнее был трудоемким до этого момента.

Enter extendr, проект, который позволяет соединить R и Rust и с легкостью интегрировать Rust код в пакеты R, одновременно предоставляя возможность хостить R сессию в Rust. extendr находится в разработке довольно давно (больше полугода активной фазы) и представляет собой MVP (minimum viable product), но до сих пор был обделен вниманием. Rust-крейт уже какое-то время доступен на crates.io, а R-пакет ожидает проверки на CRAN.

extendr - отличный способ наладить взаимодействие между разработчиками, пишущими на Rust и R. Если вы знаете один из языков и хотели бы познакомиться со вторым, или же хотите портировать свои R-пакеты с проблематичных C/ C++ на модный Rust, добро пожаловать под cut.

Читать далее

Ближайшие события

Модификация EM-алгоритма для решения задачи кластеризации с выбросами

Время на прочтение4 мин
Количество просмотров2.1K

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

Один из подходов к решению данной задачи (чтобы метод кластеризации автоматически отсеивал выбросы) получил название "optimally tuned robust improper maximum likelihood estimator" и был описан вот в этой статье 2017 года (http://dx.doi.org/10.1080/01621459.2015.1100996), а недавно и получил реализацию на R. Поговорим о нем.

Читать далее

Оценка структуры кредитного портфеля с помощью R

Время на прочтение4 мин
Количество просмотров2.6K

В ходе обсуждений возникла «маленькая» задачка — построить динамику структуры кредитного портфеля (динамика кредитной карты, например). Есть важная специфика — необходимо применять метод FIFO для погашения займов. Т.е. при погашении первыми должны гаситься самые ранние займы. Это накладывает определенные требования на расчет статуса каждого отдельного займа и определения его даты погашения. Задачу решаем честно.


Рассматриваем как олимпиадную задачу. Никаких «кровавых энерпрайзов с корпоративными архитекторами» и педалинга кода, подход исключительно «сначала подумать». Не более одного экрана кода на прототип и никаких циклов (закладные для производительности и читаемости). Ниже приведен код на R с прототипом подхода.


Является продолжением серии предыдущих публикаций.

Читать дальше →

Как создать Trello — dashboard, чтобы задачи из 5 досок собирались в одной?

Время на прочтение5 мин
Количество просмотров7.5K

В своей работе я столкнулся с необходимостью организации задач сотрудников департамента аналитики в едином окне и построения прозрачной схемы оценки их загруженности.

Какие есть варианты?

Сравнивая различные инструменты и таскменеджеры, выбор пал на одного из популярных игроков рынка - Trello. Однако, сразу после выбора программы, возникло новое препятствие. В бесплатной версии этого приложения отсутствовала возможность синхронизации досок нескольких сотрудников воедино без сторонних сервисов, типа Zapier, где для большого проекта тоже нужна лицензия.

Читать далее

Кластеризация смешанных (числовых и категориальных) данных в R

Время на прочтение4 мин
Количество просмотров4.3K

Основная проблема всех классических алгоритмов анализа данных – это их малая применимость к практическим задачам. Относится это и к задачам кластеризации.

В реальных (да и в научных задачах) возникает необходимость в кластеризации данных смешанного типа – например, когда половина переменных числовые, а половина переменных – категориальные.

По отдельности данные задачи решаются стандартными способами (вот, например, статья про иерархическую кластеризацию чисто категориальных данных - https://habr.com/ru/company/otus/blog/461741/), однако решение задачи кластеризации смешанных данных представляет некоторые трудности, связанные в основном со сложностью расчета величины расстояния между наблюдениями.

Минутка теории

Существующие методы предполагают расчет расстояния при Гауэра использовании функции daisy (daisy(method = "gower")) в пакете cluster.

Однако, как утверждают создатели пакета clustMixType, этот способ неприменим при обработки больших объемов данных, и в их пакете реализован иной метод

Теоретические основы реализованного метода кластеризации были разработаны еще в 1999 году в работе Z. Huang. Extensions to the k-means algorithm for clustering large data sets with categorical variables. Data Mining and Knowledge Discovery, 2:283–304, 1998. doi: 10.1023/A:1009769707641. Он получил название метода k-prototypes и основан на следующей формуле расстояния:

Читать далее

Проверка гипотезы равенства средних при неравной дисперсии в R

Время на прочтение3 мин
Количество просмотров4.7K

Задача определения равенства средних при условии равных дисперсий - классическая задача математической статистики, которую решают в техникумах и ВУЗах. Однако МС как наука очень похожа на болото - при попытке спрыгнуть в сторону с кочки классически решаемой задачи можно увязнуть или вовсе утонуть

Рассматриваемая задача - одна из таких. На самом деле, заботливыми математиками уже разработано порядка двух десятков разных статистических тестов для решения такого рода задач, что ставит вопрос из разряда "какой из них применять"

Для решения этой задачи была разработана процедура, позволяющая для каждого конкретного случая определить лучший статистический тест.

Читать далее

Storytelling R отчет против BI, прагматичный подход

Время на прочтение6 мин
Количество просмотров4.9K

Проблематика


Когда говорят про отчеты к данным (неважно, какая тема) все хотят гибкие дашборды, МНОГО дашбордов, играют конкурсы про BI, выдумывают разные сложные требования и кейсы, отсматривают массу вендоров и решений, разбиваются на непримиримые лагеря и на 100% уверены, что это то, без чего жизнь на работе тяжела, уныла и печальна.


Так ли это? По описанию очень сомнительно (похоже на серебряную пулю), а практика дает подтверждение «отнюдь не так».


Является продолжением серии предыдущих публикаций.

Читать дальше →

Звездные войны или подробный гайд по dplyr

Время на прочтение8 мин
Количество просмотров6.6K

Сегодня, 4 мая, в день Звездных войн мы подготовили для Вас подробный гайд по основным функциям библиотеки dplyr. Почему именно в день Звездных войн? А потому что разбирать мы все будем на примере датасета starwars.

Ну что, начнем!

Читать далее

Вклад авторов