Методическое пособие "Статистический анализ и визуализация данных с помощью R". Методическое пособие "Статистический анализ и визуализация данных с помощью R" – Электронная книга, адрес доступа

Методическое пособие "Статистический анализ и визуализация данных с помощью R". Методическое пособие "Статистический анализ и визуализация данных с помощью R" – Электронная книга, адрес доступа

Программа курса

Элементы программирования в R

  • Описательные статистики и визуализация
  • Например, что важнее: средний чек или типичный чек?

Кластерный анализ

  • Какая задача решается. Разбить группу объектов на подгруппы.
  • Пример задачи. Сегментация сайтов, определение схожих сайтов.
  • Изучаемые методы. Иерархический кластерный анализ, метод к-средних, Метод к-медоидов.

Проверка статистических гипотез

  • Какая задача решается. Сравнить две группы объектов.
  • Пример задачи. A/B тестирование поведения пользователя на разных версиях страницы сайта.
  • Изучаемые методы. Тест для пропорций, Критерий Стьюдента, Критерий Ливиня, Критерий Уилкоксона-Манна-Уитни

Линейный регрессионный анализ.

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

Прогнозирование

  • Какая задача решается. Построить прогноз временного ряда
  • Пример задачи. Спрогнозировать посещаемость сайта на 6 месяцев вперед.
  • Изучаемый метод. Экспоненциальное сглаживание

Machine Learning (Распознавание образов)

  • Пример задачи. Распознать пол и возраст у каждого посетителя сайта
  • Изучаемые методы. Метод k-го ближайшего соседа Деревья классификации (CART). Случайные леса. Gradient boosting machine

Оценки за курс

Слушателям будут выданы 14 лабораторных работ. Оценка за курс выставляется по следующему правилу:

  • Отлично - зачтены все работы;
  • Хорошо – зачтены все работы, кроме однои?;
  • Удовлетворительно – зачтены все работы, кроме двух;
  • Неудовлетворительно - в остальных случаях.

Лабораторная работа состоит в том, что

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

Пример вопроса. Предложить параметры, которые обеспечат оптимальную работу алгоритма Random Forest при распознавании марки вина по результатам химического анализа.

Что нужно знать, чтобы слушать курс

Предполагается, что слушатели курса уже прослушали курс теории вероятностей.

Литература

  • Шипунов, Балдин, Волкова, Коробейников, Назарова, Петров,Суфиянов Наглядная статистика. Используем R
  • Мастицкий, Шитиков Статистический анализ и визуализация данных с помощью R
  • Bishop Pattern Recognition and Machine Learning.
  • James, Witten, Hastie, Tibshirani. An Introduction to Statistical Learning. With Applications in R.
  • Hastie, Tibshirani, Friedman. The Elements of Statistical Learning_Data Mining, Inference, and Prediction 2+ed
  • Crawley. The R Book.
  • Kabacoff R in Action. Data analysis and graphics with R.

Преподаватели

Список лекций

Введение в R: базовые команды. Медиана, квантили и квартили. Гистограмма. Столбиковая диаграмма. Круговая диаграмма. Диаграмма рассеивания. Матрица диаграмм рассеивания. Использование цвета на графике. Ящики с усами (ящиковая диаграмма). Типичное наблюдение выборки: среднее арифметическое, медиана или усеченное среднее. Выбор способа описания типичного значения, адекватного анализируемым данным. Логнормальное распределение. Выбросы и экстремальные наблюдения.

Иерархический кластерный анализ. Кластер, расстояния между объектами, расстояния между кластерами. Алгоритм построения дендрограммы. Каменистая осыпь/локоть. Стандартизация данных. Типичные ошибки при подготовке данных. Интрепретация результатов.

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

Проверка статистических гипотез. Гипотезы согласия, однородности, независимости, гипотзы о параметрах распределения.

Проверка статистических гипотез. Ошибки первого и второго рода, р-значение и уровень значимости, алгоритм проверки статистической гипотезы и интерпретация результатов. Гипотеза о нормальности распределения. Критерии Шапиро-Уилка и Колмогорова-Смирнова. Несущественные отклонения от нормальности. Сравнение выборок. Независимые и парные выборки. Выбор между t-критерием Стъюдента, критерием Манна-Уитни-Вилкоксона и критерием Муда. Разновидности t-критериев Стъюдента и сравнение дисперсий. Визуализация при сравнениях. Односторонние и двусторонние тесты.

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

Линейный регрессионный анализ Модель, интерпретация оценок коэффициентов, множественный коэффициент детерминации. Интерпретация множественного коэффициента детерминации, ограничения на область его применения. Выявление наиболее значимых предикторов и оценка вклада каждого предиктора. Алгоритмы корректировки построенных моделей. Коллинеарность.

Линейный регрессионный анализ: прогнозирование коротких временных рядов.

Прогнозирование на основе регрессионной модели с сезонными индикаторными (фиктивными, структурными) переменными. Тренд, сезонные составляющие, смена характера ряда, выбросы. Логарифмирование – прием для преобразования мультипликативной сезонности в аддитивную. Индикаторные переменные. Переобучение.

Линейная регрессия - анализ остатков. Нарушения модельных ограничений теоремы Гаусса-Маркова. Анализ остатков. Ошибка спецификации. Мультиколлинеарность, Tolerance и VIF. Проверка постоянства дисперсий остатков. Коррекция моделей при наличии отклонений распределения остатков от нормальности. Расстояние Кука и leverage. Статистика Дурбина-Ватсона. Сокращение числа сезонных поправок.

Экспоненциальное сглаживание Метод Holt"а-Winters"а. Локальный тренд, локальная сезонность.

Терминология: Machine Learning, Artificial Intelligence, Data Mining и Pattern Recognition.

Метод к-го ближайшего соседа. Состоятельность метода. Lazy learning (ленивое обучение). Feature Selection. Кросс-валидация. k-fold кросс-валидация. Overfitting (Чрезмерная подгонка). Обучающая и тестовая выборки.

Метод к-го ближайшего соседа Примеры. Определение числа ближайших соседей. Таблица сопряженности для определения качества работы метода.

Деревья классификации CART. Геометрическое представление. Представление в виде набора логических правил. Представление в виде дерева. Узлы, родители и потомки, конечные узлы. Пороговые значения. Библиотека rpart. Меры чистота узла (impurity measures). Методы измерения чистоты: джини, энтропия, ошибки классификации. Правила останоки обучения дерева. Библиотека rpart.plot.

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

Векторные операции

Как мы помним, базовым типом в R является вовсе не число, а вектор, и основные арифметические операции действуют на векторы поэлементно:

> x <- 1:6; y <- 11:17 > x + y 12 14 16 18 20 22 18 > x > 2 FALSE FALSE TRUE TRUE TRUE TRUE > x * y 11 24 39 56 75 96 17 > x / y 0.09090909 0.16666667 0.23076923 0.28571429 0.33333333 0.37500000 0.05882353

Тут все довольно просто, однако вполне логично задаться вопросом: что же будет, если длина векторов не совпадет? Если мы, скажем, напишем k <- 2, то будет ли x * k соответствовать умножению вектора на число в математическом смысле? Короткий ответ - да. В более общем случае, когда длина векторов не совпадает, меньший вектор просто продолжается повторением:

> z <- c(1, 0.5) > x * z 1 1 3 2 5 3

Примерно так же обстоят дела и с матрицами.

> x <- matrix(1:4, 2, 2); y <- matrix(rep(2,4), 2, 2) > x * y [,1] [,2] 2 6 4 8 > x / y [,1] [,2] 0.5 1.5 1.0 2.0

При этом «нормальное», а не поразрядное умножение матриц будет выглядеть так:

> x %*% y [,1] [,2] 8 8 12 12

Все это, конечно, очень хорошо, однако что же делать, когда нам нужно применять свои собственные функции к элементам векторов или матриц, то есть как это можно сделать без цикла? Подход, который используется в R для решения данной проблемы, очень схож с тем, к чему мы привыкли в функциональных языках, - все это напоминает функцию map в Python или Haskell.

Полезная функция lapply и ее друзья

Первая функция в этом семействе - это lapply . Она позволяет применять заданную функцию к каждому элементу списка или вектора. Причем результатом будет именно список независимо от типа аргумента. Простейший пример с применением лямбда-функций:

> q <- lapply(c(1,2,4), function(x) x^2) > q 1 4 16

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

> q <- lapply(c(1,2,4), function(x, y) x^2 + y, 3)

Со списком функция работает аналогичным образом:

> x <- list(a=rnorm(10), b=1:10) > lapply(x, mean)

Здесь функция rnorm задает нормальное распределение (в данном случае десять нормально распределенных чисел в диапазоне от 0 до 1), а mean вычисляет среднее значение. Функция sapply полностью аналогична функции lapply за исключением того, что она пытается упростить результат. К примеру, если каждый элемент списка длины 1, то вместо списка вернется вектор:

