Search
Write a publication
Pull to refresh
18
0
Олег @OlegUV

Аналитик

Send message

Покупка оптимальной квартиры с R

Reading time12 min
Views62K
Многие люди сталкиваются с вопросом покупки или продажи недвижимости, и важный критерий здесь, как бы не купить дороже или не продать дешевле относительно других, сопоставимых вариантов. Простейший способ — сравнительный, ориентироваться на среднюю цену метра в конкретном месте и экспертно добавляя или снижая проценты от стоимости за достоинства и недостатки конкретной квартиры. image Но данный подход трудоемок, неточен и не позволит учесть все многообразие отличий квартир друг от друга. Поэтому я решил автоматизировать процесс выбора недвижимости, используя анализ данных путем предсказания «справедливой» цены. В данной публикации описаны основные этапы такого анализа, выбрана лучшая предиктивная модель из восемнадцати протестированных моделей на основании трех критериев качества, в итоге лучшие (недооцененные) квартиры сразу помечаются на карте, и все это используя одно web-приложение, созданное с помощью R.

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

Визуализация рынка соискателей с помощью R

Reading time3 min
Views15K
Рынок труда представляет собой классическое формирование спроса и предложения на рабочую силу. И если со стороны спроса на труд, многие кадровые агентства и порталы по поиску работы представляют собой некоторую аналитику по имеющимся предложениям (правда, не всегда в необходимом виде). То со стороны предложения (соискателей) аналитики гораздо меньше, да и та, что есть, не является универсальной для каждого, и чаще всего представляет собой просто срез по желаемому доходу в каких-то общих сферах, или просто по названию резюме.
image
Мне же был интересен инструмент, который по произвольной выборке резюме (по названию, ключевым словам и прочее) показывал бы основные характеристики такой выборки, распределение зарплат, возрастов, и многое другое, как в графическом виде, так и виде произвольных перцентилей. Итог моего желания, ниже под катом.
Читать дальше →

Отпуск. Где? Когда? R

Reading time4 min
Views13K
imageВ то время как за окном температура на пути к очередным рекордам, интересно посмотреть, а какие вообще бывали температуры в произвольный интервал времени, за любые года за последние несколько десятилетий в 30 000 точках по всему миру. А может не прогадать с днями отпуска, и взять их в те дни, когда есть какое-то «статистическое преимущество» в выбранном местоположении по теплой погоде, а может быть по холодной, оценив его визуально на любой из трех типов диаграмм. Ну или можно просто повращать глобус, визуально оценить разнообразие температур и «как прекрасен этот мир».
Описание далее

Панамские документы. С миру по нитке

Reading time3 min
Views15K

imageКак многим известно из прессы, международный консорциум журналистов-расследователей (ICIJ) выложил в свободный доступ, так называемый «Панамский архив»: сведения о лицах, связанных с офшорными компаниями по всему миру, полученные неизвестными лицами из панамской юридической фирмы Mossack Fonseca.


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

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

Как построить географическую панель наблюдения с данными в реальном времени

Reading time3 min
Views9.3K
В этом посте покажу, как построить интерактивную географическую панель наблюдения с Displayr, Plotly и R. Особенно интересно, что она отслеживает позицию военных самолетов в реальном времени. Для этого я собираюсь взять данные из двух разных источников (регионы на основании размера ВВС и отслеживание позиции самолетов в реальном времени). Панель наблюдения отображает динамические данные двумя способами: оттенок региона (чтобы показать численность ВВС в стране) и точки-маркеры (для позиций самолетов). Потом я построю карту, чтобы аккуратно и красиво отобразить все эти данные.
Читать дальше →

R: пакет ellipse для визуализации доверительных областей

Reading time1 min
Views4.9K
Здравствуйте.

В последнем посте из R-хаба «Визуализация двумерного гауссиана на плоскости» был описан алгоритм построения доверительного эллипса по ковариационной матрице. Алгоритм сопровождался примером и R-скриптом.

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

