Историческая хронология с языком R. Часть I Обучение программированию для датировки событий
Историческая хронология с языком R. Часть I Обучение программированию для датировки событий

Полная версия

Историческая хронология с языком R. Часть I Обучение программированию для датировки событий

Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
2 из 5

Весьма подробный материал по хронологии древнеегипетской истории, начиная с 4 тыс. до н.э. и до эллинистического периода, можно найти в «Хронологии Древнего Египта», изданной в 2006 г. – Ancient Egyptian Chronology. Series: Handbook of Oriental Studies. Section 1 The Near and Middle East, Vol: 83. Editors: Erik Hornung, Rolf Krauss, and David A. Warburton, Leiden-Boston, 2006.

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

§3.Знакомство с языком и установка последней версии R и RStudio

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

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

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

В этом случае в его распоряжении будет на порядок большее количество прикладных пакетов, которых можно использовать для самых разнообразных целей. Так, на конец сентября 2026 г. в Полном сетевом архиве CRAN находилось 25258 доступных для пользователей пакетов. Причем, с каждым днем их количество растет.

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

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

Занятие № 1.1. «Учимся устанавливать и запускать среду для работы с R»

Прежде чем начать пользоваться языком R для расчетов нам нужно сначала загрузить его последнюю версию. Все необходимые установочные файлы и нужную информацию можно найти на одном из сайтов CRAN. С этой целью нужно пройтись по ссылке – https://cran.r-project.org/, где пользователи операционных систем Linux, Mac OS X и Windows должны выбрать свои опции: Download R for Linux, Download R for (Mac) OS X и Download R for Windows.

Заметим, что зачастую у пользователей Linux установочный файл с R уже входит в базовый дистрибутив, а потому его не нужно скачивать. Если же его нет, то пользователи, как Linux, так и Mac OS X при установке R должны сначала выбрать уже упомянутые выше опции, соответственно, Download R for Linux или Download R for (Mac) OS X, а затем внимательно следовать подробным инструкциям, которые даются на портале https://cran.r-project.org/.

Пользователи Windows при установке R должны воспользоваться следующими опциями: сначала пройтись по ссылке Download R for Windows, затем щелкнуть по ссылке base и, наконец, по ссылке – Download R-4.6.1 for Windows (88 megabytes, 64 bit), то есть загрузить последнюю версию языка (в тот момент, когда пишутся эти строки, последней версией была R 4.6.1). Даже неопытный пользователь Windows легко справится с инсталляцией R, если он при этом будет использовать уже установленные по умолчанию опции и щелкать опцию Next (Следующий) до завершения этого процесса.

При этом 32-битовую версию R, как правило, рекомендуют устанавливать в том случае, если пользователь работает на 32-битовой операционной системе Windows, а обе версии – на 64-битовой. Хотя 32-битовая версия иногда работает быстрее 64-битовой, но последняя необходима пользователю в том случае, если ему требуется больший объем оперативной памяти. Если у Вас относительно современный компьютер с оперативной памятью 4 Гб или более – смело ставьте 64-битную версию. Если оперативной памяти у Вашего компьютера менее 4 Гб и ее Вы не планируете расширять – ставьте 32-бита.

Язык R имеет встроенную стандартную среду разработки – RGui (Graphic User Interface – графический пользовательский интерфейс), используемую для ввода и редактирования программного кода. Эта среда разработки имеет вид командной строки в окне, называемом консолью. Командная строка работает по принципу «вопрос-ответ».

Помимо встроенной среды разработки RGui для языка R создано еще ряд других, зачастую, более совершенных ее аналогов, одни из которых находятся в свободном доступе, а другие платные. В этой книге мы будем использовать для наших расчетов интегрированную бесплатную среду разработки – RStudio, имеющую более удобный интерфейс, что существенно упрощает работу с R. Облегчает работу пользователя также и наличие в RStudio цветовой подсветки, автоматической подсказки при написании кода и удобной навигации по скрипту. Серьезным плюсом RStudio является также и ее совместимость с основными операционными системами – Windows, Linux, Mac OS X.

RStudio – это среда разработки для R, появившаяся в декабре 2010 года. Она доступна в двух версиях: 1. RStudio Desktop, в которой программа выполняется на локальном компьютере как обычное приложение; и 2. RStudio Server, в которой предоставляется доступ через браузер к RStudio, установленной на удаленном Linux-сервере. Бесплатную версию RStudio можно загрузить по следующей ссылке – https://www.rstudio.com/products/rstudio/download/.

Установив последнюю версию языка R и среды RStudio, можно приступать к работе. Если вы используете Windows, запустите R из стартового меню. Для этого нужно два раза щелкнуть левой кнопкой мышки по иконке RStudio, которая находится в меню «Пуск» в перечне программ, установленных на Вашем компьютере. Для большего удобства иконку RStudio лучше прикрепить к панели задач компьютера, что ускорит начало работы. Если вы используете операционную систему Mac дважды щелкните на значок R в директории приложений. В Linux наберите «R» в командной строке терминала.

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

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

