А. Б. Шипунов, Е. М. Балдин, П. А. Волкова, А. И. Коробейников, С. А. Назарова
Скачать 3.04 Mb.
|
А. Б. Шипунов, Е. М. Балдин, П. А. Волкова, А. И. Коробейников, С. А. Назарова, С. В. Петров, В. Г. Суфиянов Наглядная статистика Используем R! 26 июля 2020 г. (исправленная версия) Оглавление Предисловие 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. Доли, счет и ранги: вторичные данные . . . . . . . . . . 56 3.5. Пропущенные данные . . . . . . . . . . . . . . . . . . . . 59 3.6. Выбросы и как их найти . . . . . . . . . . . . . . . . . . 61 4 3.7. Меняем данные: основные принципы преобразования . . 62 3.8. Матрицы, списки и таблицы данных . . . . . . . . . . . 64 3.8.1. Матрицы . . . . . . . . . . . . . . . . . . . . . . . . 64 3.8.2. Списки . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.8.3. Таблицы данных . . . . . . . . . . . . . . . . . . . 68 Глава 4. Великое в малом: одномерные данные 73 4.1. Как оценивать общую тенденцию . . . . . . . . . . . . . 73 4.2. Ошибочные данные . . . . . . . . . . . . . . . . . . . . . 83 4.3. Одномерные статистические тесты . . . . . . . . . . . . 84 4.4. Как создавать свои функции . . . . . . . . . . . . . . . . 88 4.5. Всегда ли точны проценты . . . . . . . . . . . . . . . . . 91 Глава 5. Анализ связей: двумерные данные 95 5.1. Что такое статистический тест . . . . . . . . . . . . . . . 95 5.1.1. Статистические гипотезы . . . . . . . . . . . . . . 95 5.1.2. Статистические ошибки . . . . . . . . . . . . . . . 96 5.2. Есть ли различие, или Тестирование двух выборок . . . 97 5.3. Есть ли соответствие, или Анализ таблиц . . . . . . . . 103 5.4. Есть ли взаимосвязь, или Анализ корреляций . . . . . . 110 5.5. Какая связь, или Регрессионный анализ . . . . . . . . . 115 5.6. Вероятность успеха, или Логистическая регрессия . . . 125 5.7. Если выборок больше двух . . . . . . . . . . . . . . . . . 128 Глава 6. Анализ структуры: data mining . . . . . . . . . . . 144 6.1. Рисуем многомерные данные . . . . . . . . . . . . . . . . 144 6.1.1. Диаграммы рассеяния . . . . . . . . . . . . . . . . 145 6.1.2. Пиктограммы . . . . . . . . . . . . . . . . . . . . . 148 6.2. Тени многомерных облаков: анализ главных компонент 151 6.3. Классификация без обучения, или Кластерный анализ . 157 6.4. Классификация с обучением, или Дискриминантный анализ . . . . . . . . . . . . . . . 166 Глава 7. Узнаем будущее: анализ временных рядов . . . . 175 7.1. Что такое временные ряды . . . . . . . . . . . . . . . . . 175 7.2. Тренд и период колебаний . . . . . . . . . . . . . . . . . 175 7.3. Построение временного ряда . . . . . . . . . . . . . . . . 176 7.4. Прогноз . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Глава 8. Статистическая разведка . . . . . . . . . . . . . . . . 192 8.1. Первичная обработка данных . . . . . . . . . . . . . . . . 192 8.2. Окончательная обработка данных . . . . . . . . . . . . . 192 8.3. Отчет . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5 Приложение А. Пример работы в R . . . . . . . . . . . . . . 198 Приложение Б. Графический интерфейс (GUI) для R . . 209 Б.1. R Сommander . . . . . . . . . . . . . . . . . . . . . . . . . 209 Б.2. RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Б.3. RKWard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Б.4. Revolution-R . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Б.5. JGR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Б.6. Rattle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Б.7. rpanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Б.8. ESS и другие IDE . . . . . . . . . . . . . . . . . . . . . . 220 Приложение В. Основы программирования в R . . . . . . . 222 В.1. Базовые объекты языка R . . . . . . . . . . . . . . . . . . 222 В.1.1. Вектор . . . . . . . . . . . . . . . . . . . . . . . . . 222 В.1.2. Список . . . . . . . . . . . . . . . . . . . . . . . . . 223 В.1.3. Матрица и многомерная матрица . . . . . . . . . 224 В.1.4. Факторы . . . . . . . . . . . . . . . . . . . . . . . . 225 В.1.5. Таблица данных . . . . . . . . . . . . . . . . . . . 226 В.1.6. Выражение . . . . . . . . . . . . . . . . . . . . . . 226 В.2. Операторы доступа к данным . . . . . . . . . . . . . . . 227 В.2.1. Оператор [ с положительным аргументом . . . . 227 В.2.2. Оператор [ с отрицательным аргументом . . . . . 228 В.2.3. Оператор [ со строковым аргументом . . . . . . . 228 В.2.4. Оператор [ с логическим аргументом . . . . . . . 229 В.2.5. Оператор $ . . . . . . . . . . . . . . . . . . . . . . 229 В.2.6. Оператор [[ . . . . . . . . . . . . . . . . . . . . . . 230 В.2.7. Доступ к табличным данным . . . . . . . . . . . . 231 В.2.8. Пустые индексы . . . . . . . . . . . . . . . . . . . . 233 В.3. Функции и аргументы . . . . . . . . . . . . . . . . . . . . 233 В.4. Циклы и условные операторы . . . . . . . . . . . . . . . 236 В.5. R как СУБД . . . . . . . . . . . . . . . . . . . . . . . . . 237 В.6. Правила переписывания. Векторизация . . . . . . . . . . 240 В.7. Отладка . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 В.8. Элементы объектно-ориентированного программирования в R . . . . . . . . . . . . . . . . . . . . 248 Приложение Г. Выдержки из документации R . . . . . . . 251 Г.1. Среда R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Г.2. R и S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Г.3. R и статистика . . . . . . . . . . . . . . . . . . . . . . . . 252 Г.4. Получение помощи . . . . . . . . . . . . . . . . . . . . . . 252 Г.5. Команды R . . . . . . . . . . . . . . . . . . . . . . . . . . 253 6 Г.6. Повтор и коррекция предыдущих команд . . . . . . . . 254 Г.7. Сохранение данных и удаление объектов . . . . . . . . . 254 Г.8. Внешнее произведение двух матриц . . . . . . . . . . . . 255 Г.9. c() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 Г.10. Присоединение . . . . . . . . . . . . . . . . . . . . . . . . 256 Г.11. scan() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 Г.12. R как набор статистических таблиц . . . . . . . . . . . . 258 Г.13. Область действия . . . . . . . . . . . . . . . . . . . . . . 258 Г.14. Настройка окружения . . . . . . . . . . . . . . . . . . . . 262 Г.15. Графические функции . . . . . . . . . . . . . . . . . . . . 263 Г.15.1. plot() . . . . . . . . . . . . . . . . . . . . . . . . . 264 Г.15.2. Отображение многомерных данных . . . . . . . . 265 Г.15.3. Другие графические функции высокого уровня . . . . . . . . . . . . . . . . . . . . . . . . . 266 Г.15.4. Параметры функций высокого уровня . . . . . . . 267 Г.15.5. Низкоуровневые графические команды . . . . . . 268 Г.15.6. Математические формулы . . . . . . . . . . . . . . 271 Г.15.7. Интерактивная графика . . . . . . . . . . . . . . . 271 Г.15.8. par() . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Г.15.9. Список графических параметров . . . . . . . . . . 274 Г.15.10.Края рисунка . . . . . . . . . . . . . . . . . . . . . 277 Г.15.11.Составные изображения . . . . . . . . . . . . . . . 278 Г.15.12.Устройства вывода . . . . . . . . . . . . . . . . . . 279 Г.15.13.Несколько устройств вывода одновременно . . . . 280 Г.16. Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Г.16.1. Стандартные и сторонние пакеты . . . . . . . . . 282 Г.16.2. Пространство имен пакета . . . . . . . . . . . . . 282 Приложение Д. Краткий словарь языка R . . . . . . . . . . 284 Приложение Е. Краткий словарь терминов . . . . . . . . . 287 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Об авторах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 Предисловие Эта книга написана для тех, кто хочет научиться обрабатывать дан- ные. Такая задача возникает очень часто, особенно тогда, когда нужно выяснить ранее неизвестный факт. Например: есть ли эффект от но- вого лекарства? Или: различаются ли рейтинги двух политиков? Или: как будет меняться курс доллара на следующей неделе? Многие люди думают, что этот неизвестный факт можно выяснить, если просто немного подумать над данными. К сожалению, часто это совершенно не так. Например, по опросу 262 человек, выходящих с из- бирательных участков, выяснилось, что 52% проголосовало за канди- дата А, а 48% — за кандидата Б (естественно, мы упрощаем ситуацию). Значит ли это, что кандидат А победил? Подумав, многие сначала ска- жут «Да», а через некоторое время, возможно, «Кто его знает». Но есть простой (с точки зрения современных компьютерных программ) «тест пропорций», который позволяет не только ответить на вопрос (в данном случае «Нет»), но и вычислить, сколько надо было опросить человек, чтобы можно было бы ответить на такой вопрос. В описанном случае это примерно 5000 человек (см. объяснение в конце главы про одномерные данные)! В общем, если бы люди знали, что можно сделать методами ана- лиза данных, ошибок и неясностей в нашей жизни стало бы гораздо меньше. К сожалению, ситуация в этой области далека от благополу- чия. Тем из нас, кто заканчивал институты, часто читали курс «Тео- рия вероятностей и математическая статистика», однако кроме ужаса и/или тоски от длинных математических формул, набитых гречески- ми буквами, большинство ничего из этих курсов не помнит. А ведь на теории вероятностей основаны большинство методов анализа данных! С другой стороны, ведь совсем не обязательно знать радиофизику для того, чтобы слушать любимую радиостанцию по радиоприемнику. Зна- чит, для того чтобы анализировать данные в практических целях, не обязательно свободно владеть математической статистикой и теорией вероятностей. Эту проблему давно уже почувствовали многие англий- ские и американские авторы — названиями типа «Статистика без слез» пестрят книжные полки магазинов, посвященные книгам по анализу данных. Тут, правда, следует быть осторожным как авторам, так и читате- лям таких книг: многие методы анализа данных имеют, если можно так 8 Предисловие выразиться, двойное дно. Их (эти методы) можно применять, глубоко не вникая в сущность используемой там математики, получать резуль- таты и обсуждать эти результаты в отчетах. Однако в один далеко не прекрасный день может выясниться, что данный метод совершен- но не подходил для ваших данных, и поэтому полученные результаты и результатами-то назвать нельзя... В общем, будьте бдительны, вни- мательно читайте про все ограничения методов анализа, а при чтении примеров досконально сравнивайте их со своими данными. Про примеры : мы постарались привести как можно больше приме- ров, как простых, так и сложных, и по возможности из разных обла- стей жизни, поскольку читателями этой книги могут быть люди самых разных профессий. Еще мы попробовали снизить объем теоретическо- го материала, потому что мы знаем — очень многие учатся только на примерах. Поскольку книга посвящена такой компьютерной про- грамме, которая «работает на текстовом коде», логично было поме- стить эти самые коды в текстовый файл, а сам файл сделать обще- доступным. Так мы и поступили — приведенные в книге примеры мож- но найти на веб-странице по адресу http://ashipunov.info/shipunov/ software/r/ . Там же находятся разные полезные ссылки и те файлы данных, которые не поставляются вместе с программой. О структуре книги : первая глава, по сути, целиком теоретическая. Если лень читать общие рассуждения, можно сразу переходить ко вто- рой главе. Однако в первой главе есть много такой информации, кото- рая позволит в будущем не «наступать на грабли». В общем, решайте сами. Во второй главе самые важные — разделы, начиная с «Как ска- чать и установить R», в которых объясняется, как работать с програм- мой R. Если не усвоить этих разделов, все остальное чтение будет почти бесполезным. Советуем внимательно прочитать и обязательно прорабо- тать все примеры из этого раздела. Последующие главы составляют ядро книги, там рассказывается про самые распространенные методы анализа данных. Глава «Статистическая разведка», в которой обсужда- ется общий порядок статистического анализа, подытоживает книгу; в ней еще раз рассказывается про методы, обсуждавшиеся в предыдущих главах. В приложениях к книге содержится много полезной информа- ции: там рассказано о графических интерфейсах к R, приведен простой практический пример работы, описаны основы программирования в R, приведены выдержки из перевода официальной документации. По сути, каждое приложение — это отдельный небольшой справочник, который можно использовать более или менее независимо от остальной книги. Конечно, множество статистических методов, в том числе и доволь- но популярных, в книгу не вошли. Мы почти не касаемся статистиче- ских моделей, ничего не пишем о контрастах, не рассказываем о стан- дартных распределениях (за исключением нормального), эффектах, кри- Предисловие 9 вых выживания, байесовых методах, факторном анализе, геостатисти- ке, не объясняем, как делать многофакторный и блочный дисперсион- ный анализ, планировать эксперимент и т. д., и т. п. Наша цель — на- учить основам статистического анализа. А если читатель хорошо осво- ит основы, то любой продвинутый метод он сможет одолеть без особого труда, опираясь на литературу, встроенную справку и Интернет. Несколько технических замечаний : все десятичные дроби в книге представлены в виде чисел с разделителем-точкой (типа 10.4), а не за- пятой (типа 10,4). Это сделано потому, что программа R по умолчанию «понимает» только первый вариант дробей. И еще: многие приведенные в книге примеры можно (и нужно!) повторить самостоятельно. Такие примеры напечатаны машинописным шрифтом и начинаются со значка «больше» — «>». Если пример не умещается на одной строке, все по- следующие его строки начинаются со знака «плюс» — «+» (не набирайте эти знаки, когда будете выполнять примеры!). Если в книге идет речь о загрузке файлов данных, то предполагается, что все они находятся в поддиректории data в текущей директории. Если вы будете скачи- вать файлы данных с упомянутого выше сайта, не забудьте создать эту поддиректорию и скопировать туда файлы данных. Глава 1 Что такое данные и зачем их обрабатывать? В этой главе рассказывается о самых общих понятиях анализа дан- ных. 1.1. Откуда берутся данные «Без пруда не выловишь и рыбку из него»,— говорит народная муд- рость. Действительно, если хочешь анализировать данные, надо их сна- чала получить. Способов получения данных много, а самые главные — наблюдения и эксперименты. Наблюдением будем называть такой способ получения данных, при котором воздействие наблюдателя на наблюдаемый объект сведено к минимуму. Эксперимент тоже включает наблюдение, но сначала на наблюдаемый объект оказывается заранее рассчитанное воздействие. Для наблюдения очень важно это «сведение воздействия к минимуму». Если этого не сделать, мы получим данные, отражающие не свойства объекта, а его реакцию на наше воздействие. Вот, например, встала задача исследовать, чем питается какое-то редкое животное. Оптимальная стратегия наблюдения здесь состоит в установке скрытых камер во всех местах, где это животное обитает. После этого останется только обработать снятое, чтобы определить вид пищи. Очень часто, однако, оптимальное решение совершенно невыпол- нимо, и тогда пытаются обойтись, скажем, наблюдением за животным в зоопарке. Ясно, что в последнем случае на объект оказывается воз- действие, и немалое. В самом деле, животное поймали, привезли в со- вершенно нетипичные для него условия, да и корм, скорее всего, будет непохож на тот, каким оно питалось на родине. В общем, если наблю- дения в зоопарке поставлены грамотно, то выяснено будет не то, чем вообще питается данное животное, а то, чем оно питается при содержа- нии в определенном зоопарке. К сожалению, многие (и исследователи, и те, кто потом читает их отчеты) часто не видят разницы между этими двумя утверждениями. Откуда берутся данные 11 Вернемся к примеру из предисловия. Предположим, мы опрашива- ем выходящих с избирательных участков. Часть людей, конечно, во- обще окажется отвечать. Часть ответит что-нибудь, не относящееся к делу. Часть вполне может намеренно или случайно исказить свой ответ. Часть ответит правду. И все это серьезным образом зависит от наблю- дателя — человека, проводящего опрос. Даже упомянутые выше скрытые камеры приведут к определенно- му воздействию: они же скрытые, но не невидимые и невесомые. Нет никакой гарантии, что наше животное или его добыча не отреагирует на них. А кто будет ставить камеры? Если это люди, то чем больше ка- мер поставить, тем сильнее будет воздействие на окружающую среду. Сбрасывать с вертолета? Надеемся, что вам понятно, к чему это может привести. В общем, из сказанного должно быть понятно, что наблюдение «в чистом виде» более или менее неосуществимо, поскольку всегда будет внесено какое-нибудь воздействие. Поэтому для того, чтобы адекватно работать с данными наблюдений, надо всегда четко представлять, как они проводились. Если воздействие было значительным, то надо пред- ставлять (хотя бы теоретически), какие оно могло повлечь изменения, а в отчете обязательно указать на те ограничения, которые были вы- званы способом наблюдения. Не следует без необходимости применять экстраполяцию: если мы увидели, что А делает Б, нельзя писать «А всегда делает Б» и даже «А обычно делает Б». Можно лишь писать нечто вроде «в наших наблюдениях А делал Б, это позволяет с некото- рой вероятностью предположить, что он может делать Б». У эксперимента свои проблемы. Наиболее общие из них — это точ- ный учет воздействия и наличие контроля. Например, мы исследуем действие нового лекарства. Классический эксперимент состоит в том, что выбираются две группы больных (как выбрать такие группы, сколь- ко должно быть человек и прочее, рассмотрено дальше). Всем больным сообщают, что проводится исследование нового лекарства, но его дают только больным первой группы, остальные получают так называемое плацебо , внешне неотличимое от настоящего лекарства, но не содержа- щее ничего лекарственного. Зачем это делается? Дело в том, что если больной будет знать, что ему дают «ненастоящее» лекарство, то это скажется на эффективности лечения, потому что результат зависит не только от того, что больной пьет, но и от того, что он чувствует. Ины- ми словами, психологическое состояние больного — это дополнитель- ный фактор воздействия, от которого в эксперименте лучше избавить- ся. Очень часто не только больным, но и их врачам не сообщают, кому дают плацебо, а кому — настоящее лекарство (двойной слепой метод). Это позволяет гарантировать, что и психологическое состояние врача не повлияет на исход лечения. 12 |