Рассмотрим пример.
Читать дальше →

Статистический анализ ассоциативных правил в результатах опросов

Reading time7 min
Views7.1K
В предыдущей части статьи был рассмотрен метод поиска ассоциативных правил в данных европейского социального исследования. Эта часть о статистическом анализе полученных правил. Ключевой момент в том, что классические статистические методы, например, критерий согласия хи-квадрат, не имеют основания быть использованными для результатов опроса. Но по каким причинам? И как проверять гипотезы? Об этом пойдет речь в этой публикации.



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

Таблицы сопряженности и факторизация неотрицательных матриц

Reading time6 min
Views16K
Факторизация неотрицательных матриц (NMF) — это представление матрицы V в виде произведения матриц W и H, в котором все элементы трех матриц неотрицательны. Это разложение используется в различных областях знаний, например, в биологии, компьютерном зрении, рекомендательных системах. В этой публикации пойдет речь о таблицах сопряженности социологических и маркетинговых данных, факторизация которых помогает понять структуру данных этих таблиц.


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

Таблицы сопряженности: лог-линейные модели и Марковские сети

Reading time7 min
Views16K
В предыдущей части публикации был рассмотрен метод факторизации неотрицательных матриц в качестве снижения размерности и визуализации таблиц сопряженности. В этой части будет проведен статистический анализ полученных диаграмм с использованием лог-линейных моделей. Напомню, примеры демонстрируются для complex survey данных — стратифицированных, кластеризованных и взвешенных выборок. Это обстоятельство предполагает применение специальных методов оценки и выбора моделей. Для визуализации полученных результатов применяются Марковские сети — удобный инструмент графического представления взаимодействия факторов лог-линейных моделей.



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

Ко-кластеризация: cегментирование данных вдоль и поперёк

Reading time6 min
Views11K
Обычно кластеризация подразумевает выделение нескольких групп объектов со схожими характеристиками внутри группы, а между группами — различными. Особенность ко-кластеризации — группирование не только объектов, но и самих характеристик этих объектов. То есть, если данные представлены в виде матрицы, то кластеризация — это перегруппировка строк или столбцов матрицы, а ко-кластеризация — перегруппировка и строк и столбцов матрицы данных.
Как и в предыдущих моих публикациях, примеры использования методов и визуализация решений показаны на данных результатов опросов. Типичная область применения алгоритмов ко-кластеризации — биоинформатика, сегментирование изображений, анализ текстов.



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

Конкурс kaggle по анализу данных анкетирования населения

Reading time4 min
Views8.7K
На kaggle сейчас проходит конкурс USA Census по поиску интересных фактов в American Community Survey данных за 2013 год. Данные этого анкетирования выложены в свободный доступ, подробности можно найти здесь.
Kaggle выбрал для анализа два направления — персональные сведения (пол, возраст, семейное положение и т.д.) и сведения о домохозяйствах (различные характеристики жилья, доход домохозяйства, налоговые платежи и прочее). Хочу поделиться своими результатами, которые сфокусированы на различиях домохозяйств в зависимости от вида права собственности на их жилье — владение с ограничением (ипотека или заем), владение без ограничений и не владеют (аренда).


infographics: American Housing Survey Factsheets
Читать дальше →

Составы команд на Евро 2016: сравнение европейских футбольных лиг

Reading time3 min
Views15K

Внимание, футбол на Хабре! Вот этот пост побудил меня загрузить данные о распределении игроков команд-участниц Евро 2016 по национальным лигам, в которых они выступают. На значимый турнир в национальные сборные вызывают сильнейших на данный момент футболистов. По этой выборке мы можем сравнить между собой европейские футбольные первенства. Какие лиги самые представительные на Евро 2016 и за счет чьих сборных? Под катом графики (трафик) и немного рассуждений. Свисток, игра началась!


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

Графические модели на основе гауссовых копул