2. В левом нижнем окне пользователь увидит консоль (Console), выполняющую команды, введенные редактором кода. Именно здесь ведется интерактивная работа с языком R.

3. В правом верхнем окне находится рабочее окружение (Environment) и история команд (History).

4. В правом нижнем окне: во-первых, появляются справки по той или иной команде R, т. е. здесь можно получить помощь (Help); во-вторых, есть доступ к списку загруженных программных пакетов (Packages), графиков (Plots) и файлов (Files); в-третьих, здесь появляется графический результат выполнения команд в консоли.

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




Рис. 1.1. Схема рабочего пространства RStudio

Источник: выполнено в Paint.NET по скриншоту RStudio


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

Задание к занятию № 1.1

1. По какой ссылке нужно пройтись, чтобы найти необходимые установочные файлы и нужную информацию по загрузке и установке R? Дайте характеристику RGui и RStudio.

2. Сколько окон появляется при открытии рабочего пространства RStudio? Назовите их.

3. В каком окне появляется редактор кода, какие функции он выполняет?

4. В каком окне появляется консоль, какие функции она выполняет?

5. Назовите, остальные окна, где они находятся и какие функции выполняет?

Ответы к занятию № 1.1:

1. Чтобы найти необходимые установочные файлы и нужную информацию по загрузке и установке языка R надо пройтись по ссылке: https://cran.r-project.org/. Язык R имеет встроенную стандартную среду разработки – RGui, используемую для ввода и редактирования программного кода. RStudio – интегрированная бесплатная среда разработки, имеющая более удобный интерфейс, что существенно упрощает работу с R.

2. При открытии рабочего пространства RStudio появляется четыре окна: 1. редактор кода, 2. консоль, 3. рабочее окружение (Environment) и история команд (History) и 4. окно для справок, получения помощи, доступа к списку загруженных программных пакетов (Packages), графиков (Plots) и файлов (Files), здесь также появляется графический результат выполнения команд в консоли.

3. В левом верхнем окне рабочего пространства находится редактор кода (Code), в котором пишется, вводится и сохраняется программный код.

4. В левом нижнем окне пользователь увидит консоль (Console), выполняющую команды, введенные редактором кода.

5. Еще два окна рабочего пространства RStudio. В правом верхнем окне находится рабочее окружение (Environment) и история команд (History). В правом нижнем окне: во-первых, появляются справки по той или иной команде R, т. е. здесь можно получить помощь (Help); во-вторых, есть доступ к списку загруженных программных пакетов (Packages), графиков (Plots) и файлов (Files); в-третьих, здесь появляется графический результат выполнения команд в консоли.

Занятие № 1.2. «Знакомимся с демоверсиями R»

После того как рабочее пространство RStudio загрузится, слева в нижней части ее окна, то есть в консоли, появится символ с курсором «> |» (см. рис. 1.1). Это означает, что RStudio в данный момент не занята и ожидает ввода новых команд.

Сразу после загрузки в консоли RStudio появится следующий текст: «R -- это свободное ПО… Введите 'demo()' для запуска демонстрационных программ, 'help()' – для получения справки, 'help.start()' -- для доступа к справке через браузер. Введите 'q()', чтобы выйти из R».

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

Например, в упомянутом выше тексте, который появился в консоли, команда help() по-русски может быть переведена как помощь(), а команда q()=выйти(), т.к. буква q – сокращение от слова quit, имеющего значение «уходить, покидать».

Давайте, попробуем ввести команду help.start(), которую по-русски можно перевести как помощь.старт(), то есть означает помощь для тех, кто только начинает работать с языком.

Прежде чем вводить команду help.start() убедитесь, что в консоли (см. левое нижнее окно на рис. 1.1) RStudio появится символ с курсором > |, означающий, что студия ждет указаний от пользователя.

Вводить команду можно трояким способом:

1. Написать команду help.start() в консоли RStudio, а потом на клавиатуре компьютера нажать на клавиатуре кнопку Enter Ввод ().

2. Написать команду help.start() в редакторе кода, (см. левое верхнее окно на рис. 1.1), подвести к этой команде курсор, а потом нажать на клавиатуре одновременно кнопки Ctrl и Ввод(Enter).

3. Написать команду help.start() в редакторе кода, выделить ее мышкой, потом в самом верху редактора нужно щелкнуть по иконке с надписью Code (Код), а затем левой кнопкой мышки щелкнуть по опции Running Selected Line(s) (Ввести выделенные строки).

