Читать книгу Основы статистической обработки педагогической информации - Денис Владимирович Соломатин - Страница 4
Глава 1. Первое знакомство
§1. Основы статистической обработки информацией
ОглавлениеНаука о данных – это огромная сфера человеческой деятельности, общепринятый подход к освоению которой, прослеживающийся в каждом исследовательском проекте как правило следующий. Сначала данные импортируются в R. Обычно это означает, что берете данные, хранящиеся в файле, базе данных или интернете, и загружаете их в таблицу данных R. Если не можете импортировать свои данные в R, то дальнейший анализ данных в R не представляется возможным и стоит рассмотреть альтернативные варианты.
После того, как импортировали свои данные в R, неплохо было бы привести их в порядок. Очистка ваших данных означает хранение их в согласованном виде, который соответствует семантике набора данных. Короче говоря, когда данные структурированы, каждый столбец является переменной, и каждый ряд – это наблюдение. Структурированные отфильтрованные данные важны еще и потому, что последовательная запись позволяет сосредоточиться на вопросах о непосредственно самих данных, а не на вопросах о получении данные в правильном формате для разных функций.
После того, как у вас есть структурированные данные, общим первым шагом является их преобразование, включающее в себя:
1) фильтрацию по наблюдениям (например, все люди обучающиеся в одном городе, или все данные за последний учебный год);
2) создание новых переменных, которые являются функциями от существующих переменных (например, вычисление продолжительности обучения или длительности прохождения тестов);
3) вычисление набора сводных статистических данных (например, наивысший балл из набранных обучающимися).
После того, как у вас есть структурированные данные с вычисленными переменными запускаются два основных генератора новых знаний: визуализация и моделирование. Оба имеют свои сильные и слабые стороны, и любой реальный анализ будет происходить в процессе их многократного чередования.
Визуализация – это фундаментальная человеческая деятельность. Одна хорошая визуализация покажет вам то, чего даже не ожидали, или поднимет новые вопросы об анализируемых данных. Хорошая визуализация также может намекнуть, что задаете неправильный вопрос, или что нужно собирать дополнительные данные. Визуализация может вдохновить вас, но не стоит обольщаться, так как для интерпретации результатов всё же требуется участие человека.
Моделирование является дополнительным инструментам визуализации. После того, как достаточно точно сформулировали свои вопросы, можете попробовать использовать математическую модель, чтобы ответить на них. Модели в R принципиально являются математическими и представляют собой вычислительный инструментарий, поэтому они хорошо масштабируются. Нередко бывает дешевле купить больше компьютеров, чем это купить больше мозгов. Но каждая модель при этом генерирует лишь предположения, и по своей природе математическая модель не может подвергать сомнению свои собственные предположения. Это означает, что модель сама по себе не может сделать принципиальное открытие.
Последняя ступень анализа данных: представление полученных результатов, – самая критическая часть любого аналитического проекта. При этом не важно, насколько хороши ваши модели или визуализации, если не можете передать свои идеи и результаты другим людям.
Объединяет все названные этапы – программирование, оно красной нитью проходит через каждый этап проекта, но не нужно быть опытным программистом, чтобы анализировать данные, достаточно знания базовых концепций, и желания постоянно улучшать свои навыки программирования, так как последнее позволяет автоматизировать частые задачи и проще решать новые.
Вы будете использовать названные инструменты практически в каждом проекте, но для большинства проектов их недостаточно. Есть эмпирический принцип 80/20 (закон Парето): можно решить около 80% задач каждого проекта используя методы, которыми уже владеете, но всегда понадобятся новые знания, чтобы справиться с оставшимися 20%.
Предыдущее описание инструментов обработки данных организована примерно в соответствии с той последовательностью, в которой они используются в статистическом анализе (хотя, конечно, любое правило имеет исключения). По собственному опыту, лучший порядок их освоения таков:
1) Начинать изучение с импорта данных, их очистки и систематизации является неоптимальным, так как 80% времени будет занято рутиной. Вместо этого, начнем с визуализации и преобразования данных, которые уже были импортированы и отфильтрованы. Таким образом, когда будете импортировать и приводить в порядок собственные данные, ваша мотивация останется высокой, потому что понимаете, к чему движетесь.
2) Некоторые темы лучше объяснить объединив их. Например, легче понять, как работают модели, если уже знаете о визуализации, структурированных данных, и программировании.
3) Инструменты программирования не самоцель, но все же позволяют взяться за решение значительно более сложных проблем. Поэтому весь спектр инструментов программирования будет представлен в середине книги, а затем увидите, как они могут сочетаться с другими статистическими инструментами, при решении интересных задач моделирования.
В рамках каждой главы постараемся придерживаться подхода из введения по аналогичному шаблону: начинать с некоторых мотивирующих примеров, чтобы увидеть картину в целом, а затем погрузиться в детали. Каждый раздел книги сопровождается упражнениями, позволяющими на практике закреплять пройденный материал. Хотя и бывает заманчивым пропускать их, но очень хорошо сказал Д. Пойа по этому поводу: «лучший способ научиться решать задачи состоит в том, чтобы самому решать эти задачи».
Есть несколько важных тем, которые в данной книге не будут охвачены, с той лишь целью, чтобы сосредоточиться на самом главном и как можно быстрее начать работать в R. А именно, не будут охвачены популярные ныне большие данные (так называемые «биг дата»). Сфокусируемся на небольших, располагаемых в памяти персонального компьютера наборах данных, что вполне оправдано для начала, ведь невозможно заниматься большими данными, если у вас нет опыта работы с малыми. При этом, сам инструмент освоите, и будете легко обрабатывать сотни мегабайт данных, и с тем же успехом сможете использовать полученные навыки для работы с 1-2 Гб данных. Для сравнения, базы рабочих учебных программ дисциплин подготавливаемых каждым преподавателем ежегодно занимают порядка 1 Гб. Если же регулярно работаете с большими данными (порядка 10-100 Гб и более), то должны будете узнать больше об иных инструментах для их обработки. Эта книга не учит работе с большими таблицами данных, появляющимися на международных образовательных платформах, из облачных хранилищ. Но если действительно работаете с большими данными, то для повышения производительности своего труда стоит приложить дополнительные усилия к освоению необходимых инструментов.
Если данные действительно большие, тщательно подумайте, может ли задача с большими данными быть решена на небольших наборах данных. Хотя исходные данные могут быть большими, часто данные, необходимые для ответа на конкретный вопрос, невелики. Возможно, найдется подмножество, подвыборка или сводка, которая помещается в память и все еще позволяет ответить на интересующий вопрос. Проблема здесь заключается в том, чтобы найти правильные небольшие данные, что часто требует много итераций. Альтернативный вариант заключается в том, что задача с большими данными является совокупностью задач с малыми входными данными, а значит, решение легко поддается распараллеливанию. Например, каждая подзадача может поместиться в локальной памяти, но у вас их миллионы. В этом примере можно построить соответствующую модель для каждого наблюдения в наборе данных. Это было бы тривиально, если бы было всего 10 или 100 наблюдений, но вместо этого у вас их миллион. К счастью, порой анализ каждого наблюдения можно осуществлять независимо от других, тогда понадобится система (например, Hadoop или Spark), позволяющая отправлять различные наборы данных на разные компьютеры для параллельной обработки. После того, как нашли способ решения своей задачи для фиксированного подмножества входных данных с помощью описанных в этой книге инструментов, примените иные инструменты, для решения её на всём наборе данных.
Далее, из этой книги ничего не узнаете о Python, Julia или любом другом языке программирования, полезном при обработке данных. Это не потому, что эти инструменты плохие, отнюдь. На практике большинство команд аналитиков используют смешение языков, часто такое происходит с R и Python. Однако, лучше осваивать один инструмент за раз. Подобно ныряльщику за жемчугом, если сгруппироваться при входе, то движение к заветной цели в новой среде будет и глубже и быстрее. Это вовсе не значит, что следует изучить только одну тему, хотелось лишь напомнить, что как правило, учиться гораздо легче, если во время обучения методом погружения придерживаться одного направления. Следует так же стремиться узнавать новое на протяжении всей своей карьеры онлайн-учителя.
Поистине, R это отличная отправная точка для путешествия в мире науки о данных. Ведь R это не просто язык программирования, а интерактивная среда для совместной работы над анализом научных данных. Для поддержки взаимодействия пользователей, R является гораздо более гибким языком, чем многие из них его ровесники. Эта гибкость имеет своими недостатки, но большой плюс в том, как легко можно развивать адаптированные грамматики для конкретных частей процесса обработки данных. Эти вспомогательные мини-языки помогают думать о решаемых проблемах в привычной терминологии, поддерживая пластичное взаимодействие между вашим мозгом и компьютером.
Эта книга посвящена исключительно табличным данным: коллекции значений, каждая из которых связана с переменной и наблюдением. При том, что есть много наборов данных, которые не вписываются естественным образом в эту парадигму, например, изображения, звуки, деревья и текст. Но таблицы чрезвычайно распространены в науке и промышленности, они являются отличной стартовой площадкой для анализа данных.
Можно разделить анализ данных на следующие два этапа: генерация гипотез и подтверждение гипотезы (иногда называемый подтверждающим анализом). Основное внимание в этой книге уделяется генерации гипотез или исследованию данных. Будем внимательно смотреть на данные и в сочетании предметной областью генерировать много интересных гипотез, чтобы помочь найти объяснение, почему данные ведут себя именно так. Относитесь к гипотезам непредвзято, скептически, с разных сторон подходя критически.
Естественным продолжением процесса генерации гипотез является подтверждение одной из гипотез. Подтверждение гипотезы бывает трудным по двум причинам:
1) Для этого понадобится точная математическая модель, чтобы генерировать фальсифицируемые прогнозы. Это часто требует значительных усилий и статистической изощренности.
2) Наблюдение можно использовать только один раз для подтверждения гипотеза. Как только используете его больше, чем один раз, возвращайтесь к проведению исследовательского анализа. Это значит, чтобы считать гипотезу подтвержденной, нужно написать заранее весь план анализа, и не отклоняться от него. Позднее мы поговорим о некоторых стратегиях, которых стоит придерживаться, для упрощения моделирования.
Ошибочно полагать моделирование как инструмент подтверждения гипотезы и выбирать визуализацию в качестве единственного инструмента для генерации гипотез. Модели зачастую используется для формулирования гипотез, и с определенной осторожностью можно использовать визуализацию для их подтверждения. Ключевое различие заключается в том, насколько часто воспроизводится каждое наблюдение: если только один раз, это подтверждение; если больше, чем один раз, это уже исследование.
Чтобы получить максимальную отдачу от этой книги, предварительно стоит изучить вводный курс численных методов и определенно полезным иметь некоторый опыт в программировании. Если никогда не программировали ранее, до прочитайте базовый курс по программированию, как полезное дополнение к этой книге.
Для запуска примеров кода из этой книги вам понадобятся: R, RStudio, коллекция пакетов R под названием Tidyverse и несколько других пакетов. Пакеты являются основной единицей воспроизводимого кода R. Они включают в себя функции, документацию, и тестовые наборы данных.
Чтобы загрузить R, если не сделали этого ранее, перейдите на сайт CRAN, который состоит из зеркалируемых серверов, распределенных по всему миру, и используется для распространения R. Не пытайтесь выбрать зеркало, которое находится географически рядом, вместо этого используйте зеркало облака, https://cloud.r-project.org, которое автоматически выяснит оптимальное расположение серверов для загрузки.
Новая основная версия R выходит один раз в год, кроме того, выпускается два или три незначительных обновления каждый год. Положите за правило регулярно обновлять установку. Да, обновление может принести немного хлопот, особенно основных версий, которые требуют переустановки всех ваших пакетов, но откладывание только ухудшает ситуацию.
RStudio это интегрированная среда разработки, или IDE, для программирования в R. Загрузите и установите его с официального сайта http://www.rstudio.com/download. RStudio обновляется несколько раз в год. Когда новая версия будет доступна, RStudio сообщит об этом. Опять же, хорошей привычкой является регулярное обновление установки, чтобы воспользоваться преимуществами актуальных сборок. Для воспроизведения примеров из этой книги, убедитесь, что установлена актуальная версия RStudio.
Когда запустите RStudio, увидите поля в интерфейсе:
На данный момент все, что нужно знать, это то, что набирается R код на панели консоли, а запускается нажатием на клавиатуре клавиши Enter.
Хрестоматийный пример, после выполнения серии команд:
library(ggplot2)
ggplot(mpg, aes(x = displ, y = hwy))+geom_point(aes(colour = class))
Система запишет лог выполнения
подключится библиотека для работы с графиками (ggplot2) и визуализируются данные об объеме двигателя автомобиля, в литрах (displ) в зависимости от топливной экономичности автомобиля на шоссе, в милях на галлон (hwy) из предустановленной базы автомобильных производителей (mpg) выделив цветом автомобили разных классов (class).
В соответствующей главе разберем аналогичный пример на педагогических данных подробнее.
Также потребуется установить некоторые дополнительные пакеты R. Пакет R представляет собой набор функций, данных и документацию, что расширяет возможности базовой установки. Использование пакетов является ключевым для успешного использования R. большинство пакетов, которые используются в этой книге есть часть так называемого коллекции пакетов Tidyverse. Пакеты Tidyverse разделяют общую философию программирования и данных в R, а также предназначены для совместной работы. Вы можете установить полный комплект Tidyverse одной строкой кода:
install.packages("tidyverse")
На компьютере введите эту строку в поле консоли, а затем нажмите клавишу Enter, чтобы запустить её. R загрузит приложение пакеты с серверов CRAN и установит их на компьютер. Если возникнут проблемы при установке, убедитесь, что есть подключение к интернет, и что https://cloud.r-project.org/ не блокируется с помощью брандмауэра или на стороне прокси-сервера.
Вы не сможете использовать функции, данные и файлы справки из пакета, пока не подключите его с помощью команды library(). После установки пакета можете загрузить его библиотечной функцией:
library(tidyverse)
В логе консоли отобразится процесс загрузки необходимых пакетов, являющихся ядром tidyverse, потому что используются они практически в каждом анализе.
Пакеты tidyverse достаточно часто обновляются. Можете посмотреть, доступны ли обновления, и при необходимости установить их, запустив
tidyverse_update()
Есть много разных пакетов, которые не являются частью tidyverse, они либо решают задачи статистического анализа немного иначе, либо предназначены для использования других парадигм представления информации. Это не делает их лучше или хуже, они просто иные. По мере ознакомления с R, обязательно узнаете про новые пакеты и новые способы представления данных. В книге будем использовать как правило три вспомогательных пакета из-за ограничений tidyverse. Так как в них предоставлены данные о мировом развитии, рейсах авиакомпаний и бейсболе, то присутствуют некоторые сведения об успеваемости, развитии, различные оценки и тесты, поэтому мы будем использовать их для иллюстрации ключевых идей науки о педагогических данных.
Выше было показано несколько примеров выполнения кода на языке R. Код в книге выглядит так:
1 + 2
#[1] 3
Если запустите тот же код в своей локальной консоли, он будет выглядеть так:
> 1 + 2
[1] 3
Как видим, в консоли код вводится после приглашения, символа «>», его не будем дублировать в книге. Выходные же данные порой закомментированы с помощью «#»; а в консоли они появляется непосредственно после кода. Эти два различия означают, что если работаете с электронной версией книги, то сможете легко копировать код из книги и вставлять его в консоль. Кроме того, на протяжении всей книги будем пользоваться следующими договоренностями в тексте кода:
1) Функции находятся в шрифте кода и завершаются скобками, например sum().
2) Другие объекты R, например, данные или аргументы функции, записываются без скобок.
3) Если из контекста не ясно, какой объект из какого пакета, то будем использовать имя пакета, за которым следуют два двоеточия и имя объекта. Этими допущениями изобилует код R.
С другой стороны, эта книга не единственна в своём роде, есть много людей и онлайн-ресурсов, помогающих освоить R. Как только начнете применять техники, описанные в этой книге к вашим данным, наверняка возникнут вопросы, на которые здесь нет ответа. Приведём несколько советов, как получить помощь, чтобы продолжить обучение. Если не знаете, с чего начать, начните с Yandex. Как правило, добавления «R» к поисковому запросу достаточно, чтобы повысить релевантность поисковой выдачи: если поиск не удался, это часто означает, что нет доступных для R результатов, но Yandex особенно полезен для поиска сообщений об ошибках. Если же получаете сообщение об ошибке и Yandex понятия не имеет, что это значит, попробуйте погуглить. Скорее всего, кто-то ранее уже сталкивался с подобным, и обращался за помощью где-нибудь в интернете. Если сообщение об ошибке не отображается на русском, то в консоли введите
Sys.setenv(LANGUAGE = "ru")
и повторите запуск кода; с большей вероятностью найдете справку для сообщения об ошибке на русском языке. При этом, удастся избежать многих проблем совместимости кода, написанного членами международных исследовательских команд, если настроите RStudio через меню Tools/Global Options на использование UTF-8 в качестве кодировки по умолчанию, как это показано на следующей иллюстрации:
Если Yandex не помогает, то попробуйте ru.stackoverflow.com. Начните с того, чтобы потратить немного времени на поиск существующего ответа, в том числе по тэгу [R], чтобы ограничить ваш поиск вопросами и ответами, которые используют R. Если не нашли ничего полезного, то подготовьте краткий воспроизводящий ошибку пример. Удачный пример делает его более доступным для других людей, чтобы они смогли помочь вам, и часто искореняет проблему в процессе его подготовки.
Есть три вещи, которые нужно описать, чтобы сделать ваш пример воспроизводим другими: необходимые пакеты, используемые данные и код.
1) Пакеты должны загружаться в самом начале скрипта, чтобы можно было увидеть, какие из них понадобятся в примере. При этом, хорошо не лишним будет проверить, что используете последнюю версию каждого пакета; возможно, разработчики обнаружили ошибку ранее и она уже была исправлена с момента установки пакета. Для пакетов из комплекта tidyverse самый простой способ – запустить tidyverse_update().
2) Самый простой способ включить свои данные в вопрос, это использовать dput () при создании кода R. Например, чтобы воссоздать набор данных mtcars в R, достаточно выполнить следующее шаги:
а) Запустите dput (mtcars) в R
б) Скопируйте выходные данные
в) В демонстрационном скрипте введите mtcars<– и вставьте ранее скопированное. Попробуйте найти наименьшее подмножество ваших данных, которое приводит к появлению проблемы.
3) Потратьте немного времени на то, чтобы проверить, что ваш код легко читается другими участниками. Для этого: убедитесь, что использовали пространство и ваш имена переменных лаконичны, но информативны; используйте комментарии, чтобы указать, где именно возникла проблема; сделайте все возможное, чтобы удалить все, что не связано с демонстрируемой проблемой. Чем короче ваш код, тем проще его использовать, понять, и тем легче его исправить.
4) Закончите, проверив, что действительно сделали воспроизводимый пример путем запуска нового сеанса R, копирования и вставки своего скрипта внутрь.
В любом случае, необходимо потратить некоторое время на подготовку, чтобы можно было решать проблемы до их возникновения. Инвестирование времени в обучение R каждый день на долгосрочной перспективе окупится сторицей. Принимайте активное участие в обсуждениях перспективных проектов на блоге RStudio, там размещаются объявления о новых пакетах, публикуются новые возможности интегрированной среды разработки и разрабатываются индивидуальные курсы. Чтобы идти в ногу со временем и сообществом R в более широком смысле, рекомендуется чтение http://www.r-bloggers.com: оно объединяет более 700 блогов пользователей R со всего мира. Если являетесь активным участником социальной сети Twitter, то подпишитесь на обновления по хэштегу #rstats, так как Twitter является одним из ключевых инструментов, который используют разработчики на R. Эта книга не просто вольный пересказ новостей компании занимающейся активной разработкой R, а результат долгой и плодотворной самостоятельной работы. С публикациями автора, в которых оказались применены описываемые инструменты статистической обработки информации в педагогических, биологических и химических областях на базе научных и исследовательских лабораторий ОмГПУ, можно ознакомиться на сайте https://www.researchgate.net.