Reading time10 min
Views8.9K
Лог-линейные модели и их представления в виде марковских сетей позволяют показать структуру взаимосвязей между случайными величинами. Однако полученная визуализация может оказаться трудна для восприятия из-за большого числа равнозначных ребер в графе такой модели. При работе с порядковыми и бинарными переменными гауссовы копулы (Gaussian copula graphical models, сокр. GCGM) дают возможность повысить наглядность и упростить интерпретацию модели. В статье приведен краткий обзор теории и построен пример GCGM для European Social Survey данных.


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

Выборы-2016. Часть 1 — результаты и сравнения

Reading time3 min
Views17K

В сентябре прошли выборы в Госдуму РФ VII созыва. При голосовании вся территория России была разделена на 225 округов. В каких округах каждая из партий получила высокие (или низкие) результаты? Какие значения принимала явка избирателей и как она влияла на результаты партий? Ответы на эти вопросы и ряд других наблюдений представлены в этой публикации.


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

Выборы-2016. Часть 2 — удивительное рядом и оно разрешено

Reading time4 min
Views27K

В первой части статьи о выборах 2016 года шла речь о результатах в 225 избирательных округах. В этот раз рассмотрим данные о результатах голосования по участковым избирательным комиссиям (УИК), которых насчитывалось чуть менее 100 тысяч. Этот уровень детализации позволяет увидеть неожиданные явления и удивительные закономерности в результатах голосования.


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

Рейтинги автомобильных марок: пример анализа переменных с множественным откликом

Reading time5 min
Views4.5K


В анкетных маркетинговых исследованиях довольно часто встречаются вопросы, в которых респонденты могут выбрать несколько подходящих вариантов из списка возможных ответов (check all that apply questions). Ответы респондентов на такие вопросы задают переменные с множественным откликом (multiple-response variables). Подходящие статистического методы для работы с multiple-response переменными не являются широко известными. В этой статье мы рассмотрим анализ таких переменных на примере данных об автомобильных рейтингах.

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

Ричард Хэмминг: «Есть мысли, о которых вы не можете думать»

Reading time13 min
Views36K
«Есть запахи, которые вы не можете ощущать, длины волн света, которые вы не видите, звуки, которые вы не можете услышать,… есть мысли, о которых вы не можете думать.»

imageПривет, Хабр.
Помните офигенную статью «Вы и ваша работа» (+219, 1928 в закладки, 328k прочтений)?

Так вот у Хэмминга (да, да, самоконтролирующиеся и самокорректирующиеся коды Хэмминга) есть целая книга, написанная по мотивам его лекций. Давайте ее переведем, ведь мужик дело говорит.

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

Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

Глава 24. Квантовая механика

(за перевод спасибо Нате Блянкинштейн)

Большинство физиков в настоящее время считают, что у них есть базовое описание Вселенной [хотя в настоящее время они признают, что 90-99% Вселенной находится в форме «темной материи», о которой они не знают ничего кроме того, что она испытывает гравитацию]. Вы должны понимать, что во всей науке есть только описания того, как что-то происходит, и ничего о том, почему это происходит. Ньютон дал нам формулу, выражающую как работает гравитация, и он не делал никаких гипотез ни о том, чем она является, ни через какую среду она работает, не говоря уже о том, почему она работает. На самом деле он даже не верил в «дальнодействие».

Причины обсуждать квантовую механику, КМ, такие:

  1. это фундаментальная физика,
  2. она имеет много неожиданных интеллектуальных следствий и
  3. дает ряд моделей для работы.

В конце XIX — начале XX века физика столкнулась с рядом проблем. Среди них были следующие:

Как научиться мыслить образами, используя визуальные аналогии

Reading time29 min
Views74K
Визуалы – это люди, которые, воспринимают большую часть информации с помощью зрения. Визуалы составляют примерно 60% населения нашей планеты (автор статьи, Анна Виталь, также входит в их число). Вы можете спросить: как же нам удается общаться с вами с помощью изображений? Все достаточно просто – для этой цели мы используем хорошо известные визуальные символы и аналогии. Ниже представлены некоторые из таких зрительных аналогий, начиная с наиболее простых и заканчивая самыми сложными.

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