В результате в нижнем правом окне RStudio появится гиперссылки на обучающие материалы, помогающие работе с языком R. Среди них я бы посоветовал вам обратить особое внимание на ссылку: An Introduction to R (Введение в язык программирования R). Щелкните эту гиперссылку, а затем внимательно прочитайте появившийся текст. Если вы не знаете английского, то скопируйте текст и с помощью Яндекса.Переводчик или Google.Переводчик переведите.

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

demo()

В результате в редакторе кода откроется дополнительное окно с надписью R demos (R демоверсии) с перечнем различных демоверсий. В этом перечне будет четыре заголовка, в самом верху: Demos in package ‘base’ (Демоверсии в пакете ‘base’, т. е. в базовом пакете); ниже следуют: Demos in package ‘graphics’(Демоверсии в пакете ‘graphics’, т.е. в пакете графика); далее: Demos in package ‘grDevices’ (Демоверсии в пакете ‘grDevices’, т.е. в пакете графических устройств) и еще ниже: Demos in package ‘stats’(Демоверсии в пакете ‘stats’, т. е. в пакете статистика).

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

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

Для этого введем команду demo(graphics), что по-русски означает демонстрация(графика).

В результате в консоли появится следующая надпись: > demo(graphics)

(вводить в редакторе нужно строки кода без значка >):

demo(graphics)

---- ~~~~~~~~

Type to start (напишите Return (ответ), чтобы начать):

Return

Можно вести в консоли команду Return, затем нажать кнопку Enter (Ввод), а можно самому Return не вводить, просто щелкнуть мышкой в консоли рядом с этой надписью, а затем нажать Enter (Ввод).

Потом будет несколько раз появляться надпись: «Нажмите <Ввод>, чтобы увидеть следующий график:». И каждый раз нужно будет нажимать Enter. А справа в нижней части окна интерфейса RStudio будут появляться различные примеры с графиками. В общей сложности приводится 11 таких графиков.

Чтобы сохранить понравившийся вам график достаточно щелкнуть по нему правой кнопкой мышки. Потом выбрать из появившегося в самом верху списка опций: Save image as... (Сохранить рисунок как…), либо Copy image (Скопировать рисунок).

В первом случае этот рисунок можно под определенным именем сохранить в виде файла в своей рабочей папке. А во втором случае – вставить, например, в документ Word, с которым мы работаем, либо в программу paint.net, где этот рисунок можно отредактировать, и т. д.

Но поскольку нас интересует историческая хронология, то автор этих строк предлагает читателям познакомиться с графиком «Дни недели и Луны в августе 79 г.», который позволит нам узнать, в какой день недели и день лунного месяца погибли римские Помпеи. Согласно общепринятой датировке это случилось 24 августа 79 г. С учетом того, что 1 августа 79 г. было воскресеньем (7-ым днем недели) и 16-ым днем Луны (при счете от конъюнкции, то есть невидимой фазы новолуния=17 июля ) автор этих строк построил два графика: лунного цикла (точек в виде Луны), изменяющегося в пределах от 1 до 30 дней, и недельного цикла, изменяющегося в пределах от 1 до 7 дней (от понедельника до воскресенья).

Проведем к этим двум графикам перпендикуляр от точки «24 августа 79 г.», расположенной на оси Х (День месяца), который пересечет график цикла Луны в точке=10, а график недельного цикла в точке =2. (Считаем число точек снизу вверх – от 0 и до их пересечения). Для наглядности в эти точки пересечения проведены также и перпендикуляры от оси Y - см. рис. 1.2.

Следовательно, римские Помпеи погибли в 10-й день нового лунного месяца (начался в день конъюнкции 15 августа) и во 2-й день недели, то есть во вторник. Таки образом один и тот же день в данном случае у нас имеет три порядковой нумерации: 1) по его позиции в августе месяце по ЮК; 2) по его месту в лунном цикле; 3) и в недельном цикле. Благодаря таким характеристикам временного ряда исследователям удается решать многие хронологические загадки прошлого.




Рис. 1.2. Недельный и лунный цикл в день гибели римских Помпей

Источник: выполнено в RStudio по расчетам автора


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

Задание к занятию № 1.2

1. Можно ли вводить в редакторе строки кода со значком >? Какую команду нужно ввести в редакторе кода, чтобы познакомиться со списком демоверсий языка R. Где появляется этот список? Введите эту команду, а затем ответьте, сколько пакетов и демоверсий в этом списке, а также сколько демоверсий в каждом пакете?

2. Какую команду нужно ввести в редакторе кода, которая позволит вам познакомиться с демоверсией image. Из какого пакета эта демоверсия? Какие ею демонстрируются объекты?

3. Какую команду нужно ввести в редакторе кода, чтобы познакомиться с демоверсией Japanese. Из какого пакета эта демоверсия? Какие ею демонстрируются объекты?

