
- •ПРЕДИСЛОВИЕ
- •1.ОСНОВНЫЕ КОМПОНЕНТЫ СТАТИСТИЧЕСКОЙ СРЕДЫ R
- •1.2.Работа с командной консолью интерфейса R
- •1.3.Работа с меню пакета R Commander
- •1.4.Объекты, пакеты, функции, устройства
- •2.ОПИСАНИЕ ЯЗЫКА R
- •2.3.Факторы
- •2.4.Списки и таблицы
- •2.5.Импортирование данных в R
- •2.6.Представление даты и времени; временные ряды
- •2.7.Организация вычислений: функции, ветвления, циклы
- •2.8.Векторизованные вычисления в R с использованием apply-функций
- •3.6.Категоризованные графики
- •4.ОПИСАТЕЛЬНАЯ СТАТИСТИКА И ПОДГОНКА РАСПРЕДЕЛЕНИЙ
- •4.2.Использование функций summary() и дополнительных пакетов
- •4.4.Заполнение пропущенных значений в таблицах данных
- •4.6.Законы распределения вероятностей, реализованные в R
- •5.КЛАССИЧЕСКИЕ МЕТОДЫ И КРИТЕРИИ СТАТИСТИКИ
- •5.1.Гипотеза о равенстве средних двух генеральных совокупностей
- •5.4.Гипотеза об однородности дисперсий
- •5.9.Оценка статистической мощности при сравнении долей
- •6.2.Линейные модели дисперсионного анализа
- •6.3.Структура модельных объектов дисперсионного анализа
- •6.4.Оценка адекватности модели дисперсионного анализа
- •6.8.Проблема множественных проверок статистических гипотез
- •7.4.Критерии выбора моделей оптимальной сложности
- •7.7.Процедуры диагностики моделей множественной регрессии
- •8.5.Ковариационный анализ
- •8.7.Индуктивные модели (метод группового учета аргументов)
- •9.2.Анализ пространственного размещения точек
- •9.4.Создание картограмм при помощи R
- •БИБЛИОГРАФИЯ И ИНТЕРНЕТ-РЕСУРСЫ
- •Основные литературные ссылки по тексту книги
- •Библиографический указатель литературы по использованию R
- •Основные Интернет-ресурсы
3.6.Категоризованные графики
Функция coplot(), входящая в базовую комплектацию R, предназначена для построения так называемых"conditioning plots", название которых можно перевести на русский язык как "категоризованные графики". Суть здесь сводится к тому, что анализируемые данные разбиваются на отдельные категории(например, в соответствии с уровнями какого-то фактора) и для каждой из них строится свой график(так называемая панель) определенного типа. Все эти графики затем объединяются на одном рисунке, что существенно облегчает выявление статистических закономерностей и структур в данных – подробности можно найти в книге (Cleveland, 1993).
Функция coplot() обладает большим количеством управляющих аргументов (см.
?coplot), основными из которых являются следующие:
°formula – формула, описывающая взаимодействие между анализируемыми переменными;
°data – таблица данных, содержащая значения переменных, указанных в formula;
°panel – функция, позволяющая задать тип и настроить внешний вид отдельных панелей категоризованного графика; по умолчанию эти панели представляют собой
диаграммы рассеяния (см. примеры ниже);
°rows и columns – панели категоризованного графика размещаются в виде матрицы
с количеством строк и столбцов, соответствующим значениям аргументовrows и columns; изменяя значения этих аргументов, можно упорядочить панели на графике необходимым образом;
°show.given – логическое значение (или вектор из двух логических значений в случае двух категориальных переменных, по которым разбиваются данные), позволяющее включать (TRUE) или отключать (FALSE) изображение "вывески" графика (см. ниже);
°number – количество интервалов, на которые разбиваются переменныеа и b в случаях, если эти переменные не являются факторами;
°overlap – число (< 1), определяющее область перекрытия между данными, которые группируются в соответствии с уровнями количественных переменныхa и b; если overlap < 0, соответствующая доля наблюдений на"стыках" групп не будет изображаться.
Формула вида y |
~ x | |
a показывает, что графики зависимости у от x должны |
быть построены для |
каждого |
уровня переменнойа. В свою очередь, формула вида |
y ~ x| a * b показывает, что графики зависимости у от x должны быть одновременно построены для каждого уровня как переменной а, так и переменной b. Все три или четыре переменные могут быть как количественными, так и качественными (факторами). Если x или y являются факторами, то их уровни будут автоматически преобразованы в численные значения (при помощи функции as.numeric()).
Кроме перечисленных аргументов, функция coplot() принимает также такие стандартные графические параметры, как col, pch, xlim, ylim, и др. (см. раздел 3.1).
Работу функции coplot() мы проиллюстрируем на примере собственных данных о плотности популяции (экз./м2) моллюска Dreissena polymorpha в озере Нарочь, Беларусь (подробнее см. в оригинальной статье(Mastitsky, Veres, 2010). Учеты плотности популяции дрейссены были выполнены в мае и октябре2005 г. на пяти глубинах озера
вдоль восьми трансект. В приведенном ниже примере для простоты использована лишь часть данных (для трех из восьми трансект). Загрузить текстовый файл с данными можно из онлайн-сервиса Dropbox при помощи простой команды:
92
density <- read.delim(file = "http://dl.dropbox.com/u/7521662/Dreissena_in_Naroch_Lake.txt",
header = TRUE) str(density)
'data.frame': 79 |
obs. of |
4 variables: |
|
1 1 1 1 1 1 1 1 1 ... |
|||
$ |
Transect: Factor w/ 3 |
levels "A","B","C": 1 |
|||||
$ |
Month : Factor w/ 2 levels "May","October": |
1 1 1 1 1 1 1 1 1 1 ... |
|||||
$ |
Depth |
: num |
0.8 0.8 |
0.8 0.8 |
0.8 0.8 |
0.8 0.8 2 2 ... |
|
$ |
Density |
: int |
36 340 |
40 40 24 |
56 28 0 |
1560 |
40 ... |
Созданная указанным образом таблица density содержит такие переменные, как
Transect |
(Трансекта), Month (Месяц), |
Depth (Глубина) и собственно Density |
(Плотность |
популяции). Для начала |
изобразим зависимость плотности популяции |
дрейсены от глубины для каждого месяца:
coplot(Density ~ Depth | Month, data = density, xlab = c("Depth", "Month"), ylab = "Density")
Воспользовавшись аргументами pch и col, мы можем изменить внешний вид и цвет точек в каждой панели графика:
coplot(Density ~ Depth | Month, data = density, pch = 19, col = "blue",
xlab = c("Depth", "Month"), ylab = "Density")
Прямоугольную область графика с названиями уровней фактора, по которым разбиваются данные, по-английски иногда называют"shingle" ("вывеска"). При необходимости можно изменить заливку прямоугольников, в которые вписаны названия уровней фактора (см. аргумент bar.bg):
coplot(Density ~ Depth | Month, data = density,
bar.bg = c(fac = "coral"), # fac - сокращение от "factor" pch = 19, col = "blue",
xlab = c("Depth", "Month"), ylab = "Density")
Как это часто бывает с данными, характеризующими численность того или иного организма, данные по плотности популяции дрейссены в озере Нарочь распределены резко асимметрично – большинство наблюдений сосредоточено в области малых значений плотности, и лишь некоторые наблюдения имеют очень высокие значения. Как результат, плотное расположение точек в области низких значений затрудняет вывод о характере анализируемой связи. Для лучшей визуализации этой зависимости мы можем добавить сглаживающие кривые в каждую панель графика. Для этого воспользуемся аргументом panel, который, как отмечалось выше, позволяет выполнять тонкую настройку внешнего вида панелей путем прописывания соответствующей графической функции, например, panel.smooth():
coplot(Density ~ Depth | Month, data = density, panel = function(x, y, ...) {
panel.smooth(x, y, lty = 2, pch = 19, col = "blue",
span = 0.6)}, # span регулирует кривизну сглаживающей кривой bar.bg = c(fac = "coral"), # fac - сокращение от "factor"
pch = 19, col = "blue",
xlab = c("Depth", "Month"), ylab = "Density")
93

|
|
|
|
|
|
Month |
|
|
|
|
|
|
|
|
|
|
|
|
|
October |
|
|
|
|
|
|
|
May |
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
10000 |
|
|
|
|
|
|
|
|
|
|
Density |
6000 |
|
|
|
|
|
|
|
|
|
|
|
2000 |
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
Depth |
|
|
|
|
|
Пока закономерность вырисовывается нечетко– и все из-за уже упомянутой асимметричности распределения значений плотности популяции дрейссены. Мы можем несколько снизить эту асимметричность, преобразовав данные путем логарифмирования. Поскольку некоторые значения плотности равны ,нулюперед логарифмированием добавим по единице к каждому наблюдению:
coplot(log(Density + 1) ~ Depth | Month, data = density, panel = function(x, y, ...) {
panel.smooth(x, y, lty = 2, pch = 19, col = "blue",
span = 0.6)}, # span регулирует кривизну сглаживающей кривой bar.bg = c(fac = "coral"), # fac - сокращение от "factor"
pch = 19, col = "blue",
xlab = c("Depth", "Month"), ylab = "Density")
На полученном графике гораздо лучше прослеживается тенденция к возрастанию плотности популяции дрейссены от глубины0.8 к 2 м и к последующей стабилизации на более глубоких участках озера. При этом данная тенденция имела место как в мае, так и в октябре.
Вспомним, что учёты плотности популяции дрейссены проводились вдоль нескольких трансект. При помощи функцииcoplot() мы можем легко изобразить полученные данные в отношении не только времени отбора проб, но и трансект, вдоль которых эти пробы отбирались (обратите внимание на формулу log(Density + 1) ~
Depth | Month * Transect):
coplot(log(Density + 1) ~ Depth | Month * Transect, panel = function(x, y, ...) {
panel.smooth(x, y, lty = 2, pch = 19, col = "blue", span = 0.6)},
bar.bg = c(fac = "coral"), xlab = c("Depth", "Month"), ylab = c("Density", "Transect"), data = density)
94

Полученный категоризованный график дает достаточно полную пространственновременную характеристику изучаемой зависимости.
|
|
|
|
|
Month |
|
|
|
|
|
October |
|
|
|
May |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
8 |
|
|
|
|
|
6 |
|
|
|
|
|
4 |
|
|
|
|
C |
2 |
|
|
|
|
|
0 |
|
|
|
|
|
Density |
|
|
|
|
8 |
|
Transect |
|
|
|
|
2 4 6 |
B |
||
|
|
|
|
|
0 |
|
|
8 |
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
Depth |
|
|
|
|
|
|
|
Как отмечалось выше, в формуле вида y ~ x | a * b любая из переменных может быть количественной, в том числе и переменные, стоящие по правую сторону от “|”. Например, можно разбить наши данные не по месяцам, а по интервалам глубин:
coplot(log(Density+1) ~ Month | Depth,
bar.bg = c(num = "coral"), # num - сокращение от numeric pch = 19, col = "blue", xlab = c("Month", "Depth"),
ylab = c("Density", "Transect"), data = density)
Важно понимать, как на полученном графике располагаются отдельные панели: они выстроены в порядке возрастания значений плотности популяции дрейссены. Первой является левая нижняя панель, за которой следуют средняя нижняя и правая нижняя панели. В верхнем ряду порядок аналогичный (т.е. "читать" график нужно слева направо). "Вывеска" в верхней части графика является своего рода легендой, подсказывающей,
какие именно данные изображены в каждой |
панели. Так, в |
левом нижнем углу |
представлены данные для диапазона глубин от0 до |
примерно 1.5 |
м; средняя нижняя |
панель содержит данные для диапазона глубин от 0 до примерно 2.5 м, и т.д. Практически все автоматически выделенные программой диапазоны глубин перекрываются.
95

Depth
|
1 |
2 |
3 |
4 |
5 |
6 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
May |
Octb |
|
|
|
|
|
|
8 |
|
|
|
|
6 |
|
|
|
|
4 |
Density |
|
|
|
2 |
8 |
|
May |
0 |
|
|
|
|
|
|
|
6 |
|
|
|
|
4 |
|
|
|
|
2 |
|
|
|
|
0 |
|
|
|
|
|
May |
Octb |
|
Month
Octb
Количество диапазонов и уровень их перекрытия регулируются при помощи аргументов number и overlap соответственно:
coplot(log(Density+1) ~ Month | Depth, number = 2, overlap = 0.1,
bar.bg = c(num = "coral"), pch = 19, col = "blue", xlab = c("Month", "Depth"),
ylab = c("Density", "Transect"), data = density)
Depth
1 2 3 4 5 6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
May |
|
Octb |
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Density |
4 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
May |
Octb |
Month
96