Цель проведения тренинга «Анализ данных и моделирование взаимосвязи в пакете R» – изучить базовые возможности программы R – бесплатного языка программирования для проведения статистических вычислений, а также научиться организовывать ввод данных и управлять ими, проводить первичный статистический анализ данных, представлять их в графическом виде, уметь находить взаимосвязи в данных. Обучение рассчитано на слушателей без опыта работы в R или с начальными знаниями пакета.

Слушателям желательно иметь навыки программирования и быть знакомым с основами статистического анализа.

По окончания обучения Вы будете уметь в программе R:

  • Правильно формировать выборку данных для анализа
  • Организовывать ввод данных и управлять данными
  • Выполнять описательный статистический анализ
  • Изучать взаимосвязь в таблицах сопряженности
  • Проверять статистические гипотезы о равенстве средних
  • Использовать графические возможности
  • Проводить корреляционный анализ
  • Проводить регрессионный анализ
  • Проводить дисперсионный анализ

Продолжительность тренинга: 32 ак.ч. или 4 дня.

Программа обучения:

Тема 1. Основные понятия статистического анализа данных – 2 ак.ч.

  • Статистическое исследование
  • Способы получения данных
  • Отличие наблюдения от эксперимента
  • Генеральная совокупность и выборка
  • Требования к данным при формировании выборки
  • Понятие точечной и интервальной статистической оценки
  • Признаки и переменные
  • Шкалы измерения переменных
  • Направления анализ статистических данных
  • Описательная и аналитическая статистика
  • Выбор методов статистического анализа в зависимости от шкал измерения переменных
  • Статистическая гипотеза
  • Виды статистических ошибок
  • Принципы проверки статистических гипотез
  • Выбор уровня значимости при проверке гипотез

Тема 2. Введение в работу в среде R – 2 ак.ч.

Тема 3. Основы программирования в R – 2 ак.ч.

  • Виды объектов в R
  • Вектора
  • Списки
  • Матрицы
  • Факторы
  • Таблицы данных
  • Выражения
  • Операторы доступа к данным
  • Функции и аргументы
  • Циклы и условные операторы
  • Управления базами данных в R
  • Векторизация операций
  • Отладка
  • Объектно-ориентированное программирование

Тема 4. Ввод и организация данных в R – 2 ак.ч.

  • Способы загрузки данных
  • Непосредственный ввод данных
  • Ввод данных в таблице
  • Импорт данных из MS Excel
  • Импорт данных из других статистических пакетов и баз данных
  • Сохранение результатов анализа
  • Задание количественных данных
  • Задание порядковых и номинальных данных
  • Задание пропущенных значений в данных
  • Выявление выбросов и ошибок
  • Принципы преобразование данных

Тема 5. Графические возможности R – 2 ак.ч.

  • Графические функции
  • Графические устройства
  • Графические параметры
  • Интерактивная графика
  • Составные изображения
  • Устройства вывода

Тема 6. Описательный статистический анализ в R – 4 ак.ч.

  • Статистики центральной тенденции
  • Средняя арифметическая
  • Модальное значение
  • Медианное значение
  • Статистики разброса
  • Дисперсия и стандартное отклонение
  • Коэффициент вариации
  • Процентили
  • Гистограммы
  • Ящичковые диаграммы
  • Z-преобразование
  • Нормальный закон распределения
  • Асимметрия и эксцесс
  • Проверка распределения на нормальность
  • Некоторые законы распределения
  • Биномиальное распределение
  • Распределение Пуассона
  • Равномерное распределение
  • Экспоненциальное распределение
  • Логнормальное распределение
  • Стандартная ошибка и интервал для средней

Тема 7. Формирование данных для анализа выборочным методом – 2 ак.ч.

  • Генеральная и выборочная совокупность
  • Характеристики выборки
  • Особенности выборочного метода исследования
  • Классификация выборок
  • Виды и методы вероятностного отбора
  • Способы формирования выборок
  • Простой случайный отбор
  • Систематический случайный отбор
  • Кластерный отбор
  • Одноступенчатный кластерный отбор
  • Многоступенчатый кластерный отбор
  • Алгоритм проведения выборочных обследований
  • Определение необходимого объема выборки