4. Какую команду нужно ввести в редакторе кода, чтобы познакомиться с демоверсией hclColors. Из какого пакета эта демоверсия? Какие ею демонстрируются объекты?

5. Какую команду нужно ввести в редакторе кода, чтобы познакомиться с демоверсией persp. Из какого пакета эта демоверсия? Какие ею демонстрируются объекты?

6. Найдите на рис. 1.2. на оси Х (Дни месяца по ЮК) точки, обозначающие: 5, 10, 15, 20 и 31 августа 79 г. Проведите от каждой из них воображаемый перпендикуляр к графикам лунного и недельного циклов и ответьте на вопрос: какой день лунного месяца и недели соответствует каждому из перечисленных дней августа 79 г. (чтобы ответить, посчитайте число точек на графиках лунного и недельного цикла)?

7. В предыдущем задании отсчет дней лунного цикла ведется от дня астрономического новолуния (конъюнкции), когда Луна еще невидима. Такой счет возможен, если применяется арифметический лунный календарь, в которых начало месяца определяется путем счета, а не наблюдения за появлением новой Луны. Судя по дошедшим из Помпей граффити, такого рода счет применялся и жителями этого города [См. Graffito CIL IV 4182//An Introduction to Wall Inscriptions From Pompeii and Herculaneum by Rex E. Wallace, 2005, p.67 ]. Но в древности начало нового месяца часто определялось по неомении, то есть 1-й вечерней видимости молодого месяца. Если предположить, что из-за погодных условий неомения наблюдалась 17 августа 79 г., ответьте на вопрос: какой день лунного месяца соответствует 15, 20, 24 и 30 августа 79 г.

Ответы к занятию № 1.2:

1. Нет, так как это приведет к ошибке, а значок > появиться в консоли после ввода в редакторе кода. Список с демоверсиями появляется в дополнительном окне, которое открывается в редакторе кода. Пакеты: base – 4 демоверсии; graphics – 6 демоверсий; grDevices – 2 демоверсии; stats – 4 демоверсии.

2. Команда demo(image). Демоверсия image из пакета graphics. Демоверсия показывает топографические карты вулкана Маунгафау (Окленд, Новая Зеландия), насыщенность цветовой окраски которых зависит от изображаемой высоты.

3. Команда demo(Japanese). Демоверсия Japanese из пакета graphics. Демоверсия показывает таблицы с тремя основными системами японского письма: хираганы, катаканы и кандзи.

4. Команда demo(hclColors). Демоверсия hclColors из пакета grDevices. Демоверсия показывает трехмерные цветовые модели типа HCL (Hue - Chroma - Luminance).

5. Команда demo(persp). Демоверсия persp из пакета graphics. Демоверсия показывает: во-первых, различные этапы построения цветного трехмерного графика на основе математической формулы; во-вторых, различные этапы построения цветной трехмерной карты вулкана Маунгафау, расположенного в Окленде (Новая Зеландия).

6. Подсчеты по графику на рис. 1.2., дают следующие результаты: 5, 10, 15, 20 и 31 августа 79 г. соответствуют 20, 25, 1, 6, 11 и 17 дни лунного цикла и 4, 2, 7, 5, 3 и 2 дни недельного цикла.

7. Если предположить, что из-за погодных условий неомения наблюдалась 17 августа 79 г., то 15, 20, 24 и 30 августа 79 г. были, соответственно, 28-м днем прошлого лунного месяца, а остальные – 4-м, 8-м и 14-м днями нового лунного месяца.

Занятие. 1.3. «Как писать код, начинать и завершать работу с языком R»

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

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

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

Векторы – это одномерные массивы данных, которые по своему типу могут быть числовыми (numeric), текстовыми (character), логическими (logical) и комплексными (complex). Элементы в рамках одного вектора могут быть только одного типа, то есть только числовыми, только текстовыми, только логическими (последние содержат значения TRUE или FALSE, т.е. ИСТИНА или ЛОЖЬ) или только комплексными (содержат мнимое число), но различные векторы могут иметь данные различных типов.

С целью первого знакомства с языком R давайте поработаем с текстовыми векторами. Предположим мы хотим построить предложение из двух словосочетаний: «Геродот из Галикарнаса» и «отец истории», взяв их в качестве векторов, состоящих из единичного текстового элемента.

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

А<-'Геродот из Галикарнаса'; Б<-"отец истории"

Здесь кириллические буквы А и Б обозначают имена введенных словосочетаний, а оператор <- знак их присвоения. То есть имена этим словосочетаниям можно было бы присвоить и по-другому: А =‘Геродот из Галикарнаса’ и Б="отец истории". Иногда в R так и делается, но мы будем использовать для этих целей общепринятый символ <-.

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

На страницу:
2 из 5