> sapply(c(1,2,4), function(x) x^2) 1 4 16

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

> x <- list(1:4, 5:8) > sapply(x, function(x) x^2) [,1] [,2] 1 25 4 36 9 49 16 64

Для работы с матрицами удобно использовать функцию apply:

> x <- matrix(rnorm(50), 5, 10) > apply(x, 2, mean) > apply(x, 1, sum)

Здесь для начала мы создаем матрицу из пяти строк и десяти столбцов, потом сначала считаем среднее по столбцам, а затем сумму в строках. Для полноты картины следует отметить, что задачи вычисления среднего и суммы по строкам настолько часто встречаются, что в R для этого предусмотрены специальные функции rowSums , rowMeans , colSums и colMeans .
Также функцию apply можно применять для многомерных массивов:

> arr <- array(rnorm(2 * 2 * 10), c(2, 2, 10)) > apply(arr, c(1,2), mean)

Последний вызов можно заменить на более удобный для чтения вариант:

> rowMeans(arr, dim = 2)

Перейдем к функции mapply , представляющей собой многомерный аналог lapply . Начнем с простого примера, который можно найти прямо в стандартной документации к R:

> mapply(rep, 1:4, 4:1) 1 1 1 1 2 2 2 3 3 4

Как можно видеть, здесь происходит применение функции rep к набору параметров, которые генерируются из двух последовательностей. Сама функция rep просто повторяет первый аргумент то число раз, которое указано в качестве второго аргумента. Таким образом, предыдущий код просто эквивалентен следующему:

> list(rep(1,4), rep(2,3), rep(3,2), rep(4,1))

Иногда бывает необходимо применить функцию к какой-то части массива. Это можно сделать с помощью функции tapply . Давай рассмотрим следующий пример:

> x <- c(rnorm(10, 1), runif(10), rnorm(10,2)) > f <- gl(3,10) > tapply(x,f,mean)

Сначала мы создаем вектор, части которого формируются из случайных величин с различным распределением, далее мы генерируем вектор из факторов, который представляет собой не что иное, как десять единиц, потом десять двоек и столько же троек. Затем вычисляем среднее по соответствующим группам. Функция tapply по умолчанию пытается упростить результат. Эту опцию можно выключить, указав в качестве параметра simplify=FALSE.

> tapply(x, f, range, simplify=FALSE)

Когда говорят о функциях apply , обычно также говорят о функции split , которая разбивает вектор на части, аналогично tapply . Так, если мы вызовем split(x, f) то получим список из трех векторов. Таким образом, пара lapply / split работает так же, как и tapply со значением simplify , равным FALSE:

> lapply(split(x, f), mean)

Функция split полезна и за пределами работы с векторами: ее также можно использовать и для работы с фреймами данных. Рассмотрим следующий пример (я позаимствовал его из курса R Programming на Coursera):

> library(datasets) > head(airquality) Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6 > s <- split(airquality, airquality$Month) > lapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")]))

Здесь мы работаем с набором данных, который содержит информацию о состоянии воздуха (содержание озона, солнечная радиация, ветер, температура в градусах Фаренгейта, месяц и день). Мы можем легко сделать отчет о среднемесячных показателях, используя split и lapply , как показано в коде. Использование sapply , однако, даст нам результат в более удобном виде:

> sapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")])) 5 6 7 8 9 Ozone NA NA NA NA NA Solar.R NA 190.16667 216.483871 NA 167.4333 Wind 11.62258 10.26667 8.941935 8.793548 10.1800

Как видно, некоторые значения величин не определены (и для этого используется зарезервированное значение NA). Это означает, что какие-то (хотя бы одно) значения в колонках Ozone и Solar.R были также не определены. В этом смысле функция colMeans ведет себя совершенно корректно: если есть какие-то неопределенные значения, то и среднее, таким образом, не определено. Проблему можно решить, принудив функцию не учитывать значения NA с помощью параметра na.rm=TRUE:

> sapply(s, function(x) colMeans(x[, c("Ozone", "Solar.R", "Wind")], na.rm=TRUE)) 5 6 7 8 9 Ozone 23.61538 29.44444 59.115385 59.961538 31.44828 Solar.R 181.29630 190.16667 216.483871 171.857143 167.43333 Wind 11.62258 10.26667 8.941935 8.793548 10.18000

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

Визуализация данных

Система R необыкновенно богата на средства визуализации данных. И тут передо мной стоит непростой выбор - о чем вообще говорить, если область так велика. Если в случае программирования есть какой-то базовый набор функций, без которого ничего не сделать, то в визуализации огромное количество различных задач и каждая из них (как правило) может быть решена несколькими способами, каждый из которых имеет свои плюсы и минусы. Более того, всегда есть множество опций и пакетов, позволяющих решать эти задачи различным образом.
Про стандартные средства визуализации в R написано очень много, поэтому здесь мне бы хотелось рассказать о чем-то более интересном. В последние годы все более популярным становится пакет ggplot2 , вот про него и поговорим.

Для того чтобы начать работать с ggplot2, нужно установить библиотеку с помощью команды install.package("ggplot2") . Далее подключаем ее для использования:

> library("ggplot2") > head(diamonds) carat cut color clarity depth table price x y z 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31 4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48 > head(mtcars) mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

Данные diamonds и mtcars являются частью пакета ggplot2, и именно с ними мы будем сейчас работать. С первым все понятно - это данные о бриллиантах (чистота, цвет, стоимость и прочее), а второй сет - это данные дорожных тестов (количество миль на галлон, количество цилиндров...) автомобилей 1973–1974 годов выпуска из американского журнала Motor Trends. Более подробную информацию о данных (к примеру, размерность) можно получить, набрав?diamonds или?mtcars .

Для визуализации в пакете предусмотрено много функций, из которых для нас сейчас будет наиболее важна qplot . Функция ggplot предоставляет существенно больше контроля над процессом. Все, что можно сделать с помощью qplot , также можно сделать и с помощью ggplot . Рассмотрим это на простом примере:

> qplot(clarity, data=diamonds, fill=cut, geom="bar")

Того же самого эффекта можно достичь и функцией ggplot:

> ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()

Однако вызов qplot выглядит проще. На рис. 1 можно увидеть, как строится зависимость количества бриллиантов с различным качеством огранки (cut) от чистоты (clarity).

Теперь построим зависимость пробега на единицу топлива автомобилей от их массы. Полученная точечная диаграмма (или диаграмма рассеивания scatter plot ) представлена
на рис. 2.

> qplot(wt, mpg, data=mtcars)

Можно также еще добавить цветовое отображение показателя времени разгона на четверть мили (qsec):

> qplot(wt, mpg, data=mtcars, color=qsec)

При визуализации также можно преобразовывать данные:

> qplot(log(wt), mpg - 10, data=mtcars)

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

> qplot(wt, mpg, data=mtcars, color=factor(cyl))

Также можно менять размер точек, используя, к примеру, size=3 . Если ты собираешься печатать графики на черно-белом принтере, то лучше не использовать цвета, а вместо этого менять форму маркера в зависимости от фактора. Это можно сделать, заменив color=factor(cyl) на shape=factor(cyl) .
Тип графика задается с помощь параметра geom , и в случае точечных диаграмм значение этого параметра равно "points" .

Теперь пускай мы хотим просто построить гистограмму по количеству автомобилей с соответствующим значением цилиндров:

> qplot(factor(cyl), data=mtcars, geom="bar") > qplot(factor(cyl), data=mtcars, geom="bar", color=factor(cyl)) > qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(cyl))

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

Тут следует внести ясность. Дело в том, что текущий построенный нами объект не является гистограммой в строгом смысле слова. Обычно под гистограммой понимают аналогичное отображение для непрерывных данных. В английском языке bar chart (это то, что мы только что сделали) и histogram - это два различных понятия (см. соответствующие статьи в Википедии). Здесь я, с некоторой тяжестью на душе, буду использовать слово «гистограмма» для обоих понятий, полагая, что сама природа данных говорит за себя.

Если вернуться к рис. 1, то ggplot2 предоставляет несколько полезных опций в позиционирование графиков (по умолчанию используется значение position="stack"):

> qplot(clarity, data=diamonds, geom="bar", fill=cut, position="dodge") > qplot(clarity, data=diamonds, geom="bar", fill=cut, position="fill") > qplot(clarity, data=diamonds, geom="bar", fill=cut, position="identity")

Первый из предложенных вариантов строит диаграммы рядом, как показано на рис. 5, второй показывает доли бриллиантов различного качества огранки в общем числе бриллиантов заданной чистоты (рис. 6).

Теперь рассмотрим пример настоящей гистограммы:

> qplot(carat, data=diamonds, geom="histogram", bandwidth=0.1) > qplot(carat, data=diamonds, geom="histogram", bandwidth=0.05)

Здесь параметр bandwidth как раз показывает, какой ширины полоса в гистограмме. Гистограмма показывает, сколько данных приходится на какой диапазон. Результаты представлены на рис. 7 и 8.

Иногда, когда нам нужно построить модель (линейную или, скажем, полиномиальную), мы можем сделать это прямо в qplot и увидеть результат. К примеру, мы можем построить график зависимости mpg от массы wt прямо поверх точечной диаграммы:

> qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"))

По умолчанию в качестве модели будет использоваться локальная полиномиальная регрессия (method="loess"). Результат работы будет выглядеть, как показано на рис. 9, где темно-серая полоса - это стандартная ошибка. Она отображается по умолчанию, ее отображение можно выключить, написав se=FALSE .

Если же мы хотим попробовать натянуть линейную модель на эти данные, то это можно сделать, просто указав method=lm (рис. 10).

И напоследок, конечно же, нужно показать, как строить круговые диаграммы:

> t <- ggplot(mtcars, aes(x=factor(1), fill=factor(cyl))) + geom_bar(width=1) > t + coord_polar(theta="y")

Здесь мы воспользуемся более гибкой функцией ggplot . Это работает так: сначала мы строим график, отображающий доли автомобилей с разным количеством цилиндров в общей массе (рис. 11), затем переводим график в полярные координаты (рис. 12).

Вместо заключения

Вот мы и освоились с использованием R. Что дальше? Понятно, что здесь даны самые базовые возможности ggplot2 и рассмотрены вопросы, связанные с векторизацией. Есть несколько хороших книг по R, которые стоит упомянуть, и к ним, вне всякого сомнения, стоит обращаться чаще, чем к услугам корпорации очень навязчивого добра. Во-первых, это книга Нормана Матлоффа (Norman Matloff) The Art of R Programming. Если же у тебя уже есть опыт в программировании на R, то тебе пригодится The R Inferno, написанная П. Бернсом (Patrick Burns). Классическая книга Software for Data Analysis Джона Чамберса (John Chambers) также вполне уместна.

Если говорить о визуализации в R, то есть хорошая книга R Graphics Cookbook В. Чанга (Winston Chang). Примеры для ggplot2 в этой статье были взяты из Tutorial: ggplot2 . До встречи в следующей статье «Анализ данных и машинное обучение в R»!

Блог "R: Анализ и визуализация данных" существует уже более трех с половиной лет. Несколько месяцев назад родилась идея обобщить методические сообщения, опубликованные здесь за всё это время, в виде электронной книги. Автором идеи, а впоследствии и соавтором книги, стал доктор биологических наук Владимир Кириллович Шитиков (). С удовольствием представляем вам полученный результат в качестве нашего новогоднего подарка.


Методическое пособие "Статистический анализ и визуализация данных с помощью R " адресовано преимущественно студентам, аспирантам, молодым и состоявшимся ученым, а также профессиональным аналитикам, прежде не имевшим опыта работы с R. Следуя традициям блога, мы старались, по возможности, обойтись без злоупотребления "ритуальными" словооборотами, характерными для многочисленных руководств по прикладной статистике, цитирования общеизвестных теорем и приведения многоэтажных расчетных формул. Акцент делался, в первую очередь, на практическое применение – на то, чтобы читатель, руководствуясь прочитанным, смог проанализировать свои данные и изложить результаты коллегам. Книга включает 9 глав, которые охватывают следующие темы:

  • Глава 1: Основные компоненты статистической среды R
  • Глава 2: Описание языка R
  • Глава 3: Базовые графические возможности R
  • Глава 4: Описательная статистика и подгонка распределений
  • Глава 5: Классические методы и критерии статистики
  • Глава 6: Линейные модели в дисперсионном анализе
  • Глава 7: Регрессионные модели зависимостей между количественными переменными
  • Глава 8: Обобщенные, структурные и иные модели регрессии
  • Глава 9: Пространственный анализ и создание картограмм
Кроме того, представлены обширная библиография и список полезных интернет-ресурсов по R.

Официальная текущая версия книги в формате PDF (~11 МБ) доступна для свободного скачивания с двух сайтов:

  • Репозиторий GitHub: https://github.com/ranalytics/r-tutorials
  • Сайт Института экологии Волжского бассейна РАН: http://www.ievbras.ru/ecostat/Kiril/R/

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

Мы будем благодарны за любые ваши замечания и пожелания касательно этой работы - отправляйте их, пожалуйста, по электронной почте rtutorialsbook["собака"]gmail.com

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

«СТАТИСТИЧЕСКИЙ АНАЛИЗ И ВИЗУАЛИЗАЦИЯ ДАННЫХ С ПОМОЩЬЮ R трава корни плоды листва Хайдельберг – Лондон – Тольятти 2014, ...»

-- [ Страница 1 ] --

С.Э. Мастицкий, В.К. Шитиков

СТАТИСТИЧЕСКИЙ АНАЛИЗ И

ВИЗУАЛИЗАЦИЯ ДАННЫХ С ПОМОЩЬЮ R

трава корни плоды листва

Хайдельберг – Лондон – Тольятти

2014, Сергей Эдуардович Мастицкий, Владимир Кириллович Шитиков

Веб-сайт: http://r-analytics.blogspot.com

Данная работа распространяется в рамках лицензии

Creative Commons «Атрибуция – Некоммерческое

использование – На тех же условиях 4.0 Всемирная». Согласно этой лицензии, Вы можете свободно копировать, распространять и видоизменять данное произведение при условии точного указания его авторов и источника. При изменении этого произведения или использовании его в своих работах, Вы можете распространять результат только по такой же или подобной лицензии. Запрещается использовать эту работу в коммерческих целях без согласования с авторами. Более подробная информация о лицензии представлена на сайте www.creativecommons.com

Пожалуйста, ссылайтесь на эту книгу следующим образом:

Мастицкий С.Э., Шитиков В.К. (2014) Статистический анализ и визуализация данных с помощью R.

Электронная книга, адрес доступа:

http://r-analytics.blogspot.com

ПРЕДИСЛОВИЕ 5

1. ОСНОВНЫЕ КОМПОНЕНТЫ СТАТИСТИЧЕСКОЙ СРЕДЫ R 8


1.1. История возникновения и основные принципы организации 8 среды R

1.2. Работа с командной консолью интерфейса R 11

1.3. Работа с меню пакета R Commander 13

1.4. Объекты, пакеты, функции, устройства 17

2. ОПИСАНИЕ ЯЗЫКА R 23

2.1. Типы данных языка R 23

2.2. Векторы и матрицы 24

2.3. Факторы 29

2.4. Списки и таблицы 31

2.5. Импортирование данных в R 37

2.6. Представление даты и времени; временные ряды 40

2.7. Организация вычислений: функции, ветвления, циклы 46

2.8. Векторизованные вычисления в R с использованием apply- 50 функций

3. БАЗОВЫЕ ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ R 58

3.1. Диаграммы рассеяния plot() и параметры графических 58 функций

3.2. Гистограммы, функции ядерной плотности и функция 66 cdplot()

3.3. Диаграммы размахов 74

3.4. Круговые и столбиковые диаграммы 77

3.5. Диаграммы Кливленда и одномерные диаграммы рассеяния 84

4. ОПИСАТЕЛЬНАЯ СТАТИСТИКА И ПОДГОНКА 97

РАСПРЕДЕЛЕ

–  –  –

ПРЕДИСЛОВИЕ

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

История последних 50 лет – это и история развития технологии анализа данных.

Один из авторов с умилением вспоминает конец 60-х годов и свою первую программу расчета парной корреляции, которая набиралась металлическими штырёчками на "операционном поле" из 150 ячеек персональной ЭВМ "Промiнь-2" весом более 200 кг.

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

° доступ к обрабатываемым данным (их загрузка из разных источников и комплектация совокупности взаимосвязанных исходных таблиц);

° редактирование загруженных показателей (замена или удаление пропущенных значений, преобразование признаков в более удобный вид);

° аннотирование данных (чтобы помнить, что представляет собой каждый их фрагмент);

° получение общих сведений о структуре данных (вычисление описательных статистик для того, чтобы охарактеризовать анализируемые показатели);

° графическое представление данных и результатов вычислений в понятной информативной форме (одна картинка на самом деле иногда стоит тысячи слов);

° моделирование данных (нахождение зависимостей и тестирование статистических гипотез);

° оформление результатов (подготовка таблиц и диаграмм приемлемого публикационного качества).