Тема 8. Статистические тесты выявления различий в выборках в R – 4 ак.ч.

  • Гипотезы о сравнении средних
  • Z-критерий для сравнения средних
  • Z-критерий для сравнения долей
  • Одновыброчный t-критерий
  • T-критерий для независимых выборок
  • T-критерий для зависимых выборок
  • Условия применения непараметрических критериев
  • Одновыборочный критерий знаковых рангов Вилкоксона
  • Критерий Манна-Уитни
  • Критерий знаков для связанных выборок
  • Критерий знаков Вилкоксона для связанных выборок
  • Непараметрический дисперсионный анализ Крускала-Уоллиса
  • Критерий Фридмана для зависимых выборок

Тема 9. Оценка взаимосвязи между переменными в R – 4 ак.ч.

  • Анализ взаимосвязи между категориальными переменными
  • Таблицы сопряженности
  • Ожидаемые частоты и остатки в таблицах сопряженности
  • Критерий хи-квадрат
  • Критерий согласия
  • Классификация видов взаимосвязи между количественными переменными
  • Диаграммы рассеяния
  • Предпосылки и условия проведения корреляционного анализа
  • Коэффициент корреляции Пирсона
  • Ранговые коэффициенты корреляции
  • Коэффициент корреляции Спирмена
  • Проверка значимости связи
  • Интервальные оценки коэффициентов корреляции
  • Частные коэффициенты корреляции

Тема 10. Моделирование формы связи с помощью регрессионного анализа в R– 4 ак.ч.

  • Основные понятия регрессионного анализа
  • Парная и множественная линейная модель регрессии
  • Предпосылки линейного регрессионного анализа
  • Оценка коэффициентов регрессии
  • Проверка обоснованности модели регрессии
  • Значимость уравнения регрессии
  • Значимость коэффициентов регрессии
  • Отбор переменных в регрессионном анализе
  • Оценка точности уравнения регрессии
  • Оценка статистической устойчивости уравнения регрессии
  • Точечная и интервальная оценка зависимой переменной
  • Нелинейные регрессионные модели
  • Категориальные независимые переменные в модели регрессии

Тема 11. Моделирование взаимосвязи с помощью дисперсионного анализа в R– 4 ак.ч.

  • Модели дисперсионного анализа
  • Предпосылки применения дисперсионного анализа
  • Проверка гипотезы о равенстве дисперсий
  • Модель однофакторного дисперсионного анализа
  • Таблица однофакторного дисперсионного анализа
  • Оценка степени влияния фактора
  • Апостериорные критерии парных сравнений
  • Дисперсионный анализ с двумя и более факторами
  • Таблица двухфакторного дисперсионного анализа с взаимодействием
  • Графическая интерпретация взаимодействия факторов
  • Анализ многофакторной модели

Анализ данных в среде R

Институт вычислительной математики и информационных технологий, кафедра анализа данных и исследования операций


Направление
: 01.03.02 "Прикладная математика и информатика. Системное программирование" (бакалавриат, 3 курс)

Дисциплина : "Анализ данных в среде R"

Учебный план : "Очное обучение, 2017 г."

Количество часов: 90 (в том числе: лекции - 18, лабораторные занятия – 36, самостоятельная работа - 36); форма контроля - зачёт.

Направление : 38.03.05 "Бизнес информатика" (бакалавриат, 4 курс)

Дисциплина : "Анализ данных"

Учебный план : "Очное обучение, 2018 г."

Количество часов: 78 (в том числе: лекции - 18, лабораторные занятия – 36, самостоятельная работа - 24); форма контроля - зачёт.


Ключевые слова
: Data Mining, Machine Learning, regression, classification, clusterization, support vector, SVM, artificial neutron, neural network, recommendation system, анализ данных, машинное обучение, модель, выборка, переменная отклика, обучение выборки, переобучение выборки, обучение с учителем, обучение без учителя, пакет R, язык программирования R, статистика, случайная величина, с.в., закон распределения, нормальное распределение, выборка, статистика, метод максимального правдоподобия, распределение Хи-квадрат, распределение Стьюдента, распределение Фишера, гипотеза, область принятия гипотезы, уровень значимости, ошибки первого и второго рода, сравнение выборок, критерии согласия, таблица сопряженности признаков, корреляция, регрессия, линейная регрессия, нелинейная регрессия, фактор, предиктор, однофакторная регрессия, множественная регрессия, классификация, логистическая регрессия, однофакторный дискриминантный анализ, Байесовский подход, наивный Байес, метод опорных векторов, разделяющая гиперплоскость, деревья решений, нейронная сеть, нейрон, функция активации, рекомендательная система, кластеризация, функционал качества.

Темы : 1. Cреда разработки R: сведения из истории. установка и запуск пакета. 2. Программируем в R. первые шаги. 3. Построение графиков в среде R. 4. Ввод данных и работа с файлами в среде R. 4.1. Работа с одномерными массивами данных. 4.2. Работа с матрицами и таблицами данных. 5. Проверка статистических гипотез в среде R. 5.1. Проверка гипотезы о законе распределения вероятностей случайной величины (критерий Хи-квадрат Пирсона). 5.2. Проверка гипотезы о независимости признаков с качественной группировкой (критерий Хи-квадрат Пирсона). 5.3. Проверка гипотезы о равенстве математических ожиданий нормальных генеральных совокупностей (критерий Стьюдента). 5.4. Проверка гипотезы о равенстве дисперсий нормальных генеральных совокупностей (критерий Фишера). 6. Задача построения модели однофакторной линейной регрессии. Прогнозирование. 7. Задача многожественной линейной регрессии. 7.1. Задача однофакторной линейной регрессии как частный случай множе-ственной регрессии. 7.2. Исследование зависимости переменной отклика от фактора в регресси-онной модели. 8. Задача классификации, подходы к её решению. 8.1. Логистическая регрессия. 8.2. Линейный дискриминантный анализ. 8.3. Деревья решений - принцип "разделяй и властвуй" ("divide and con-quer"). 9. Нейронные сети (neural networks) и их применение в машинном обучении. 10. Опорные векторы, метод опорных векторов ("support vector machines", SVM) в машинном обучении. 11. Рекомендательные системы ("recommendation system"), их назначение, построение, применение. 12. Специальные задачи машинного обучения.


Дата начала эксплуатации : 1 сентября 2014 года
  • Миссаров Мукадас Дмухтасибович, зав. кафедрой анализа данных и исследова-ния операций КФУ, д.ф.-м.н., профессор, email: [email protected]
  • Кашина Ольга Андреевна, к.ф.-м.н., доцент кафедры анализа данных и исследования операций, email: [email protected]

Введение

Прежде всего, давайте обсудим терминологию. Речь идёт об области, которая в западной литературе называется Data Mining, а на русский язык чаще переводится как «анализ данных». Термин не совсем удачный, поскольку слово «анализ» в математике достаточно привычно, имеет устоявшееся значение и входит в название многих классических разделов: математический анализ, функциональный анализ, выпуклый анализ, нестандартный анализ, многомерный комплексный анализ, дискретный анализ, стохастический анализ, квантовый анализ и т.д. Во всех перечисленных областях науки изучается математический аппарат, который базируется на некоторых фундаментальных результатах и позволяет решать задачи из этих областей. В анализе данных ситуация гораздо сложнее. Это, прежде всего, прикладная наука, в которой математического аппарата нет, в том смысле, что нет конечного набора базовых фактов, из которых следует, как решать задачи. Многие задачи «индивидуальны», и сейчас появляются всё новые и новые классы задач, под которые необходимо разрабатывать математический аппарат. Тут ещё большую роль играет тот факт, что анализ данных относительно новое направление в науке.

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

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

В прикладных областях самое важное – это практика! Невозможно представить себе хирурга, который не сделал ни одной операции. Собственно, это и не хирург вовсе. Также не может аналитик данных обойтись без решения реальных прикладных задач. Чем больше таких задач вы самостоятельно решите, тем более квалифицированными специалистами вы станете.

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

Во-вторых, важно грамотно выбрать себе учебные курсы и наставников.

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

выдал 89% верных ответов. Вопрос: много это или мало? Если мало, то в чём дело: вы неправильно запрограммировали алгоритм, выбрали неверные параметры алгоритма или сам алгоритм плохой и не подходит для решения данной задачи? Если работа дублируется, то ошибки в программе и неверные параметры удаётся быстро найти. А если она дублируется специалистом, то вопросы оценки результата и приемлемости модели тоже решаются быстро.

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

Статистика

Анализ данных в R

1. Переменные

В R, как и во всех остальных языках программирования, существуют переменные. Что такое переменная? По сути, это адрес, при помощи которого мы можем найти какие-то данные, которые мы сохраняем в памяти.

Переменные состоят из левой и правой части, разделенных оператором присваивания. В R оператором присваивания является конструкция “<-”, если название переменной находится слева, а значение, которое сохраняется в памяти - справа, и она аналогична “=” в других языках программирования. В отличии от других языков программирования, хранимое значение может находиться слева от оператора присваивания, а имя переменной - справа. В таком случае, как можно догадаться, оператор присваивания примет конструкцию следующего вида: “->”.

