Здесь мы проверили — правда ли, что доля самцов достоверно от- личается от 50%?
Достоверность линейной связи между параметрическими данными
(корреляционный тест Пирсона):
> cor.test(data$VES, data$ROST, method="pearson")
... и между непараметрическими (корреляционный тест Спирмена):
> cor.test(data$VES, data$ROST, method="spearman")
Дисперсионный анализ при помощи линейной модели:
> anova(lm(data$ROST
data$POL))
Заканчиваем...
Сохраняем историю команд через меню или при помощи команды
> savehistory("zhuki.r")
Все введенные вами команды сохранятся в файл с расширением *.r,
который можно открыть в любом текстовом редакторе и исправлять,
дополнять или копировать в строку ввода программы в следующий раз.
Этот файл можно выполнить целиком (запустить), для этого использу- ется команда source("zhuki.r"). Более того, можно запустить данный файл, не заходя в R,— для этого в командной строке надо набрать
$ Rscript zhuki.r
Внимание! Всегда сохраняйте то, что вы делали в R!
Выходим из программы через меню или с помощью команды q("no").
Приложение Б
Графический интерфейс (GUI) для R
Прежде чем начать рассказ о GUI, хотелось бы сказать пару слов в пользу консольного интерфейса. Анализ данных — это творческий про- цесс, и ничто не продвигает его лучше, чем неспешный ввод с клавиату- ры. Естественно, этому занятию должен предшествовать интервал вре- мени, целиком и полностью посвященный чтению документации, книг и статей по тематике проблемы. Меню и кнопки отвлекают, создавая иллюзию простоты творческого процесса,
требуя нажать их немедлен- но и посмотреть, что получится. Как правило, не получается ничего, то есть все равно приходится брать в руки книгу и думать.
Консольный интерфейс в R идеален. Он предоставляет пользовате- лю историю команд, дополнение по Tab (то есть выдает при нажатии на эту клавишу список возможных продолжений команд, объектов и даже имен файлов), сохраняет информацию и объекты между сессия- ми (если пользователь этого захочет, естественно). Нужно поработать на удаленном компьютере? С консолью нет никаких проблем. А если воспользоваться программой screen, то можно не бояться разорванных сессий и случайно закрытых терминалов.
К счастью, практически все графические оболочки для R учиты- вают это и, как правило, «расширяют» базовые возможности пакета такими дополнениями, как интегрированный редактор кода с подсвет- кой, отладчик, редактор массивов данных и т. п.
Б.1. R Сommander
R
Сommander, или Rcmdr (рис. 64),— кросс-платформенный графи- ческий интерфейс к R, написанный на Tcl/Tk. Его домашнюю стра- ницу можно найти по адресу http://socserv.mcmaster.ca/jfox/Misc/
Rcmdr/
Автор R Commander Джон Фокс (John Fox) признается, что в случае программ для статистического анализа он не является фанатом интер- фейса, состоящего из меню и диалогов. С его точки зрения, R Comman- der полезен в основном для образовательных целей при введении в R,
а также в отдельных, очень редких случаях — для быстрого анализа.
210
Графический интерфейс (GUI) для R
Рис. 64. Окно R Сommander
Одной из основополагающих целей, преследуемых при создании интер- фейса R Commander, был мягкий перевод пользователя в консоль, где можно автоматизировать свои действия более глобально.
Пакет распространяется под лицензией GPLv2, и поэтому доступен во всех стандартных дистрибутивах Linux. Например, для установки в
Debian/Ubuntu достаточно выполнить команду:
$ sudo aptitude install r-cran-rcmdr
Пакет присутствует также и на CRAN, поэтому его установку можно произвести и собственными силами R:
> install.packages("Rcmdr", dependencies=TRUE)
Обратите внимание на значение опции dependencies: R Commander зависит от довольно большого числа пакетов. После установки в сессии
R
следует выполнить команду
> library(Rcmdr)
При запуске R Commander открывается снабженное довольно «раз- весистым» меню окно, разделенное на Окно скриптов (Script Win- dow), Окно вывода (Output Window), а также информационное ок- но Сообщения (Messages). Многие действия в R Commander можно выполнять через меню,
которое достаточно легко настраивается, на- пример с помощью редактирования текстового файла Rcmdr-menus.txt.
В Окне скриптов можно вводить команды, то есть консоль никуда не
RStudio
211
делась. Графики появляются в отдельных окнах, как и в случае «чис- того» R.
R
Commander имеет русский перевод, который активизируется ав- томатически, если система русифицирована.
Основная проблема русифицированного R Commander (если вы работаете в Linux) — это кириллические шрифты, которые выбраны по умолчанию.
Поэтому если вы предпочитаете русский интерфейс, то перед загрузкой R
Commander ему с помощью команды options следует передать примерно сле- дующее:
> options(Rcmdr=list(default.font=
"-rfx-fixed-medium-r-normal-*-20*", suppress.X11.warnings=TRUE))
Растровый шрифт семейства rfx от Дмитрия Болховитянова (20 в конце строки — это размер по умолчанию), установленный в качестве default.font,
находится обычно в составе пакета xfonts-bolkhov вашего дистрибутива Lin- ux. Второй параметр, suppress.X11.warnings, подавляет надоедливые сооб- щения при создании новых графических окон.
Выйти из R Commander можно через меню Файл -> Выйти, при этом можно одновременно закрыть и сессию R. Если же сессия R осталась открытой, то повторный запуск R Commander выполняется с помощью команды
> Commander()
Для вводного ознакомления с возможностями R Commander следует прочитать текст Getting-Started-with-the-Rcmdr.pdf, получить до- ступ к которому можно через меню Помощь -> Введение в R Commander.
Если по какой-то причине было принято решение анализировать данные исключительно с помощью R Commander, то можно сделать так, чтобы при запуске R эта графическая оболочка загружалась авто- матически. Для этого в файл пользовательских настроек /.Rprofile достаточно добавить следующие строки:
old <- getOption("defaultPackages")
options(defaultPackages = c(old, "Rcmdr"))
Глобальная переменная defaultPackages содержит информацию о модулях, автоматически загружаемых при старте R.
Б.2. RStudio
RStudio (http://www.rstudio.com/ide/) — это относительно новая оболочка для R, доступная под свободной лицензией. Среда работает
212
Графический интерфейс (GUI) для R
под основными операционными системами (Windows, Linux, Mac OS
X), и, кроме этого, предоставляет доступ к R через Web-интерфейс.
После запуска появляется окно (рис. 65), удобно разделенное на несколько частей: исходный код редактируемого файла, консоль, содер-
жимое рабочего пространства, история команд, и часть, предоставля- ющая доступ к списку пакетов, рисунков и файлов в текущем рабочем каталоге и справке (содержимое отдельных частей окна можно поме- нять через меню Tools -> Options -> Pane Layout).
Рис. 65. Окно RStudio
В качестве отдельных преимуществ оболочки следует отметить ре- дактор кода с автоматической подсветкой, автодополнением, простей- шими преобразования кода (например, выделение нескольких строк в отдельную функцию), поддержку редактирования не только R кода, но и документов Sweave.
Авторы среды пошли немного дальше простого предоставления функ- ций R из-под оболочки: в комплекте с RStudio поставляется пакет manipu- late
, позволяющий интерактивно менять параметры графиков внутри среды (рис. 66). Так, например, следующий код
> library(manipulate)
> manipulate(plot(cars, xlim = c(0, x.max), type = type,
+ ann = label),
+ x.max = slider(10, 25, step=5, initial = 25),
+ type = picker("Points" = "p", "Line" = "l", "Step" = "s"),
+ label = checkbox(TRUE, "Draw Labels"))
RKWard
213
выведет окно настроек, позволяющее менять значение переменных x.max
, type и label и при этом сразу же видеть результат такого изме- нения на графике.
Б.3. RKWard
RKWard (http://rkward.sourceforge.net) — это довольно удоб- ный, основанный на KDE интерфейс к R (рис. 67). Разработчики RK-
Ward старались совместить мощь R с простотой использования, подоб- ной предоставляемой коммерческими статистическими пакетами (таки- ми, как SPSS или STATISTICA).
Для начинающих пользователей RKWard предоставляет широкие возможности по выбору многих стандартных процедур статистическо- го анализа по принципу «выдели и щелкни»: достаточно активировать соответствующий пункт меню.
Для продвинутого пользователя RKWard предлагает удобный ре- дактор кода с подсветкой, автоматической расстановкой отступов, ав- тодополнением — теми вещами, без которых в настоящее время не об- ходится ни одна среда программирования. Привычная консоль R также наличествует, она доступна в любое время на вкладке R Console.
Авторы RKWard взяли курс на как можно более полную интегра- цию функций R в графическую среду: присутствует браузер текуще- го окружения
(environment) и редактор данных. Есть менеджер пакетов
, умеющий не только устанавливать их, но и следить за обнов- лениями; обеспечивается прозрачная интеграция со справочной систе- мой. Кроме того, RKWard умеет перехватывать создание графических окон и добавлять к ним очень удобные функции типа сохранения со-
держимого в файл одного из стандартных форматов, поддерживаемых
R
(PDF, EPS, JPEG, PNG).
Интерфейс RKWard чрезвычайно гибок: пользователь может рас- ширять его за счет написания собственных модулей (кстати, все встро- енные средства анализа, доступные сразу же после запуска из меню,—
это такие же модули, но только созданные авторами RKWard).
Б.4. Revolution-R
Ключевые особенности Revolution-R (его домашняя страница — http:
//www.revolutionanalytics.com
) — это, разумеется, графический ин- терфейс (рис. 68), полная интеграция с Microsoft Visual Studio, наличие полноценного пошагового отладчика и оптимизированных подпрограмм математических функций BLAS и LAPACK, позволяющих автоматически использовать преимущества многопроцессорных систем.
214
Графический интерфейс (GUI) для R
Рис. 66. Вот так в RStudio работает пакет manipulate
Revolution-R
215
Рис. 67. Окно RKWard
Как читатель уже понял, основная платформа, на которую «наце- ливается» Revolution-R, — это Windows. Версия под Linux тоже сущест- вует, но пошаговый отладчик в комплекте отсутствует, что сразу же снижает ценность пакета.
Revolution-R существует в двух редакциях: бесплатной Community
Edition и очень платной Enterprise Edition (цена на последнюю начи- нается с $1000 за рабочее место). Главное отличие бесплатной версии заключается в отсутствии какой-либо интеграции с Visual Studio (а,
следовательно, и в отсутствии отладчика). Впрочем, оптимизирован- ные математические подпрограммы доступны всюду, поэтому получать преимущества от многопроцессорных вычислений можно совершенно бесплатно.
Стоит отметить, что существует программа по предоставлению бес- платных лицензий (но без технической поддержки) на Enterprise ре- дакцию при условии использования для научных исследований. Для получения такой лицензии на веб-сайте программы следует отправить запрос с использованием «академического» (например, университетско- го) адреса электронной почты.
216
Графический интерфейс (GUI) для R
Рис. 68. Окно Revolution-R
Б.5. JGR
Предпочитаете, чтобы графический интерфейс отрисовывался сред- ствами Java (рис. 69)? Тогда JGR (Java GUI для R) — это то, что вы искали. JGR (произносится как «ягуар») был впервые представлен пуб- лике в 2004 году, но развивается и поддерживается до сих пор. Пакет
JGR распространяется под открытой лицензией GPLv2, и его домашняя страница доступна по адресу http://jgr.markushelbig.org/JGR.html.
JGR создавался для Mac OS X «со всеми вытекающими», но под
Windows и Linux он тоже работает. Для использования JGR под Linux необходимо инсталлировать Sun Java Development Kit (JDK):
$ apt-get install sun-java6-jdk
$ sudo update-java-alternatives -s java-6-sun
$ sudo R CMD javareconf
После установки и настройки Java-окружения следует запустить сес- сию R и выполнить следующие действия:
> install.packages(’JGR’)
> library(JGR)
> JGR()
Starting JGR run script. ...
Готово — JGR запущен.
Rattle
217
Рис. 69. Окно JGR
В JGR есть встроенный текстовый редактор, в нем есть подсветка синтаксиса и Tab-завершение команд. Есть и гипертекстовая помощь,
простенькая электронная таблица,
возможность управлять объектами,
в том числе и с помощью мыши, имеется и графический интерфейс для установки и загрузки R-пакетов. С учетом того, что этот GUI может работать везде, где есть Java, на него стоит обратить внимание.
Б.6. Rattle
Rattle (http://rattle.togaware.com) — сокращение, обозначающее
«R Analytical Tool To Learn Easily» (легкая в освоении среда анализа
R
). Программа активно развивается. Rattle — это среда для «разгляды- вания» данных человеком (рис. 70), она предназначена для интеллек- туального анализа данных (data mining), иными словами, для выявле- ния скрытых закономерностей или взаимосвязей между переменными в больших массивах необработанных данных.
Для установки Rattle под Linux необходимо наличие пакетов ggobi
(программа визуализации данных) и libglade2-dev:
$ apt-get install ggobi libglade2-dev
После этого в консоли R следует выполнить команду
> install.packages("rattle", dependencies=TRUE)
218
Графический интерфейс (GUI) для R
Рис. 70. Стартовое окно Rattle и откинуться на спинку кресла. Из-за большого количества зависи- мостей установка занимает много времени.
Запуск GUI производится как обычно:
> library(rattle)
> rattle()
Б.7. rpanel
Пакет rpanel — это простая и одновременно высокоуровневая над- стройка над R, написанная в том числе на языке Tcl/Tk. Это не GUI
в строгом смысле слова, а скорее средство (toolkit) для того, чтобы самостоятельно создать простые GUI, которые потом можно исполь- зовать для множества целей. Самое, наверное, важное преимущество rpanel
— вы можете сделать графическое приложение под конкретную задачу всего за несколько минут!
Если пакет rpanel отсутствует в системе, то надо его скачать и уста- новить с помощью команды install.packages("rpanel"). После этого можно загрузить саму библиотеку:
> library(rpanel)
rpanel
219
Логика использования пакета довольно проста:
1. С помощью функции rp.control нужно создать объект panel и объявить в нем нужные нам переменные.
2. Далее необходимо «населить» объект rpanel различными элемен- тами графического интерфейса (ползунками, кнопками, картин- ками и т. д.) и связанными с ними переменными.
3. В самом конце требуется определить функцию, которая будет вы- полняться в ответ на взаимодействие пользователя с графическим интерфейсом.
Разберем простейший пример, в котором функция выводит на экран одно из двух: или гистограмму полученных данных, или «ящик-с-усами»
(боксплот) в зависимости от выбранного значения в элементе rp.radio- group
(рис. 71).
Объявим объект panel и данные, которые будем отображать:
> panel <- rp.control(x=rnorm(50))
Теперь поместим в panel переключатель rp.radiogroup и свяжем его с переменной plot.type и с функцией hist.or.boxp:
> rp.radiogroup(panel,
# сам объект
+
plot.type,
# переменная
+
c("histogram", "boxplot"), # значения переключателя
+
title="Plot type",
# название переключателя
+
action=hist.or.boxp)
# пользовательская функция
В
заключение объявим функцию, которая будет выполняться в от- вет на взаимодействие с переключателем:
> hist.or.boxp <- function(panel) {
+
if (panel$plot.type == "histogram")
+
hist(panel$x)
+
else
+
boxplot(panel$x)
+
panel
+ }
Теперь все готово. У нас есть готовая панель с переключателем, ко- торый в зависимости от выбора покажет либо гистограмму, либо бокс- плот.
220
Графический интерфейс (GUI) для R
Рис. 71. Пример простого переключателя
Б.8. ESS и другие IDE
Теперь поговорим не о GUI в узком смысле слова, а о так называе- мых средствах разработки, IDE (integrated desktop environments), под которыми обычно понимаются сильно расширенные текстовые редак- торы со встроенными средствами компиляции, анализа исходного кода и т. д.
Тут прежде всего надо вспомнить ESS (http://ess.r-project.org).
ESS — это специализированная интерактивная среда или мода для ре- дактора Emacs. ESS является сокращением от фразы «Emacs Speaks
Statistics», которую можно перевести как «Emacs говорит на языке ста- тистики». Пакет ESS поддерживает не только систему статистического анализа R, но и многие другие статистические среды. При установке па- кета ESS (так, как это принято в вашейсистеме) и добавлении строчки для инициализации ESS в /.emacs
(require ’ess-site)
редактору Emacs становятся доступны две дополнительные моды:
• Мода ESS, которая предназначена для редактирования исход- ных файлов с использованием команд R (включая дополнитель- ную поддержку для редактирования Rnw-файлов), и
ESS и другие IDE
221
• Мода iESS — замена обычной R-консоли.
Интерпретатор R запускается с помощью команды «R»: Alt+X, а затем R и Enter. При старте спрашивается о местоположении рабочей директории для открываемой сессии R, а затем отображается стандарт- ное R-приглашение. Можно параллельно запустить насколько сессий, а также задействовать удаленный компьютер (команда ess-remote). Ра- бота в этой моде почти ничем не отличается от консоли, за исключением наличия стандартных возможностей редактирования текста в Emacs и дополнительного вспомогательного меню iESS. Из него можно полу- чить доступ к таким интересным возможностям, как, например, редак- тирование объектов R. Emacs — это прежде всего текстовый редактор,
поэтому подобные особенности делают анализ данных комфортнее.
ESS-мода инициализируется автоматически при загрузке файлов с расширением R. Emacs предоставляет
пользователю подсветку синтак- сиса, выравнивание исходного кода по нажатии Tab, выполнение от- дельных строк, фрагментов и всего файла в интерпретаторе R. До- полнительное меню ESS позволяет получить доступ ко всем этим воз- можностям. Редактирование Rnw-файлов (смесь L
A
TEX- и R-команд для быстрого составления отчетов с помощью Sweave) чуть более мудре- ное: мода ESS активируется, только когда курсор оказывается внутри фрагментов с R-командами.