В условиях, когда к услугам пользователя имеются десятки пакетов прикладных программ, актуальна проблема выбора (иногда трагичная, если вспомнить "буриданова осла"): какое программное обеспечение анализа данных следует предпочесть для своей практической работы? Здесь обычно принимается во внимание специфика решаемой задачи, эффективность настройки алгоритмов обработки, издержки на покупку программ, а также вкусы и личные предпочтения аналитика. При этом, например, шаблонная Statistica с ее механическим комплексом кнопок меню, далеко не всегда может удовлетворить творческого исследователя, предпочитающего самостоятельно контролировать ход вычислительного процесса. Комбинировать различные типы анализа, иметь доступ к промежуточным результатам, управлять стилем отображения данных, добавлять собственные расширения программных модулей и оформлять итоговые отчеты в необходимом виде позволяют коммерческие вычислительные системы, включающие высокоуровневые средства командного языка, такие как Matlab, SPSS и др. Прекрасной альтернативой им является бесплатная программная среда R, являющаяся современной и постоянно развивающейся статистической платформой общего назначения.



Сегодня R является безусловным лидером среди свободно распространяемых систем статистического анализа, о чем говорит, например, тот факт, что в 2010 году система R стала победителем ежегодного конкурса открытых программных продуктов Bossie Awards в нескольких номинациях. Ведущие университеты мира, аналитики крупнейших компаний и исследовательских центров постоянно используют R при проведении научно-технических расчетов и создании крупных информационных проектов. Широкое преподавание статистики на базе пакетов этой среды и всемерная поддержка научным сообществом обусловили то, что приведение скриптов R постепенно становится общепризнанным "стандартом" как в журнальных публикациях, так и при неформальном общении ученых всего мира.

Главным препятствием для русскоязычных пользователей при освоении R, безусловно, является то, что почти вся документация по этой среде существует на английском языке. Лишь с 2008 г. усилиями А.В. Шипунова, Е.М. Балдина, С.В. Петрова, И.С. Зарядова, А.Г. Буховца и других энтузиастов появились методические пособия и книги на русском языке (ссылки на них можно найти в списке литературы в конце этой книги; там же представлены и ссылки на образовательные ресурсы, авторами которых делается посильный вклад в продвижение R среди русскоязычных пользователей).

Настоящее пособие обобщает совокупность методических сообщений, опубликованных одним из авторов с 2011 г. в блоге «R: Анализ и визуализация данных»