«Оч.умелые ручки»: делаем Tableau/Qlik из R и «синей изоленты»

Reading time4 min
Views5.5K

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


Естественно, что название является потешным, но, как хорошо известно, в каждой шутке есть доля правды. Сама тема возникла, когда в очередной сотый раз пришлось слышать настойчивое пожелание о том, что необходим «гибкий конструктор отчетов/графиков». После определенного момента проще взять и сделать, чем в очередной раз объяснять, что tidyverse покрывает все необходимые потребности.


Сама постановка задачи предельно проста: обеспечить графический интерфейс для рисования разнообразных графических представлений по произвольным табличным данным. Классическое решение представляет собой две связанные сущности:


  • интерфейс с большим-большим количеством менюшек и кнопочек, с множественными закулисными IF для управления взаимными состояниями этих элементов;
  • «гибкий плоттер» с большим количеством вложенных IF для отрисовки графиков в соотвествии со скормленным данными и положением кнопочек-ползунков, выставленных в UI.

С одной стороны делать «Yet Another Tableau» совершенно неинтересно. С другой стороны, постановка в стиле «сделать так, чтобы все было, но ничего не надо делать» — типичная задача для ТРИЗ.


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



Две ключевых идеи по упрощению задачи следующие (ничего нового, все уже придумано до нас):


  1. вместо статически заданного UI переходим к динамически генерируемому;
  2. используем интерпретатор R не только для исходного кода, но и внутри самого кода.

Идея 1. Динамический web-интерфейс


Вариант, когда все управляющие элементы статически заданы и меняется лишь их параметризация (название, состояние, списки, выбранные элементы ...) удобен на этапе дизайна. Все понятно, все очевидно, можно ручками пощупать. Но если допустимые состояния этих элементов очень сильно связано как с исходными данными для анализа (data.frame), так и с состоянием друг друга, мы попадаем в ситуацию весьма большого количества нетривиальных обработчиков событий по каждому элементу. Много-много запутанного кода.


Сделаем по-другому. Вместо UI элементов со сложным поведением раскидываем с помощью uiOutput placeholder-ы, в которые динамически рассчитываем и генерируем с помощью shiny::renderUI представление этого элемента. Все внешние параметры, требуемые для генерации элемента, трактуем как реактивные элементы (reactive). При этом все такие интерактивные элементы выступают в качестве «автономных агентов», которые смотрят на окружение и подстраиваются под него. Пользователь изменил состояние одного элемента — все зависимые стали пересчитывать по очереди свое состояние (мы явно не обрабатываем события, а используем реактивный подход shiny). При изменении их состояния могут возникнуть новые индуцированные изменения. И так, пока все не стабилизируется.


В результате, в коде остается только один обработчик (кнопка «Go»)
  observeEvent(input$gen_plot, { # код демонстрирует принцип

    escname <- function(x){
      # имена колонок надо закавычить
      # .....
    }

    point_code <- ""
    if(input$shape_type!="__NO_MAPPING__") {
      aes <- c("shape"=escname(input$aes_shape_col), "color"=escname(input$aes_color_col))
      point_code <- buildPointCode(fixed=c("shape"=input$shape_type, "color"=glue("'{input$plot_color}'")), aes=aes)
    }

    line_code <- ""
    if(input$line_type!="__NO_MAPPING__") {
      aes <- c("linetype"=escname(input$aes_linetype_col), "color"=escname(input$aes_color_col))
      line_code <- buildLineCode(fixed=c("linetype"=input$line_type, "color"=glue("'{input$plot_color}'")), aes=aes)
    }

    gcode <- glue("ggplot(data_df(), aes(x=`{input$x_axis_value}`, y=`{input$y_axis_value}`))\\
                  {point_code} {line_code} + xlab('{input$x_axis_label}')") %>%
      style_text(scope="spaces")

    plot_Rcode(gcode)
  })  
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity