Наглядная статистика. Используем R!
Покупка
Тематика:
Проектирование баз и банков данных
Издательство:
ДМК Пресс
Авторы:
Шипунов Алексей Борисович, Балдин Евгений Михайлович, Волкова Полина Андреевна, Коробейников Антон Иванович, Назарова Софья Александровна
Год издания: 2017
Кол-во страниц: 298
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-473-1
Артикул: 607054.03.99
Если вам необходима статистическая обработка данных для курсовой, диплома, статьи или диссертации; вы хотите лучше понимать результаты тех статистических методов, которые применяете; вы устали от того, что программы анализа данных не способны выполнить нестандартные задачи; вам необходимо перегруппировать ваши данные, но жаль тратить на это часы ручного труда; вам нужно освоить самые современные методы, еще не нашедшие отражения в большинстве статистических пакетов, то эта книга - для вас! Изложение построено на базе самого современного программного обеспечения - статистической среды R, которая принадлежит к числу наиболее динамически развивающихся программ в своем классе. Освоив R, вы сможете: полностью автоматизировать свою работу; запускать статистическую обработку прямо из текста документа; получать графики высокого качества и сохранить их в переносимых графических форматах; в любой момент повторить ваш анализ (например, если поменялись требования к иллюстрациям или исходные данные); использовать сотни «библиотек»-плагинов, разработанных для R; применять самые современные методы; разрабатывать собственные программы анализа данных: от коротких «макросов» до полноценных пакетов, реализующих новейшие алгоритмы; и, естественно, проводить любой стандартный анализ данных, получая при этом графики любой степени сложности.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 01.03.04: Прикладная математика
- 01.03.05: Статистика
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Наглядная статистика. Используем R! А.Б. Шипунов, Е.М. Балдин, П.А. Волкова, А.И. Коробейников, С.А. Назарова, С.В. Петров, В.Г. Суфиянов Москва, 2017
УДК 311:004.9R ББК 60.6с515 Ш63 Ш63 А.Б. Шипунов, Е.М. Балдин, П.А. Волкова, А.И. Коробейников, С.А.Назарова, С.В. Петров, В.Г. Суфиянов Наглядная статистика. Используем R! – М.: ДМК Пресс – 298 с.: ил. ISBN 978-5-97060-473-1 Если вам необходима статистическая обработка данных для курсовой, диплома, статьи или диссертации; вы хотите лучше понимать результаты тех статистических методов, которые применяете; вы устали от того, что программы анализа данных не способны выполнить нестандартные задачи; вам необходимо перегруппировать ваши данные, но жаль тратить на это часы ручного труда; вам нужно освоить самые современные методы, еще не нашедшие отражения в большинстве статистических пакетов, то эта книга – для вас! Изложение построено на базе самого современного программного обеспечения – статистической среды R, которая принадлежит к числу наиболее динамически развивающихся программ в своем классе. Освоив R, вы сможете: полностью автоматизировать свою работу; запускать статистическую обработку прямо из текста документа; получать графики высокого качества и сохранить их в переносимых графических форматах; в любой момент повторить ваш анализ (например, если поменялись требования к иллюстрациям или исходные данные); использовать сотни «библиотек»-плагинов, разработанных для R; применять самые современные методы; разрабатывать собственные программы анализа данных: от коротких «макросов» до полноценных пакетов, реализующих новейшие алгоритмы; и, естественно, проводить любой стандартный анализ данных, получая при этом графики любой степени сложности. УДК 311:004.9R ББК 60.6с515 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. © А.Б. Шипунов и др. © Îôîðìëåíèå, èçäàíèå, ÄÌÊ Ïðåññ ISBN 978-5-97060-473-1
Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Глава 1. Что такое данные и зачем их обрабатывать? . . . 10 1.1. Откуда берутся данные . . . . . . . . . . . . . . . . . . . 10 1.2. Генеральная совокупность и выборка . . . . . . . . . . . 12 1.3. Как получать данные . . . . . . . . . . . . . . . . . . . . 13 1.4. Что ищут в данных . . . . . . . . . . . . . . . . . . . . . 17 Глава 2. Как обрабатывать данные . . . . . . . . . . . . . . . 21 2.1. Неспециализированные программы . . . . . . . . . . . . 21 2.2. Специализированные статистические программы . . . . 22 2.2.1. Оконно-кнопочные системы . . . . . . . . . . . . . 22 2.2.2. Статистические среды . . . . . . . . . . . . . . . . 24 2.3. Из истории S и R . . . . . . . . . . . . . . . . . . . . . . . 24 2.4. Применение, преимущества и недостатки R . . . . . . . 25 2.5. Как скачать и установить R . . . . . . . . . . . . . . . . 27 2.6. Как начать работать в R . . . . . . . . . . . . . . . . . . 28 2.6.1. Запуск . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.6.2. Первые шаги . . . . . . . . . . . . . . . . . . . . . 29 2.7. R и работа с данными: вид снаружи . . . . . . . . . . . . 30 2.7.1. Как загружать данные . . . . . . . . . . . . . . . . 30 2.7.2. Как сохранять результаты . . . . . . . . . . . . . 36 2.7.3. R как калькулятор . . . . . . . . . . . . . . . . . . 37 2.7.4. Графики . . . . . . . . . . . . . . . . . . . . . . . . 38 2.7.5. Графические устройства . . . . . . . . . . . . . . . 40 2.7.6. Графические опции . . . . . . . . . . . . . . . . . . 42 2.7.7. Интерактивная графика . . . . . . . . . . . . . . . 43 Глава 3. Типы данных . . . . . . . . . . . . . . . . . . . . . . . 46 3.1. Градусы, часы и километры: интервальные данные . . . 46 3.2. «Садись, двойка»: шкальные данные . . . . . . . . . . . 49 3.3. Красный, желтый, зеленый: номинальные данные . . . . 50 3.4. Доли, счет и ранги: вторичные данные . . . . . . . . . . 55 3.5. Пропущенные данные . . . . . . . . . . . . . . . . . . . . 59 3.6. Выбросы и как их найти . . . . . . . . . . . . . . . . . . 61
3.7. Меняем данные: основные принципы преобразования . . 61 3.8. Матрицы, списки и таблицы данных . . . . . . . . . . . 63 3.8.1. Матрицы . . . . . . . . . . . . . . . . . . . . . . . . 63 3.8.2. Списки . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.8.3. Таблицы данных . . . . . . . . . . . . . . . . . . . 68 Глава 4. Великое в малом: одномерные данные . . . . . . . 72 4.1. Как оценивать общую тенденцию . . . . . . . . . . . . . 72 4.2. Ошибочные данные . . . . . . . . . . . . . . . . . . . . . 82 4.3. Одномерные статистические тесты . . . . . . . . . . . . 83 4.4. Как создавать свои функции . . . . . . . . . . . . . . . . 87 4.5. Всегда ли точны проценты . . . . . . . . . . . . . . . . . 90 Глава 5. Анализ связей: двумерные данные . . . . . . . . . 94 5.1. Что такое статистический тест . . . . . . . . . . . . . . . 94 5.1.1. Статистические гипотезы . . . . . . . . . . . . . . 94 5.1.2. Статистические ошибки . . . . . . . . . . . . . . . 95 5.2. Есть ли различие, или Тестирование двух выборок . . . 96 5.3. Есть ли соответствие, или Анализ таблиц . . . . . . . . 102 5.4. Есть ли взаимосвязь, или Анализ корреляций . . . . . . 109 5.5. Какая связь, или Регрессионный анализ . . . . . . . . . 114 5.6. Вероятность успеха, или Логистическая регрессия . . . 123 5.7. Если выборок больше двух . . . . . . . . . . . . . . . . . 127 Глава 6. Анализ структуры: data mining . . . . . . . . . . . 142 6.1. Рисуем многомерные данные . . . . . . . . . . . . . . . . 142 6.1.1. Диаграммы рассеяния . . . . . . . . . . . . . . . . 143 6.1.2. Пиктограммы . . . . . . . . . . . . . . . . . . . . . 146 6.2. Тени многомерных облаков: анализ главных компонент 149 6.3. Классификация без обучения, или Кластерный анализ . . . . . . . . . . . . . . . . . . . 155 6.4. Классификация с обучением, или Дискриминантный анализ . . . . . . . . . . . . . . . 164 Глава 7. Узнаем будущее: анализ временных рядов . . . . 173 7.1. Что такое временные ряды . . . . . . . . . . . . . . . . . 173 7.2. Тренд и период колебаний . . . . . . . . . . . . . . . . . 173 7.3. Построение временного ряда . . . . . . . . . . . . . . . . 174 7.4. Прогноз . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Глава 8. Статистическая разведка . . . . . . . . . . . . . . . . 190 8.1. Первичная обработка данных . . . . . . . . . . . . . . . . 190 8.2. Окончательная обработка данных . . . . . . . . . . . . . 190
8.3. Отчет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Приложение А. Пример работы в R . . . . . . . . . . . . . . 196 Приложение Б. Графический интерфейс (GUI) для R . . 207 Б.1. R Сommander . . . . . . . . . . . . . . . . . . . . . . . . . 207 Б.2. RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 Б.3. RKWard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Б.4. Revolution-R . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Б.5. JGR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Б.6. Rattle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Б.7. rpanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Б.8. ESS и другие IDE . . . . . . . . . . . . . . . . . . . . . . 218 Приложение В. Основы программирования в R . . . . . . . 220 В.1. Базовые объекты языка R . . . . . . . . . . . . . . . . . . 220 В.1.1. Вектор . . . . . . . . . . . . . . . . . . . . . . . . . 220 В.1.2. Список . . . . . . . . . . . . . . . . . . . . . . . . . 221 В.1.3. Матрица и многомерная матрица . . . . . . . . . 222 В.1.4. Факторы . . . . . . . . . . . . . . . . . . . . . . . . 223 В.1.5. Таблица данных . . . . . . . . . . . . . . . . . . . 224 В.1.6. Выражение . . . . . . . . . . . . . . . . . . . . . . 224 В.2. Операторы доступа к данным . . . . . . . . . . . . . . . 225 В.2.1. Оператор [ с положительным аргументом . . . . 225 В.2.2. Оператор [ с отрицательным аргументом . . . . . 226 В.2.3. Оператор [ со строковым аргументом . . . . . . . 226 В.2.4. Оператор [ с логическим аргументом . . . . . . . 227 В.2.5. Оператор $ . . . . . . . . . . . . . . . . . . . . . . 227 В.2.6. Оператор [[ . . . . . . . . . . . . . . . . . . . . . . 228 В.2.7. Доступ к табличным данным . . . . . . . . . . . . 229 В.2.8. Пустые индексы . . . . . . . . . . . . . . . . . . . . 231 В.3. Функции и аргументы . . . . . . . . . . . . . . . . . . . . 231 В.4. Циклы и условные операторы . . . . . . . . . . . . . . . 234 В.5. R как СУБД . . . . . . . . . . . . . . . . . . . . . . . . . 235 В.6. Правила переписывания. Векторизация . . . . . . . . . . 238 В.7. Отладка . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 В.8. Элементы объектно-ориентированного программирования в R . . . . . . . . . . . . . . . . . . . . 246 Приложение Г. Выдержки из документации R . . . . . . . 249 Г.1. Среда R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 Г.2. R и S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Г.3. R и статистика . . . . . . . . . . . . . . . . . . . . . . . . 250
Г.4. Получение помощи . . . . . . . . . . . . . . . . . . . . . . 250 Г.5. Команды R . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Г.6. Повтор и коррекция предыдущих команд . . . . . . . . 252 Г.7. Сохранение данных и удаление объектов . . . . . . . . . 252 Г.8. Внешнее произведение двух матриц . . . . . . . . . . . . 253 Г.9. c() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Г.10. Присоединение . . . . . . . . . . . . . . . . . . . . . . . . 254 Г.11. scan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Г.12. R как набор статистических таблиц . . . . . . . . . . . . 256 Г.13. Область действия . . . . . . . . . . . . . . . . . . . . . . 256 Г.14. Настройка окружения . . . . . . . . . . . . . . . . . . . . 260 Г.15. Графические функции . . . . . . . . . . . . . . . . . . . . 261 Г.15.1. plot() . . . . . . . . . . . . . . . . . . . . . . . . . 262 Г.15.2. Отображение многомерных данных . . . . . . . . 263 Г.15.3. Другие графические функции высокого уровня . . . . . . . . . . . . . . . . . . . . . . . . . 264 Г.15.4. Параметры функций высокого уровня . . . . . . . 265 Г.15.5. Низкоуровневые графические команды . . . . . . 266 Г.15.6. Математические формулы . . . . . . . . . . . . . . 269 Г.15.7. Интерактивная графика . . . . . . . . . . . . . . . 269 Г.15.8. par() . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Г.15.9. Список графических параметров . . . . . . . . . . 272 Г.15.10.Края рисунка . . . . . . . . . . . . . . . . . . . . . 275 Г.15.11.Составные изображения . . . . . . . . . . . . . . . 276 Г.15.12.Устройства вывода . . . . . . . . . . . . . . . . . . 277 Г.15.13.Несколько устройств вывода одновременно . . . . 278 Г.16. Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Г.16.1. Стандартные и сторонние пакеты . . . . . . . . . 280 Г.16.2. Пространство имен пакета . . . . . . . . . . . . . 280 Приложение Д. Краткий словарь языка R . . . . . . . . . . 282 Приложение Е. Краткий словарь терминов . . . . . . . . . 285 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 Об авторах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Предисловие Эта книга написана для тех, кто хочет научиться обрабатывать данные. Такая задача возникает очень часто, особенно тогда, когда нужно выяснить ранее неизвестный факт. Например: есть ли эффект от нового лекарства? Или: различаются ли рейтинги двух политиков? Или: как будет меняться курс доллара на следующей неделе? Многие люди думают, что этот неизвестный факт можно выяснить, если просто немного подумать над данными. К сожалению, часто это совершенно не так. Например, по опросу 262 человек, выходящих с избирательных участков, выяснилось, что 52% проголосовало за кандидата А, а 48% — за кандидата Б (естественно, мы упрощаем ситуацию). Значит ли это, что кандидат А победил? Подумав, многие сначала скажут «Да», а через некоторое время, возможно, «Кто его знает». Но есть простой (с точки зрения современных компьютерных программ) «тест пропорций», который позволяет не только ответить на вопрос (в данном случае «Нет»), но и вычислить, сколько надо было опросить человек, чтобы можно было бы ответить на такой вопрос. В описанном случае это примерно 5000 человек (см. объяснение в конце главы про одномерные данные)! В общем, если бы люди знали, что можно сделать методами анализа данных, ошибок и неясностей в нашей жизни стало бы гораздо меньше. К сожалению, ситуация в этой области далека от благополучия. Тем из нас, кто заканчивал институты, часто читали курс «Теория вероятностей и математическая статистика», однако кроме ужаса и/или тоски от длинных математических формул, набитых греческими буквами, большинство ничего из этих курсов не помнит. А ведь на теории вероятностей основаны большинство методов анализа данных! С другой стороны, ведь совсем не обязательно знать радиофизику для того, чтобы слушать любимую радиостанцию по радиоприемнику. Значит, для того чтобы анализировать данные в практических целях, не обязательно свободно владеть математической статистикой и теорией вероятностей. Эту проблему давно уже почувствовали многие английские и американские авторы — названиями типа «Статистика без слез» пестрят книжные полки магазинов, посвященные книгам по анализу данных. Тут, правда, следует быть осторожным как авторам, так и читателям таких книг: многие методы анализа данных имеют, если можно так
Предисловие выразиться, двойное дно. Их (эти методы) можно применять, глубоко не вникая в сущность используемой там математики, получать результаты и обсуждать эти результаты в отчетах. Однако в один далеко не прекрасный день может выясниться, что данный метод совершенно не подходил для ваших данных, и поэтому полученные результаты и результатами-то назвать нельзя... В общем, будьте бдительны, внимательно читайте про все ограничения методов анализа, а при чтении примеров досконально сравнивайте их со своими данными. Про примеры: мы постарались привести как можно больше примеров, как простых, так и сложных, и по возможности из разных областей жизни, поскольку читателями этой книги могут быть люди самых разных профессий. Еще мы попробовали снизить объем теоретического материала, потому что мы знаем — очень многие учатся только на примерах. Поскольку книга посвящена такой компьютерной программе, которая «работает на текстовом коде», логично было поместить эти самые коды в текстовый файл, а сам файл сделать общедоступным. Так мы и поступили — приведенные в книге примеры можно найти на веб-странице по адресу http://ashipunov.info/shipunov/ software/r/. Там же находятся разные полезные ссылки и те файлы данных, которые не поставляются вместе с программой. О структуре книги: первая глава, по сути, целиком теоретическая. Если лень читать общие рассуждения, можно сразу переходить ко второй главе. Однако в первой главе есть много такой информации, которая позволит в будущем не «наступать на грабли». В общем, решайте сами. Во второй главе самые важные — разделы, начиная с «Как скачать и установить R», в которых объясняется, как работать с программой R. Если не усвоить этих разделов, все остальное чтение будет почти бесполезным. Советуем внимательно прочитать и обязательно проработать все примеры из этого раздела. Последующие главы составляют ядро книги, там рассказывается про самые распространенные методы анализа данных. Глава «Статистическая разведка», в которой обсуждается общий порядок статистического анализа, подытоживает книгу; в ней еще раз рассказывается про методы, обсуждавшиеся в предыдущих главах. В приложениях к книге содержится много полезной информации: там рассказано о графических интерфейсах к R, приведен простой практический пример работы, описаны основы программирования в R, приведены выдержки из перевода официальной документации. По сути, каждое приложение — это отдельный небольшой справочник, который можно использовать более или менее независимо от остальной книги. Конечно, множество статистических методов, в том числе и довольно популярных, в книгу не вошли. Мы почти не касаемся статистических моделей, ничего не пишем о контрастах, не рассказываем о стандартных распределениях (за исключением нормального), не объясняем,
Предисловие 9 как делать многофакторный и блочный дисперсионный анализ, планировать эксперимент, эффектах, кривых выживания, байесовых методах, факторном анализе, геостатистике и т. д., и т. п. Наша цель — научить основам статистического анализа. А если читатель хорошо освоит основы, то любой продвинутый метод он сможет одолеть без особого труда, опираясь на литературу, встроенную справку и Интернет. Несколько технических замечаний: все десятичные дроби в книге представлены в виде чисел с разделителем-точкой (типа 10.4), а не запятой (типа 10,4). Это сделано потому, что программа R по умолчанию «понимает» только первый вариант дробей. И еще: многие приведенные в книге примеры можно (и нужно!) повторить самостоятельно. Такие примеры напечатаны машинописным шрифтом и начинаются со значка «больше» — «>». Если пример не умещается на одной строке, все последующие его строки начинаются со знака «плюс» — «+» (не набирайте эти знаки, когда будете выполнять примеры!). Если в книге идет речь о загрузке файлов данных, то предполагается, что все они находятся в поддиректории data в текущей директории. Если вы будете скачивать файлы данных с упомянутого выше сайта, не забудьте создать эту поддиректорию и скопировать туда файлы данных.
Глава 1 Что такое данные и зачем их обрабатывать? В этой главе рассказывается о самых общих понятиях анализа данных. 1.1. Откуда берутся данные «Без пруда не выловишь и рыбку из него»,— говорит народная мудрость. Действительно, если хочешь анализировать данные, надо их сначала получить. Способов получения данных много, а самые главные — наблюдения и эксперименты. Наблюдением будем называть такой способ получения данных, при котором воздействие наблюдателя на наблюдаемый объект сведено к минимуму. Эксперимент тоже включает наблюдение, но сначала на наблюдаемый объект оказывается заранее рассчитанное воздействие. Для наблюдения очень важно это «сведение воздействия к минимуму». Если этого не сделать, мы получим данные, отражающие не свойства объекта, а его реакцию на наше воздействие. Вот, например, встала задача исследовать, чем питается какое-то редкое животное. Оптимальная стратегия наблюдения здесь состоит в установке скрытых камер во всех местах, где это животное обитает. После этого останется только обработать снятое, чтобы определить вид пищи. Очень часто, однако, оптимальное решение совершенно невыполнимо, и тогда пытаются обойтись, скажем, наблюдением за животным в зоопарке. Ясно, что в последнем случае на объект оказывается воздействие, и немалое. В самом деле, животное поймали, привезли в совершенно нетипичные для него условия, да и корм, скорее всего, будет непохож на тот, каким оно питалось на родине. В общем, если наблюдения в зоопарке поставлены грамотно, то выяснено будет не то, чем вообще питается данное животное, а то, чем оно питается при содержании в определенном зоопарке. К сожалению, многие (и исследователи, и те, кто потом читает их отчеты) часто не видят разницы между этими двумя утверждениями.