• Дети, русский язык и R

      Типичная ситуация в нынешнем образовательном процессе в школе. На часах 22:00, в электронном дневнике ребенка появляется новое задание. В лучшем случае на послезавтра, но обычно на завтра.


      Вариантов реакции три:


      • не делать вовсе;
      • «не заметить» и отложить решение вопроса на потом;
      • попробовать сделать.

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


      Выбирая третий вариант, в отдельных случах даже задания по русскому языку можно попробовать решить с помощью R, принимая во внимание, что на все про все есть 15-20 минут максимум. 5 минут на «экстремальное программирование», 10-15 минут на чистовое оформление. Когда принципиально задача решена оформление можно уже и утром сделать


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

      Читать дальше →
    • Делаем вечную лампочку

        На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

        Сегодня я расскажу, как за пять минут без каких либо инструментов модифицировать лампочку так, чтобы её срок службы значительно увеличился.

        Читать дальше →
      • Статистически устойчивый анализ данных: тест Манна-Уитни-Уилкоксона и Score функции

        • Tutorial

        В настоящей статье развиваются идеи и распространяются методы, изложенные в прошлой публикации «Статистически устойчивый анализ данных: тест Уилкоксона» на случай двух выборок. Это простая, но широко используемая на практике модель, так как даже в более сложных ситуациях целевые показатели часто сопоставляются на двух уровнях.

        Анализ модели о сдвиге параметров положения двух генеральных совокупностей начинается с описания свободной от распределения ранговой процедуры Манна-Уитни-Уилкоксона (Mann-Whitney-Wilcoxon, MWW), здесь строятся точечные и интервальные оценки для величины сдвига. Далее кратко описывается метод анализа, основанный на применении score функций и, с его помощью, также проверяется нулевая гипотеза о величине параметре сдвига. В заключение, модель для параметра положения формулируется в виде регрессионной задачи, решение которой также позволяет построить точечную и интервальную оценки для параметра сдвига.

        Все изложенные в статье методы проиллюстрированы на сквозном примере, реализованном в виде алгоритмов на языке R.

        Читать далее
      • Как отлаживать код в RStudio и создавать новый проект на R

        • Tutorial
        Новогодним подарком в этом году стали для меня новая команда и проект на языке R, о котором в тот момент я знал немного. Поначалу было трудно и не понятно, но время шло, картинка прояснялась. С чем-то удалось разобраться, что-то пришлось принять как есть. И вот, спустя два с половиной месяца работы на R, я решил поделиться опытом и рассказать о своих первых шагах в этом проекте. Я не буду описывать все свои душевные муки и эмоции, которые переполняли меня в процессе освоения этого очень интересного языка, а сосредоточусь на технической стороне вопроса. Цель моей статьи рассказать о том, как отлаживать код в RStudio и создавать новый проект на R.
        Читать дальше →
      • Ещё немного о параллельных вычислениях в R

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

          И да и нет. Если сознательно не вдаваться в теорию, железо и всякие подробности, то можно нарисовать «3 и 1/2» почти универсальных рецепта.

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

          Читать далее
        • Изучаем английский с помощью дейт-симов. Романсим цифровых девушек и прокачиваем лексику

            Мы продолжаем исследовать интересные инструменты, которые помогают прокачивать английский язык. Сегодня это симуляторы свиданий.

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

            У симуляторов свиданий есть пара крутых преимуществ перед остальными жанрами игр. С них и начнем.

            Читать далее
          • Математик-пенсионер, «хакнувший» лотерею


              Любитель головоломок


              Джеральд Селби всегда любил загадки: там, где другие видели лишь шум, он стремился найти порядок и гармонию. Работая на фабрике Kellogg's по производству овсяных хлопьев, он занимался анализом материалов для увеличения срока годности продукции. Однажды, изучая хлопья других компаний, Джерри наткнулся на странную последовательность символов на обороте коробки General Mills. Вместо даты и фабрики-производителя там был отпечатан загадочный код. Джерри решил расшифровать его: взяв несколько коробок завтраков Kellogg's и General Mills, он начал сравнивать их влажность, сообразив, что хлопья с примерно одинаковой влажностью должны иметь близкие даты производства. Делая записи на бумаге, он выявил некоторые закономерности. Вскоре ему удалось расшифровать всё, что позволило определить место, дату и время изготовления. В более агрессивной сфере бизнеса «взлом» секретов конкурентов мог бы обернуться огромной выгодой, но не в производстве овсяных хлопьев, поэтому руководство восприняло его открытие без энтузиазма.
              Читать дальше →
            • Как быть билингвом в Data Science

              • Translation
              В этой статье я хочу продемонстрировать R Markdown — удобную надстройку для программирования вашего проекта как на R, так и на Python, позволяющую программировать некоторые элементы вашего проекта на двух языках и управлять объектами, созданными на одном языке, с помощью другого языка. Это может быть полезно потому, что:

              1. Позволяет писать код на привычном языке, но при этом использовать функции, существующие только в другом языке.
              2. Позволяет напрямую сотрудничать с коллегой, который программирует на другом языке.
              3. Даёт возможность работать с двумя языками и со временем научиться свободно владеть ими.


              Приятного чтения!
              • +27
              • 5.9k
              • 4
            • Аксиома выбора и принципиальные ограничения человеческого разума

                Когда я учился в институте, то очень не любил философию. Дело не только в том, что тогда это была марсистко-ленинская философия - просто я не видел смысла в этом бессмысленном нагромождении слов. Уже много позже я обнаружил, что увлекаюсь именно философией - но философией науки.

                На мой взгляд, у философии должен быть конкретный объект рассмотрения: бесконечности в теории множеств, трансфинитные числа, теории и доказуемость, гипотеза математической вселенной Макса Тегмарка. И тогда есть реальный прогресс (например, теорема Геделя), а слова просто облегают каркас, задаваемый конкретикой. Иначе получается попытка построить конструкцию из жидкой манной каши, какой-то интеллектуальный онанизм.

                Георг Кантор, положивший начало теории множеств и открывший разницу типов мощностей (по-английски cardinalities), на мой взгляд, куда больший философ, чем Кант и Гегель. Вы можете не вынимать ложечку из чашки кофе, когда пьете его и съедать яблоко с огрызком, но знать отличие счетного множества от континуума обязаны, если вы связаны с IT или любой технической сферой.

                Одной из интересных в философском плане вещей является знаменитая (в узких кругах) Аксиома Выбора (AC) - внешне совершенно безобидная, но с чудовищными последствиями. Аксиома утверждает, что, если существуют два непустых множества, то существует и множество, содержащее ровно по одному элементу из обоих.

                Читать далее
              • Моя музыка 2020 года в картинках и графиках

                  Я взял плейлист «Мой 2020», который сделала Яндекс-музыка, добавил туда немного метаданных о песнях, а потом посчитал статистику и узнал, какие у меня любимые группы и жанры, песни каких лет мне больше всего нравятся и какие слова встречаются в текстах наиболее часто. Нарисовал результаты на графиках, а ещё оформил статью так, как будто это серьёзное исследование. Помогали мне язык программирования R с пакетами ggplot2, tm и wordcloud2.

                  Узнать результаты исследования
                  • +30
                  • 6.5k
                  • 3
                • Фантастика 2020 года, которую стоит почитать



                    Под конец года принято подводить итоги и кажется стоит вспомнить, что же было в этом непростом году хорошего. Например, я читал много отличных книг (что еще делать дома?). Вот немного про самые примечательные из них или, по крайней мере, те, которые сильнее всего запомнились мне.
                    Читать дальше →
                  • Логирование выполнения скриптов на языке R, пакет lgr

                    • Tutorial

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


                    По умолчанию скрипты которые запускаются командой R CMD BATCH логируются в одноимённые файлы с расширением .Rout. Но такие логи неудобно читать, а анализировать невозможно.


                    Есть целый ряд пакетов, которые берут на себя процесс логирования. В этой статье мы рассмотрим один из наиболее функциональных и новых пакетов — lgr.


                    Читать дальше →
                  • Опыт внедрения Shiny в качестве корпоративной отчетности

                      Всем привет! Меня зовут Сергей, я аналитик в ГК «Везёт». Исторически так сложилось, что в нашей компании было множество систем отчетности: от платных в виде Looker и Qlick – до самописных веб-сервисов. Однажды решив, что так дальше жить нельзя, мы стали выбирать единую систему, на которой будет все, и в итоге остановились на Shiny. В этой статье я расскажу про наш опыт внедрения Shiny в качестве корпоративного BI. Эта статья будет полезна всем, кто только выбирает инструмент для корпоративной отчетности.

                      Читать дальше →
                      • +10
                      • 1.7k
                      • 4
                    • ООП в языке R (часть 2): R6 классы

                      • Tutorial

                      В прошлой публикации мы разобрали S3 классы, которые являются наиболее популярными в языке R.


                      Теперь разберёмся с R6 классами, которые максимально приближённые к классическому объектно ориентированному программированию.


                      Читать дальше →
                    • Как в enterprise приручить при помощи R технологии process mining?

                        Как-то так получилось, что в 2020 году возник всплеск интереса к тематике Process Mining. Не исключено, что новая реальность удаленного режима потребовала более пристальной оценки эффективности технологических и бизнес-процессов. Это же как с кривыми и косыми деревянными рамами. Сквозит из всех щелей, а счетчик накручивает мегаватты на обогрев.


                        В целом, видны несколько популярных запросов по применению технологии process mining:


                        • хочется что-то улучшить, но кроме модного слова больше ничего не слышали;
                        • получить или сэкономить «живые деньги» путем оптимизации классического процесса «order-to-cash» и ему подобных;
                        • системный аудит всего и вся собственной командой аудиторов;
                        • построение операционной аналитики и мониторинга на основе показателей процессов, а не ИТ метрик.

                        В 99% случаев начинают читать Gartner/Forrester и попадают на 4-ку вендоров (Celonis/Minit/Software AG/UiPath), которые как-то присутствуют в России. И до того, как начать получать какую-либо выгоду, тут же получают немаленький ценник за лицензии и последующую ежегодную поддержку. При этом экономическое обоснование шито белыми нитками.


                        А действительно ли нужно идти таким путем? Особенно, когда задачи и цели не до конца понятны самим постановщикам. Не стоит забывать, что вендоры требуют специально подготовленный лог событий, а его подготовка может вылиться в головную боль и многие месяцы интеграционной работы в классическом enterprise ландшафте.


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

                        Читать дальше →
                      • «Жизнь» на PostgreSQL

                          Недавно на Хабре была опубликована статья Морской бой в PostgreSQL. Должен признаться: я обожаю решать на SQL задачи, для SQL не предназначенные. Особенно одним SQL-оператором. И полностью согласен с авторами:

                          Использование специальных инструментов не по назначению часто вызывает негатив со стороны профессионалов. Однако решение бессмысленных, но интересных задач тренирует нестандартное мышление и позволяет изучить инструмент с разных точек зрения в поиске подходящего решения.

                          И еще. Будем честны: всегда использовать SQL по назначению — тоска зеленая. Вспомните, какие примеры приводятся во всех учебниках, начиная с той самой статьи Кодда? Поставщики да детали, сотрудники да отделы… А где же удовольствие, где же фан? Для меня один из источников вдохновения — сравнение процедурных решений с декларативными.

                          Я, позвольте, не буду объяснять, что такое Жизнь Джона Конвея. Скажу только, что — оказывается — используя клеточный автомат Жизни, можно построить универсальную машину Тьюринга. Мне кажется, это грандиозный факт.

                          Так вот, можно ли реализовать игру Жизнь одним оператором SQL?
                          Конечно можно
                        • Анализируй это: оценки игр на Metacritic

                          Привет, мир Хабр!

                          В этом посте я хотел бы поделиться своим опытом сбора и анализа базы игр сайта Metacritic.com, рассказать о том, что получилось, и что ещё в планах. Надеюсь, что материал найдёт своего читателя, а возможный фидбек укажет слабые места и потенциальные направления для дальнейшего анализа.

                          Предыстория


                          Многие из нас весной-летом этого года получили в своё распоряжение несколько свободных часов в день – работа на дому, спад деловой активности и другие причины всем известны. Своё свободное время я решил обратить на пользу – подтянуть R, которым не пользовался с университетских времён, а заодно и попрактиковаться на реальных данных (грош цена сертификатам без реальных проектов).

                          Почему я выбрал именно эту базу? Потому, что люблю игры. А ещё, потому что в июне случился скандал вокруг игры The Last of Us. Part II, которая получила практически полное признание критиков, и была крайне негативно воспринята частью игрового сообщества.

                          Мне было интересно найти ответ на несколько вопросов:

                          1. Насколько соответствуют друг другу оценки прессы и игроков?
                          2. Существует ли значимая динамика в а) оценках прессы; б) оценках игроков; в) разности оценок?

                          И я приступил к поиску ответов.
                          Читать дальше →
                        • Пишем telegram бота на языке R (часть 1): Создаём бота, и отправляем с его помощью сообщения в telegram

                          • Tutorial

                          Аудитория telegram ежедневно растёт с геометрической прогрессией, этому способствует удобство мессенджера, наличие каналов, чатов, и конечно возможность создавать ботов.


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


                          По сути через бота можно используя telegram выполнять любые операции: отправлять, либо запрашивать данные, запускать задачи на сервере, собирать информацию в базу данных, отправлять электронные письма и так далее.


                          Я планирую написать серию статей, о том, как на языке R работать с telegram bot API, и писать ботов под свои нужды.



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

                          Читать дальше →
                        • «Storytelling with Data», Cole Nussbaumer Knaflic: неформальный обзор-конспект книги

                            «Наши сайнтисты сгенерировали кучу графиков, а мы совершенно не знаем, куда их девать. Давайте попробуем их хоть как-то пристроить». (с) подслушано

                            «Плохие графики везде. В моей работе я постоянно встречаю крайне сомнительные визуализации данных. Никто не делает плохие графики намеренно. Но это происходит. Опять и опять. В каждой компании во всех отраслях экономики сотрудниками всех уровней. Это происходит в СМИ. Это происходит там, где вы ожидаете, что люди должны уметь визуализировать данные». (с) автор книги

                            Это происходит и здесь, на Хабре: просматривая статьи в потоке «Визуализация данных», часто ловлю себя на мысли, что не понимаю и не могу схватить суть того, что отображено. В статье рассмотрим несколько примеров. И что самое неприятное для меня, это происходит и в моей работе тоже. Не постоянно, но чаще, чем хотелось бы.



                            Название книги «Storytelling with Data» звучало убедительно. Выбрал её для вечернего чтения и не пожалел. В книге нет формул, хитрых и необычных графиков, сложных кейсов. Понятный английский. Качественная печать. Читается как художественная литература. Книга будет полезна всем, кому приходится делать презентации на основе данных. Думаю, что особенную пользу она принесёт тем, кто занимается аналитикой данных.

                            Этот обзор очень неформальный: вперемешку идут мысли автора книги, мои мысли, ситуации из моей работы, а также шпаргалки по matplotlib по ссылкам. Будет много картинок. Почти все иллюстрации перерисованы из книги на Python.
                            Читать дальше →
                            • +18
                            • 8.2k
                            • 1
                          • Пакеты-пакеты-пакеты… Насколько эффективно вы используете R?

                              Нынешняя культура «компетенций» и «практик» предполагает, что человека обучают каким-то подходам и рецептам к решению набора задач. При этом за рамками скрывается время актуальности этих «рецептов» и они, фактически, отливаются в монолит, тиражируясь человеком годами. Порой приходится слышать изречения о «лучших практиках», которым уж лет 30 и за это время прошло несколько смен парадигм. А с этой «лучшей практикой» находишься как-будто во временнОй капсуле.


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


                              R образца 2020 года очень сильно отличается от R даже 2018 года. В самом базовом коде были внесены достаточно значимые изменения для повышения эффективности и стабильности работы (скорость и потребление памяти). Но более динамичная часть экосистемы — это пакеты. Их коллекцию полезно периодически пересматривать с тем, чтобы перейти на более удобные и производительные реализации. С момента прошлой публикации «Джентельменский набор пакетов R для автоматизации бизнес-задач» и сами пакеты претерпели серьезные модернизации и спектр их достаточно сильно расширился и лидеры многократно менялись местами.


                              Не секрет, что мейнстрим не означает максимальную эффективность и универсальность. Придерживаясь рамок мейнстрима очень легко пропустить пакеты, которые являются жемчужинами. Особенно удобно открывать их на R конференциях UseR!, Rconf, eRum, и т.д.


                              Ниже приведен список пакетов общего применения, который оказывается весьма полезным при решении повседневных задач (x пакетов из >10K на CRAN). Часто оказывается так, что многие новинки оказываются неизвестны собеседникам. Для сводного ознакомления по срезу на июль 2020 публикую в виде подборки. Ссылки, в большинстве случаев, ведут на страницу с подборкой функций. Уверен, что каждый найдет для себя что-то полезное.

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