(http://r-analytics.blogspot.com). Нам показалась целесообразной идея представить для удобства читателей весь этот несколько разобщенный материал в концентрированной форме, а также расширить некоторые разделы для полноты изложения.

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

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

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

Разделы этой части выстроены по мере усложнения представленного материала.

Главы 4 и 5 ориентированы на читателя, интересующегося статистикой лишь в рамках начального университетского курса. В главах 6 и 7 в рамках единой теории общих линейных моделей представлены дисперсионный и регрессионный анализы и приведены различные алгоритмы исследования и структурной идентификации моделей. Глава 8 посвящена некоторым современным методам построения и анализа обобщенных регрессионных моделей.

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

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

Файлы со скриптами кодов R по всем главам книги, а также необходимые таблицы исходных данных для их выполнения, свободно доступны для скачивания с GitHubрепозитория https://github.com/ranalytics/r-tutorials, а также с сайта Института экологии Волжского бассейна РАН по ссылке http://www.ievbras.ru/ecostat/Kiril/R/Scripts.zip.

Следует отметить, что текст в этом пособии представлен в авторской редакции и потому, несмотря на все наши усилия, имеется вероятность наличия в нем опечаток, грамматических неточностей и неудачных оборотов. Мы будем благодарны Вам, Читатель, за сообщение об этих, а также других обнаруженных недочетах по электронной почте rtutorialsbook@gmail.com. Мы также будем благодарны за любые другие Ваши замечания и пожелания касательно этой работы.

–  –  –

1. ОСНОВНЫЕ КОМПОНЕНТЫ СТАТИСТИЧЕСКОЙ СРЕДЫ R

1.1. История возникновения и основные принципы организации среды R Система статистического анализа и визуализации данных R состоит из следующих основных частей:

° языка программирования высокого уровня R, позволяющего одной строкой реализовать различные операции с объектами, векторами, матрицами, списками и т.д.;

° большого набора функций обработки данных, собранных в отдельные пакеты (package);

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

Начало пути относится к 1993 г., когда двое молодых новозеландских учёных Росс Ихака (Ross Ihaka) и Роберт Джентльмен (Robert Gentleman), анонсировали свою новую разработку, которую назвали R. Они взяли за основу язык программирования развитой коммерческой системы статистической обработки данных S-PLUS и создали его бесплатную свободную реализацию, отличающуюся от своего прародителя легко расширяемой модульной архитектурой. В скором времени возникла распределенная система хранения и распространения пакетов к R, известная под аббревиатурой "CRAN" (Comprehensive R Archive Network – http://cran.r-project.org), основная идея организации которой – постоянное расширение, коллективное тестирование и оперативное распространение прикладных средств обработки данных.

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

Язык вычислений R, хотя и требует определенных усилий для своего освоения, недюжинных поисковых навыков и энциклопедической памяти, позволяет оперативно выполнить расчеты, по своему разнообразию практически «столь же неисчерпаемые, как атом». Энтузиастами со всего мира по состоянию на июль 2014 г. написано 6739 дополнительных библиотек для R, включающих 137 506 функций (см.

http://www.rdocumentation.org), которые существенно расширяют базовые возможности системы. Очень сложно представить какой-либо класс статистических методов, который еще не реализован сегодня в виде пакетов R, включая, разумеется, весь "джентльменский набор": линейные и обобщенные линейные модели, нелинейные регрессионные модели, планирование эксперимента, анализ временных рядов, классические параметрические и непараметрические тесты, байесовская статистика, кластерный анализ и методы сглаживания. При помощи мощных средств визуализации, результаты анализа можно обобщать в виде всевозможных графиков и диаграмм. Кроме традиционной статистики, разработанный функционал включает большой набор алгоритмов численной математики, методов оптимизации, решения дифференциальных уравнений, распознавания образов и др. Свои специфические методы обработки данных могут обнаружить в составе пакетов R генетики и социологи, лингвисты и психологи, химики и медики, специалисты по ГИС- и Web-технологиям.

"Фирменная" документация по R весьма объемна и далеко не всегда толково написана (по странной традиции англоязычной литературы слишком много слов расходуется на описание тривиальных истин, тогда как важные моменты пробегаются скороговоркой). Однако, в дополнение к этому, ведущими мировыми издательствами (Springer, Cambridge University Press и Chapman & Hall / CRC) или просто отдельными коллективами энтузиастов выпущено огромное число книг, описывающих различные аспекты анализа данных в R (см., например, список литературы на сайте «Энциклопедия психодиагностики», http://psylab.info/R:Литература). Кроме того, существует несколько активно действующих международных и российских форумов пользователей R, где любой может попросить о помощи в возникшей проблеме. В списке литературы мы приводим пару сотен книг и Интернет-ссылок, на которые советуем обратить особое внимание в ходе изучения R.

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

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

Одни считают, что нет ничего лучше стандартного консольного интерфейса R. Другие полагают, что для удобной работы стоит инсталлировать какую-либо из имеющихся интегрированных сред разработки (IDE) с богатым набором кнопочных меню. Например, отличным вариантом является бесплатная интегрированная среда разработки RStudio.

Ниже мы остановимся на описании консольного варианта и работе с R Commander, но дальнейшим исканиям читателя может помочь обзор различных версий IDE, представленный в приложении к книге Шипунова с соавт. (2014).

Один из R-экспертов, Джозеф Рикерт, считает, что процесс изучения R можно разделить на следующие этапы (подробнее см.

его статью на inside-r.org):

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

2. Считывание данных из стандартных файлов операционной системы и уверенное использование R-функций для выполнения ограниченного набора привычных пользователю процедур статистического анализа.

3. Использование базовых структур языка R для написания простых программ.

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

4. Написание сложных программ на языке R. Самостоятельная разработка и глубокое понимание структуры объектов так называемых S3- и S4-классов.

5. Разработка профессиональных программ на языке R. Самостоятельное создание дополнительных модулей-библиотек для R.

Большинство рядовых пользователей R останавливаются на стадии 3, т.к.

полученных к этому времени знаний им вполне достаточно для выполнения статистических задач по профилю их основной профессиональной деятельности.

Примерно в этом объеме мы и приводим описание языка R в рамках настоящего руководства.

Установить и настроить базовую комплектацию статистической среды R весьма просто. На июль 2014 г. актуальной является версия R 3.1.1 для 32 и 64-битной Windows (доступны также дистрибутивы для всех других распространенных операционных систем). Скачать дистрибутив системы вместе с базовым набором из 29 пакетов (54 мегабайта) можно совершенно бесплатно с основного сайта проекта http://cran.r-project.org или русского "зеркала" http://cran.gis-lab.info. Процесс инсталляции системы из скачанного дистрибутива затруднений не вызывает и не требует никаких особых комментариев.

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

Путь к рабочему каталогу и некоторые другие опции настроек целесообразно разместить, изменив любым текстовым редактором системный файл C:\Program Files\R\Retc\Rprofile.site (на Вашем компьютере он может иметь иное место размещения). В представленном ниже примере модифицированные строки отмечены зеленым цветом.

Помимо указания рабочего каталога, эти строки определяют ссылку на российский источник загрузки пакетов R и автоматический запуск R Commander.

Листинг файла Rprofile.site # Все, что следует на символом комментария «#» средой игнорируется # options(papersize="a4") # options(editor="notepad") # options(pager="internal") # установить тип отображения справочной информации # options(help_type="text") options(help_type="html") # установить место расположения локальной библиотеки #.Library.site - file.path(chartr("\\", "/", R.home()), "site-library") # При загрузке среды запустить меню R Commander # Поставить знаки «#», если запуск Rcmdr не нужен local({ old - getOption("defaultPackages") options(defaultPackages = c(old, "Rcmdr")) }) # Определить зеркало CRAN local({r - getOption("repos") r["CRAN"] - "http://cran.gis-lab" options(repos=r)}) # Определить путь к рабочему каталогу (любой иной на Вашем компьютере) setwd("D:/R/Process/Resampling") Что касается «хорошего вводного учебника», то любые наши рекомендации будут носить субъективный оттенок. Тем не менее, следует упомянуть официально признанное введение в R У. Венэблеза и Д. Смита (Venables, Smith, 2014) и книгу Р.Кабакова (Kabaco, 2011), отчасти еще и потому, что имеется их русский перевод. Отметим также традиционное "наставление для чайников" (Meys, Vries, 2012) и руководство (Lam, 2010), написанное с завидной голландской педантичностью. Из русскоязычных вводных курсов наиболее полными являются книги И.Зарядова (2010а) и А.Шипунова с соавт. (2014).

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

Консоль R представляет собой диалоговое окно, в котором пользователь вводит команды и где видит результаты их выполнения. Это окно возникает сразу при запуске среды (например, после клика мышью на ярлыке R на рабочем столе). Кроме того, стандартный графический пользовательский интерфейс R (RGui) включает окно редактирования скриптов и всплывающие окна с графической информацией (рисунками, диаграммами и проч.)

В командном режиме R может работать, например, как обычный калькулятор:

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

Например, во второй команде на приведенном выше рисунке мы использовали функции факториала и синуса, а также встроенное число p. Результаты, полученные в текстовой форме можно выделить мышью и скопировать через буфер обмена в любой текстовый файл операционной системы (например, документ Word).

При работе с использованием RGui мы рекомендуем во всех случаях создавать файл со скриптом (т.е. последовательностью команд языка R, выполняющей определенные действия). Как правило, это обычный текстовый файл с любым именем (но, для определенности, лучше с расширением *.r), который можно создавать и редактировать обычным редактором типа "Блокнот". Если этот файл существует, его лучше всего поместить в рабочий каталог, и тогда после запуска R и выбора пункта меню "Файл Открыть скрипт" содержимое этого файла появится в окне "Редактор R". Выполнить последовательность команд скрипта можно из пункта меню "Правка Запустить все".

Можно также выделить мышью осмысленный фрагмент из любого места подготовленного скрипта (от имени одной переменной до всего содержимого) и осуществить запуск этого блока на выполнение. Это можно сделать четырьмя возможными способами: из основного и контекстного меню, комбинацией клавиш Ctrl+R или кнопкой на панели инструментов.

На представленном рисунке были выполнены следующие действия:

° из бесплатного Интернет-источника Global Administrative Areas (GADM) был скачан R-объект gadm с данными по территориальному делению Республики Беларусь;

° латинизированные наименования городов заменены на общеупотребительные эквиваленты;

° с использованием функции spplot() пакета sp в графическое окно выведена административная карта республики, которую можно средствами меню скопировать в буфер обмена или сохранить как стандартный мета- или растровый графический файл.

Подробнее смысл отдельных операторов мы рассмотрим в последующих разделах, а здесь обратим внимание, что выделив в скрипте и запустив на выполнение комбинацию символов Regions@data, мы получим в окне консоли весь набор данных data по объекту а команда, составленная из выделенных символов gadm, Regions@data$NAME_1, даст нам список наименований административных центров до и после его модификации.

Таким образом, Редактор R позволяет легко выполнить навигацию по скрипту, редактирование и выполнение любой комбинации команд, поиск и замену определенных частей кода. Упомянутая выше надстройка RStudio позволяет дополнительно выполнять подсветку синтаксиса кода, его автоматическое завершение, "упаковку" последовательности команды в функции для их последующего использования, работу с документами Sweave или TeX и другие операции, которые будут полезны продвинутому пользователю.

R обладает встроенными обширными справочными материалами, которые можно получить непосредственно в RGui.

Если подать с консоли команду help.start(), то в вашем интернет-браузере откроется страница, открывающая доступ ко всем справочным ресурсам: основным руководствам, авторским материалам, ответам на вероятные вопросы, спискам изменений, ссылкам на справки по другим объектам R и т.д.:

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

° help("foo") или? foo – справка по функции foo (кавычки необязательны);

° help.search("foo") или?? foo – поиск всех справочных файлов, содержащих foo;

° example("foo") – примеры использования функции foo;

° RSiteSearch("foo") – поиск ссылок в онлайн-руководствах и архивах рассылок;

° apropos("foo", mode="function") – список всех функций с комбинацией foo;

° vignette("foo") – список руководств по теме foo.

1.3. Работа с меню пакета R Commander Удобным средством освоения вычислений в R для начинающего пользователя является R Commander – платформо-независимый графический интерфейс в стиле кнопочного меню, реализованный в пакете Rcmdr. Он позволяет осуществить большой комплект процедур статистического анализа, не прибегая к предварительному заучиванию функций на командном языке, однако невольно способствует этому, поскольку отображает все выполняемые инструкции в специальном окне.

Установить Rcmdr, как и любые другие расширения, можно из меню консоли R "Пакеты Установить пакет", но лучше выполнив команду:

install.packages("Rcmdr", dependencies=TRUE) где включение опции dependencies вызовет гарантированную установку полного комплекта остальных пакетов, которые могут потребоваться при обработке данных через меню Rcmdr.

Запуск R Commander происходит при загрузке пакета Rcmdr через меню "Пакеты Включить пакет" или командой library(Rcmdr) Если по какой-то причине было принято решение анализировать данные исключительно с помощью R Commander, то для автоматической загрузки этой графической оболочки при запуске R необходимо отредактировать файл Rprofile.site как показано в разделе 1.1.

Работу в R Commander рассмотрим на примере корреляционного анализа данных по уровню зараженности двустворчатого моллюска Dreissena polymorpha инфузорией Conchophthirus acuminatus в трех озерах Беларуси (Mastitsky S.E. // BioInvasions Records.

2012. V. 1. P 161–169). В таблице с исходными данными, которую скачаем с сайта figshare, нас будут интересовать две переменные: длина раковины моллюска (ZMlength, мм) и число обнаруженных в моллюске инфузорий (CAnumber). Подробно этот пример будет рассмотрен в главах 4 и 5, поэтому здесь мы не будем детально останавливаться на смысле анализа, а сосредоточимся на технике работы с Rcmdr.

Далее – определяем во всплывающих окнах режим загрузки данных и адрес ссылки в Интернете. Нетрудно заметить, что те же данные мы могли легко загрузить из локального текстового файла, книги Excel или таблицы базы данных. Чтобы убедиться в том, что наши данные загружены верно (или при необходимости их отредактировать), нажимаем кнопку "Посмотреть данные".

Окно определения организации данных Фрагмент загруженной таблицы

На втором этапе в меню "Статистика" выбираем "Корреляционный тест":

Выбираем пару коррелируемых переменных и в Окне вывода получаем коэффициент корреляции Пирсона (R = 0.467), уровень достигнутой статистической значимости (p-value 2.2e-16) и 95%-ные доверительные пределы.

–  –  –

Полученные результаты легко скопировать из окна вывода через буфер обмена.

Теперь получим графическое изображение корреляционной зависимости. Выберем точечный график (scatterplot) зависимости CAnumber от ZMlength и снабдим его краевыми диаграммами размахов, линией линейного тренда по методу наименьших квадратов (зеленым цветом), линией, сглаженной по методу локальной регрессии (красным цветом), представленной с доверительной областью (пунктир). Для каждого из трех озер (переменная Lake) экспериментальные точки будут представлены разными символами.

–  –  –

График, скопированный из графического окна R Commander Как эквивалент всем нажатиям кнопок меню R Commander, в окне скриптов появляются инструкции языка R.

В нашем случае они имеют следующий вид:

Моллюски read.table("http://figshare.com/media/download/98923/97987", header=TRUE, sep="\t", na.strings="NA", dec=".", strip.white=TRUE) cor.test(Моллюски$CAnumber, Моллюски$ZMlength, alternative="two.sided", method="pearson") scatterplot(CAnumber ~ ZMlength | Lake, reg.line=lm, smooth=TRUE, spread=TRUE, boxplots="xy", span=0.5, ylab="Численность инфузорий", xlab="Длина раковины", by.groups=FALSE, data=Моллюски) Сам скрипт или выводимые результаты (а также и то, и другое вместе) можно сохранить в файлах и в любой момент повторить. Тот же самый результат можно получить без запуска R Commander, загрузив сохраненный файл через консоль R.

По большому счету, не зная конструкций языка R (или просто не желая отягощать свою память их запоминанием), с использованием Rcmdr можно выполнить обработку данных с использованием почти всех базовых статистических методов. Здесь представлены параметрические и непараметрические тесты, методы подгонки различных непрерывных и дискретных распределений, анализ многомерных таблиц сопряженности, одномерный и многомерный дисперсионный анализ, метод главных компонент и кластеризация, различные формы обобщенных регрессионных моделей и др. Достоин тщательного изучения развитый аппарат анализа и тестирования полученных моделей.

Детальное описание техники работы с R Commander, а также особенности реализации алгоритмов обработки данных, можно найти в руководствах (Larson-Hall, 2009; Karp, 2014).

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

1.4. Объекты, пакеты, функции, устройства Язык R принадлежит к семейству так называемых высокоуровневых объектноориентированных языков программирования. Для неспециалиста строгое определение понятия "объект" является достаточно абстрактным. Однако для простоты можно называть объектами все, что было создано в процессе работы с R.

Выделяют два основных типа объектов:

1. Объекты, предназначенные для хранения данных ("data objects") – это отдельные переменные, векторы, матрицы и массивы, списки, факторы, таблицы данных;

2. Функции ("function objects") – это поименованные программы, предназначенные для создания новых объектов или выполнения определенных действий над ними.

Объекты среды R, предназначенные для коллективного и свободного использования, комплектуются в пакеты, объединяемые сходной тематикой или методами обработки данных. Есть некоторое отличие между терминами пакет ("package") и библиотека ("library"). Термин "library" определяет директорию, которая может содержать один или несколько пакетов. Термин "package" обозначает совокупность функций, HTMLстраниц руководств и примеров объектов данных, предназначенных для тестирования или обучения.

Пакеты инсталлируются в определенной директории операционной системы или, в неустановленном виде, могут храниться и распространяться в архивных *.zip файлах Windows (версия пакета должна корреспондироваться с конкретной версией вашей R).

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

library(help=имя_пакета), например:

library(help=Matrix) Все пакеты R относятся к одной из трех категорий: базовые ("base"), рекомендуемые ("recommended") и прочие, установленные пользователем.

Получить их список на конкретном компьютере можно, подав команду library() или:

installed.packages(priority = "base") installed.packages(priority = "recommended") # Получение полного списка пакетов packlist - rownames(installed.packages()) # Вывод информации в буфер обмена в формате для Excel write.table(packlist,"clipboard",sep="\t", col.names=NA) Базовые и рекомендуемые пакеты обычно включаются в инсталляционный файл R.

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

Для установки пакета достаточно в командном окне R Console выбрать пункт меню "Пакеты Установить пакет(ы)" или ввести, например, команду:

install.packages(c("vegan", "xlsReadWrite", "car"))

Пакеты можно скачивать, например, с русского "зеркала" http://cran.gis-lab.info, для чего удобно воспользоваться редакцией файла Rprofile.site как показано в разделе 1.1.

Другой вариант установки пакетов – зайти на сайт http://cran.gis-lab.info/web/packages, выбрать нужный пакет в виде zip-файла и скачать в выбранную папку своего компьютера.

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

При запуске консоли RGui загружаются только некоторые базовые пакеты. Для инициализации любого другого пакета перед непосредственным использованием его функций нужно ввести команду library (имя_пакета).

Установить, какие пакеты загружены в каждый момент проводимой сессии, можно, подав команду:

sessionInfo() R version 2.13.2 (2011-09-30) Platform: i386-pc-mingw32/i386 (32-bit)

–  –  –

other attached packages:

Vegan_2.0-2 permute_0.6-3

loaded via a namespace (and not attached):

Grid_2.13.2 lattice_0.19-33 tools_2.13.2 Приведем в следующей таблице список (возможно, не исчерпывающе полный) пакетов, которые использовались в скриптах, представленных настоящей книгой:

Пакеты R Назначение "Базовые" пакеты Базовые конструкции R base Компилятор пакетов R compiler Набор таблиц с данными для тестирования и демонстрации функций datasets Базовые графические функции graphics Драйверы графических устройств, палитры цветов, шрифты grDevices Функции создания графических слоев grid Компоненты объектно-ориентированного программирования (классы, methods методы) Функции работы с регрессионными сплайнами разного типа splines Базовые функции статистического анализа stats Методы статистических функций класса S4 stats4 Компоненты интерфейса с пользователем (меню, боксы выбора и проч.) tcltk Информационная поддержка, администрирование и документирование tools Различные утилиты отладки, ввода-вывода, архивирования и проч.

Utils "Рекомендуемые" пакеты Функции различных процедур бутстрепа и "складного ножа" boot Различные алгоритмы неиерархической классификации и распознавания class Алгоритмы разделения и иерархической кластеризации cluster Анализ и проверка кодов R codetools Чтение и запись файлов в разных форматах (DBF, SPSS, DTA, Stata) foreign Функции, обслуживающие оптимизацию ядерного сглаживания KernSmooth Графические функции расширенной функциональности (Sarkar, 2008) lattice Набор данных и статистических функций (Venables, Ripley, 2002) MASS Операции с матрицами и векторами Matrix Обобщенные аддитивные модели и модели со смешанными эффектами mgcv Линейные и нелинейные модели со смешанными эффектами nlme Нейронные сети прямого распространения nnet Построение деревьев классификации и регрессии rpart Функции кригинга и анализа пространственного распределения точек spatial Анализ выживаемости (модель Кокса и др.) survival Пакеты, установленные в процессе работы adegenet Алгоритмы анализа генетических расстояний arm Анализ моделей регрессии – приложение к книге (Gelman, Hill, 2007) car Процедуры, связанные с прикладным регрессионным анализом corrplot Отображение корреляционных матриц в графическом виде fitdistrplus Подбор параметров статистических распределений FWDselect, Селекция набора информативных переменных в регрессионных моделях packfor gamair Наборы данных для тестирования аддитивных моделей geosphere Оценка географических расстояний ggplot2 Усовершенствованный графический пакет высокой функциональности DAAG Функции анализа данных и графики к книге (Maindonald, Braun, 2010) Hmisc Набор функций Харрела (Harrell) HSAUR2 Приложение к книге (Everitt, Hothorn, 2010) ISwR Первичный статистический анализ в R jpeg Работа с графическими файлами jpeg lars Специальные виды регрессии (LARS, Lasso и др.) lavaan Конфирматорный анализ и модели структурных уравнений lmodel2 Реализация моделей регрессии I и II типов (MA, SMA, RMA) maptools Инструментарий работы с географическими картами mice Процедуры анализа и заполнения пропущенных значений moments Функции расчета выборочных моментов nortest Критерии при проверке гипотезы о нормальном распределении outliers Анализ выбросов в данных pastecs Анализ пространственных и временных рядов в экологии pls Регрессия на главные компоненты pwr Оценка статистической мощности гипотез reshape Гибкое преобразование таблиц данных robustbase Робастные методы построения регрессионных моделей rootSolve Нахождение корней функции с несколькими переменными scales Подбор цветовых шкал sem Модели структурных уравнений semPlot Визуализация структурных связей sm Оценка плотности распределений и методы сглаживания sp Классы и методы доступа к пространственным данным spatstat Методы пространственной статистики, подбор моделей spdep Пространственные зависимости: геостатистические методы и моделирование stargazer Вывод информации о статистических моделях в разных форматах vcd Визуализация категориальных данных Выполнение расчетов по экологии сообществ (меры сходства, разнообразия и vegan вложенности, ординация и многомерный анализ) Если мы попробуем загрузить пакет, еще не установленный в R, или попытаемся использовать функции еще незагруженного пакета, то получим сообщения системы:

sem(model, data=PoliticalDemocracy) Ошибка: не могу найти функцию "sem" library(lavaan) Ошибка в library(lavaan) : нет пакета под названием "lavaan" Следующая функция, представленная K. Cichini, принимает в качестве исходного параметра список используемых пользователем пакетов и сама разбирается, какие следует загрузить, а какие нужно предварительно установить. Для понимания работы скрипта необходимо знание конструкций языка R, описываемых в следующем разделе, но интересующийся читатель может вернуться к приведенным командам позднее.

instant_pkgs - function(pkgs) { pkgs_miss - pkgs)] # Инсталлируем пакеты, не подготовленные к загрузке:

if (length(pkgs_miss) 0) { install.packages(pkgs_miss) } # Загружаем пакеты, которые еще не загружены:

Attached - search() attached_pkgs - attached need_to_attach - pkgs if (length(need_to_attach) 0) { for (i in 1:length(need_to_attach)) require(need_to_attach[i], character.only = TRUE) } } # Пример вызова:

instant_pkgs(c("base", "jpeg", "vegan"))

Получить список функций каждого пакета можно, например, подав команду:

ls(pos = "package:vegan") Примечание: ls() является функцией общего назначения для вывода списка объектов в заданной среде (environment). Команда выше устанавливает в качестве такой среды пакет vegan. Если подать эту команду без параметров, то получим список объектов, созданных за время текущей сессии.

Получить список аргументов входящих параметров любой функции загруженного пакета можно, подав команду args().

Например, при запуске широко используемой нами впоследствии функции получения линейной модели lm() задают параметры:

Args(lm) function (formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset,...) Если ввести команду, состоящую только из аббревиатуры функции (например, вычисляющей межквартильный размах IQR), то можно получить исходный текст функции в кодах языка R:

IQR function (x, na.rm = FALSE) diff(quantile(as.numeric(x), c(0.25, 0.75), na.rm = na.rm, names = FALSE)) Продвинутый пользователь может внести изменения в этот код и "перенаправить" вызов стандартной функции на свою версию.

Однако если мы захотим таким же образом посмотреть код функции predict(), которая используется для расчета прогнозируемых значений линейной модели, то получим:

predict function (object,...) UseMethod("predict") В данном случае predict() представляет собой "универсальную" функцию: в зависимости от того, объект какой модели подается на ее вход (lm для линейной регрессии, glm для пуассоновской или логистической регрессии, lme для модели со смешанными эффектами и т.д.), актуализируется соответствующий метод получения прогнозируемых значений.

В частности, эта функция используется для реализации следующих методов:

methods("predict") predict.ar* predict.Arima* predict.arima0* predict.glm predict.HoltWinters* predict.lm predict.loess* predict.mlm predict.nls* predict.poly predict.ppr* predict.prcomp* predict.princomp* predict.smooth.spline* predict.smooth.spline.fit* predict.StructTS* Non-visible functions are asterisked Этот пример связан с идеями объектно-ориентированного программирования (ООП), лежащими в основе среды R. Для ООП в стиле S3 метод – это, собственно говоря, функция, которая вызывается другой универсальной (generic) функцией, такой, например, как print(), plot() или summary(), в зависимости от класса объекта, подаваемого на ее вход. При этом за "объектную ориентированность" отвечает атрибут class, который обеспечивает корректную диспетчеризацию и вызов необходимого метода для данного объекта. Так "функция-метод" для получения прогнозируемых значений обобщенной линейной модели будет иметь вызов predict.glm(), при сглаживании сплайнами – predict.smooth.spline()и т.д. Подробную информацию о модели ООП S3 можно получить в разделе справки S3Methods, а по более продвинутой модели S4 – в разделе Methods.

Наконец, рассмотрим некоторые простейшие приемы сохранения результатов работы, полученных во время сессии R:

° sink(file= имя файла) – выводит результаты выполнения последующих команд в режиме реального времени в файл с заданным именем; для прекращения действия этой команды необходимо выполнить команду sink() без параметров;

° save(file= имя файла, список сохраняемых объектов) – сохраняет указанные объекты в двоичном файле XDR-формата, с которым можно работать в любой операционной системе;

° load(file= имя файла) – восстанавливает сохраненные объекты в текущей среде;

° save.image(file= имя файла) – сохраняет все объекты, созданные в ходе работы, в виде специфичного для R rda-файла.

Пример передачи сформированной таблицы с данными в буфер обмена в формате, совместимом со структурой листа Excel, был приведен выше в настоящем разделе. В главе 6 будет приведен пример передачи данных из объекта линейной модели в файл Word.

Среда R может генерировать пиксельное изображение необходимого качества почти для любого разрешения дисплея или устройства печати, а также сохранить полученные графические окна в файлах разного формата. Для каждого устройства графического вывода существует функция драйвера: для получения полного списка драйверов можно ввести команду help(Devices).

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

° windows()– графическое окно Windows (экран, принтер или метафайл).

° png(), jpeg(), bmp(), tiff()– вывод в растровый файл соответствующего формата;

° pdf(),postscript() – вывод графической информации в файл PDF или PostScript.

По завершению работы с устройством вывода следует отключить его драйвер командой dev.off(). Существует возможность активизации нескольких устройств графического вывода одновременно и переключения между ними: см., например, соответствующий раздел в книге Шипунова с соавт. (2012, с. 278).

1. ОПИСАНИЕ ЯЗЫКА R

2.1. Типы данных языка R Все объекты данных (а, следовательно, и переменные) в R можно разделить на следующие классы (т.е. типы объектов):

° numeric – объекты, к которым относятся целочисленные (integer) и действительные числа (double);

° logical – логические объекты, которые принимают только два значения: FALSE (сокращенно F) и TRUE (T);

° character – символьные объекты (значения переменных задаются в двойных, либо одинарных кавычках).

В R можно создавать имена для различных объектов (функций или переменных) как на латинице, так и на кириллице, но следует учесть, что а (кириллица) и a (латиница) – это два разных объекта. Кроме того, среда R чувствительна к регистру, т.е. строчные и заглавные буквы в ней различаются. Имена переменных (идентификаторы) в R должны начинаться с буквы (или точки.) и состоять из букв, цифр, знаков точки и подчёркивания.

При помощи команды? имя можно проверить, существует ли переменная или функция с указанными именем.

Проверка на принадлежность переменной к определенному классу проверяется функциями is.numeric(имя_объекта), is.integer(имя), is.logical(имя), is.character(имя), а для преобразования объекта в другой тип можно использовать функции as.numeric(имя), as.integer(имя), as.logical(имя), as.character(имя).

В R существует ряд специальных объектов:

° Inf – положительная или отрицательная бесконечность (обычно результат деления вещественного числа на 0);

° NA – "отсутствующее значение" (Not Available);

° NaN – "не число" (Not a Number).

Проверить, относится ли переменная к какому-либо из этих специальных типов, можно, соответственно, функциями is.nite(имя), is.na(имя) и is.nan(имя).

Выражение (expression) языка R представляет собой сочетание таких элементов, как оператор присваивания, арифметические или логические операторы, имена объектов и имена функций. Результат выполнения выражения, как правило, сразу отображается в командном или графическом окне. Однако при выполнении операции присваивания результат сохраняется в соответствующем объекте и на экран не выводится.

В качестве оператора присваивания в R можно использовать либо символ “=“, либо пару символов “-“ (присваивание определенного значения объекту слева) или “-“ (присваивание значения объекту справа). Хорошим стилем программирования считается использование “-“.

Выражения языка R организуются в скрипте по строкам. В одной строке можно ввести несколько команд, разделяя их символом “;“. Одну команду можно также расположить на двух (и более) строках.

Объекты типа numeric могут составлять выражения с использованием традиционных арифметических операций + (сложение), – (вычитание), * (умножение), / (деление), ^ (возведение в степень), %/% (целочисленное деление), %% (остаток от деления). Операции имеют обычный приоритет, т.е. сначала выполняется возведение в степень, затем умножение или деление, потом уже сложение или вычитание. В выражениях могут использоваться круглые скобки и операции в них имеют наибольший приоритет.

Логические выражения могут составляться с использованием следующих логических операторов:

° "Равно" == ° "Не равно" != ° "Меньше" ° "Больше" ° "Меньше либо равно" = ° "Больше либо равно" = ° "Логическое И" & ° "Логическое ИЛИ" | ° "Логическое НЕ" !

ПОД ДЕР Ж К И, АУ ТСОРСИНГОВЫЕ УСЛ У ГИ И А ДМИНИСТРИРОВА НИЕ ФОН ДОВ 2 ГРУППА AMICORP СФЕРА ДЕЯТЕЛЬНОСТИ КОМПАНИИ STAND OUT FROM THE CROWD w w w.am icor p. c om ГРУППА AMICORP СФЕРА ДЕЯТЕЛЬНОСТИ КОМПАНИИ СОДЕРЖАНИЕ О КОМ П АН ИИ Н А Ш И УС ЛУГИ Услуги для корпоративных клиентов Услуги для институциональных продаж Создание и управление...»

«Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Финансовый университет при Правительстве Российской Федерации» Кафедра «Маркетинг» СОВРЕМЕННЫЕ НАПРАВЛЕНИЯ МАРКЕТИНГА: ТЕОРИЯ, МЕТОДОЛОГИЯ, ПРАКТИКА КОЛЛЕКТИВНАЯ МОНОГРАФИЯ Под общей редакцией С.В. Карповой Москва 2011 Рецензенты: Н.С. Перекалина - д.э.н., профессор, зав. кафедрой «Маркетинг» «МАТИ» - Российский государственный технологический университет им. К. Э. Циолковского С.С. Соловьев...»

«Малко дигитално вестниче за КАФЕ и ЧАЙ РДАКЦИЯ: Гл. Редактор: Весела Дъбова Бр.4 декември, 2011 Редактори: Отслабване с чай Теодора Василева Гергана Иванова Издава: АББ Какво се случва в организма ни при приемането на чаената напитка и как се случва отслабването Най-сигурният и здравословен начин за намаляване на теглото е редовната консумация на чаша чай. Съществуват различни мнения относно достоверността на тази теория, но редица факти доказват, че една чаша чай, съчетана с определен режим на...»

«INTERNATIONAL INTERDISCIPLINARY SCIENTIFIC CONFERENCE RADICAL SPACE IN BETWEEN DISCIPLINES RCS 2015 CONFERENCE BOOK OF ABSTRACTS EDITORS Romana Bokovi Miljana Zekovi Slaana Milievi NOVI SAD / SERBIA / SEPTEMBER 21-23 / 2015 Radical Space In Between Disciplines Conference Book of Abstracts Editors: Romana Bokovi Miljana Zekovi Slaana Milievi ISBN: 978-86-7892-733-1 Leyout: Maja Momirov Cover design: Stefan Vuji Published by Department of Architecture and Urbanism, Faculty of Technical Sciences,...»

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет географии и геоэкологии Кафедра геоморфологии ДИПЛОМНАЯ РАБОТА (выпускная квалификационная работа) на тему: «Геоморфологические особенности и палеоклимат арктических озер (на примере озер центрального сектора Российской Арктики)» Выполнила: студентка вечернего отделения Морозова Елена Александровна Научные руководители: д.г.н., проф. Большиянов Дмитрий Юрьевич к.г.н., ст. преподаватель Савельева Лариса Анатольевна Рецензент: к.г.н., зав....»

«Мышь Apacer M811 – лазерный мини-внедорожник Комплекту. http://news.kosht.com/computer/mouse/2009/11/26/mysh_apacer_m811. поисковый плагин по ценам дня KOSHT.com для браузера Firefox. Установите Один клик. Один килобайт. Главная Новости Цены Объявления Работа Форумы Компании Моби Найти Найди свою новость Все новости КОШТа ПК и комплектующие Мыши ПК и комплектующие Мыши Все новости КОШТа Лучшие игровые компьютеры расчет On-line на UltraPrice.by Мышь Apacer M811 – лазерный мини-внедорожник [...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНДУСТРИАЛЬНЫЙ УНИВЕРСИТЕТ (ГОУ МГИУ) «ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ» КАФЕДРА ДИПЛОМНАЯ РАБОТА по специальности «Математическое обеспечение и администрирование информационных систем» студентки Чумаковой Татьяны Андревны на тему «Расчёт отрывных течений за плохо обтекаемым телом» Руководитель работы: проф., д. ф.-м. н. Алексин Владимир Адамович...»

«R ВОИС A/45/3 ОРИГИНАЛ: английский ДАТА: 15 августа 2008 г. ВСЕМИРНАЯ ОРГАНИЗАЦИЯ ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ ЖЕНЕВА АССАМБЛЕИ ГОСУДАРСТВ–ЧЛЕНОВ ВОИС Сорок пятая серия заседаний Женева, 22-30 сентября 2008 г. ДОПУСК НАБЛЮДАТЕЛЕЙ Меморандум Генерального директора I. ДОПУСК МЕЖДУНАРОДНЫХ НЕПРАВИТЕЛЬСТВЕННЫХ ОРГАНИЗАЦИЙ В КАЧЕСТВЕ НАБЛЮДАТЕЛЕЙ 1. На своих предыдущих сессиях Ассамблеи приняли ряд принципов, которые должны применяться при направлении международным неправительственным организациям...»

«1 Олег Санаев. КРУГОСВЕТКА ПРОТЯЖЕННОСТЬЮ В ЧЕТЫРЕ ГОДА И СТОИМОСТЬЮ СТО ДОЛЛАРОВ Со сроками путешествия Евгения Александровича Гвоздева на яхте Лена, указанными в заголовке, все в порядке – четыре года плюс две недели: 7 июля 1992 г. он вышел из махачкалинского порта, 19 июля 1996 г. вернулся. А вот с деньгами – явное преувеличение, вернее преуменьшение: нельзя, конечно, четыре года жить на сто долларов – ноги протянешь. Но, начиная плавание, Гвоздев располагал именно этой суммой. И хоть ног...»

« Institute of Management, исследовательского университета Belgorod State National Research University ТЕХНОЛОГИИ ОБЕСПЕЧЕНИЯ TECHNOLOGIES OF БЕЗОПАСНОСТИ ФОРМИРОВАНИЯ SECURING THE FORMATION OF КАДРОВОГО РЕЗЕРВА CANDIDATE POOL ГОСУДАРСТВЕННОЙ FOR STATE AND MUNICIPAL И МУНИЦИПАЛЬНОЙ СЛУЖБЫ SERVICE Аннотация: Summary: В статье рассмотрены...»

«Лидия ЯНОВСКАЯ ЗАПИСКИ О МИХАИЛЕ БУЛГАКОВЕ МОСКВА «ТЕКСТ» УДК 821.161.1 ББК 84 (2Рос-Рус)6-44 Я64 ISBN 978-5-7516-0660-2 ISBN 978-985-16-3297-4 (ООО «Харвест») «Текст», 2007 «БРАВО, БИС, ЛОМБАРД!» «БРАВО, БИС, ЛОМБАРД!» Не знаю, где нынче в Москве находится редакция журнала «Юность». И существует ли еще такой журнал? В середине 70-х эта самая молодая и симпатичная редакция в Москве располагалась на Садовой-Триумфальной, рядом с площа­ дью Маяковского, занимая небольшое, но чрезвычайно уютное...»

«Приложение 1 ФОРМЫ ЗАЯВОК КОНКУРСОВ 2013 ГОДА Форма «Т». Титульный лист заявки в РГНФ Название проекта Номер проекта Тип проекта (а, в, г, д, е) Область знания (код) Код классификатора РГНФ Код ГРНТИ (http://www.grnti.ru/) Приоритетное направление развития науки, технологий и техники в Российской Федерации, критическая технология1 Фамилия, имя, отчество руководителя Контактный телефон руководителя проекта проекта Полное и краткое название организации, через которую должно осуществляться...»

«FNI Report 8/2014 Implementing EU Climate and Energy Policies in Poland: From Europeanization to Polonization? Jon Birger Skjrseth Implementing EU Climate and Energy Policies in Poland: From Europeanization to Polonization? Jon Birger Skjrseth jbs@fni.no December 2014 Copyright © Fridtjof Nansen Institute 2014 Title Implementing EU Climate and Energy Policies in Poland: From Europeanization to Polonization? Publication Type and Number Pages FNI Report 8/2014 57 Author ISBN 978-82-7613-683-8 Jon...»

««Ученые заметки ТОГУ» Том 6, № 4, 2015 ISSN 2079-8490 Электронное научное издание «Ученые заметки ТОГУ» 2015, Том 6, № 4, С. 173 – 178 Свидетельство Эл № ФС 77-39676 от 05.05.2010 http://pnu.edu.ru/ru/ejournal/about/ ejournal@pnu.edu.ru УДК 316.33 © 2015 г.И. А. Гареева, д-р социол. наук, А. Г. Киселёва (Тихоокеанский государственный университет, Хабаровск) СТАНОВЛЕНИЕ СИСТЕМ СОЦИАЛЬНОГО СТРАХОВАНИЯ Данная статья анализирует становление систем социального страхование и его современное состояние...»

«Conference Program Chiang Mai, Thailand November, 2015 APCBSS Asia -Pacific Conference on Business & Social Sciences ICEI International Conference on Education Innovation APCLSE Asia-Pacific Conference on Life Science and Engineering APCBSS Asia -Pacific Conference on Business & Social Sciences ISBN978-986-90263-0-7 ICEI International Conference on Education Innovation ISBN 978-986-5654-33-7 APCLSE Asia-Pacific Conference on Life Science and Engineering ISBN 978-986-90052-9-6 Content Content...»



просмотров