В зависимости от хранимых данных, переменные могут быть различного типа: целочисленными, вещественными, строковыми. Например:

my.var1 <- 42 my.var2 <- 35.25

В данном случае переменная my.var1 будет целочисленными типа, а my.var2 - вещественного.

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

my.var1 + my.var2 - 12

my.var3 <- my.var1^2 + my.var2^2

Кроме арифметических операций, можно выполнять логические операции, то есть операции сравнения.

my.var3 > 200 my.var3 > 3009 my.var1 == my.var2 my.var1 != my.var2 my.var3 >= 200 my.var3 <= 200

Результатом логической операции будет правдивое (TRUE) или ложное (FALSE) высказывание. Так же можно выполнять логические операции не только между переменной с каким-то значением, но и с другой переменной.

my.new.var <- my.var1 == my.var2

Random Forest - один из моих любимых алгоритмов data mining. Во-первых он невероятно универсален, с его помощью можно решать как задачи регрессии так и классификации. Проводить поиск аномалий и отбор предикторов. Во-вторых это тот алгоритм, который действительно сложно применить неправильно. Просто потому, что в отличии от других алгоритмов у него мало настраиваемых параметров. И еще он удивительно прост по своей сути. И в то же время он отличается удивительной точностью.

В чем же идея такого замечательного алгоритма? Идея проста: допустим у нас есть какой-то очень слабый алгоритм, скажем, . Если мы сделаем очень много разных моделей с использованием этого слабого алгоритма и усредним результат их предсказаний, то итоговый результат будет существенно лучше. Это, так называемое, обучение ансамбля в действии. Алгоритм Random Forest потому и называется "Случайный Лес", для полученных данных он создает множество деревьев приятия решений и потом усредняет результат их предсказаний. Важным моментом тут является элемент случайности в создании каждого дерева. Ведь понятно, что если мы создадим много одинаковых деревьев, то результат их усреднения будет обладать точностью одного дерева.

Как он работает? Предположим, у нас есть некие данные на входе. Каждая колонка соответствует некоторому параметру, каждая строка соответствует некоторому элементу данных.

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


Thursday, May 10, 2012

Thursday, January 12, 2012


Вот собственно и всё. 17-ти часовой перелет позади, Россия осталась за океаном. А в окно уютной 2-ух спальной квартиры на нас смотрит Сан-Франциско, знаменитая Кремниевая долина, Калифорния, США. Да, это и есть та самая причина, по которой я практически не писал последнее время. Мы переехали.

Всё это началось еще в апреле 2011 года, когда я проходил телефонное интервью в компании Zynga. Тогда это все казалось какой-то игрой не имеющей отношения к реальности и я и представить себе не мог, во что это выльется. В июне 2011 года Zynga приехали в Москву и провели серию собеседований, рассматривалось около 60 кандидатов прошедших телефонное интервью и из них было отобрано около 15 человек (точное число не знаю, кто-то потом передумал, кто-то сразу отказался). Интервью оказалось неожиданно простым. Ни тебе задачек на программирование, ни заковыристых вопросов про форму люков, в основном проверялись способности болтать. А знания, на мой взгляд, оценивались лишь поверхностно.

А дальше началась канитель. Сначала мы ждали результатов, потом офера, потом одобрение LCA, потом одобрения петиции на визу, потом документы из США, потом очередь в посольстве, потом дополнительную проверку, потом визу. Временами мне казалось, что я готов все бросить и забить. Временами я сомневался, а нужна ли нам эта Америка ведь и в России не плохо. Весь процесс занял где-то около полугода, в итоге, в середине декабря мы получили визы и начали готовиться к отъезду.

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

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


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

Result <- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0){ try({ quotes <- getSymbols(d$Symbol, src="Finam", from="2010-01-01", auto.assign=FALSE) if (!is.nan(quotes)){ price <- Cl(quotes) if (length(price)>0){ dd <- d$Divs result <- rbind(result, data.frame(d$Symbol, d$Name, d$RegistryDate, as.numeric(dd)/as.numeric(price), stringsAsFactors=FALSE)) } } }, silent=TRUE) } } colnames(result) <- c("Symbol", "Name", "RegistryDate", "Divs") result


Аналогично можно построить статистику для прошлых лет.