Гистограмма явлется важным инструментом статистики, позволяющим наглядно представить распределение значений анализируемой переменной. В системе R для построения гистограмм служит функция hist(). Ее основным аргументом выступает имя анализируемой переменной. В качестве примера создадим нармально распределенную совокупность X из 100 наблюдений со средним значением 15 и стандартным отклонением 5:
Для создания переменной X использована функция rnorm() (от random - случайный, и norm - нормальный). Используя генератор случайных чисел, эта функция формирует нормально распределенные совокупности с заданными размером (n), средним значением (mean) и стандартным отклонением (sd).
Изобразить значения переменной X в виде гистограммы очень просто:
hist(X)
Как видно из приведенного рисунка, функция hist() автоматически выбирает количество столбцов для отображения на графике, а также создает названия осей и заголовок графика. Такого рисунка, получаемого с использованием автоматических настроек, может оказаться вполне достаточно (например, при проведении быстрого разведочного анализа данных). Однако часто требуется его дополнительная доработка.
Прежде всего, важно обратить внимание на размер шага, используемого для разбиения данных на классы при построении гистограммы. В приведенном выше примере программа автоматически разбила значения переменной X на классы с шагом 5. Однако такое грубое разбиение может замаскировать истинные свойства анализируемой совокупности. Для более детального изучения этих свойств следует выбрать более дробное деление данных на классы (т.е. использовать меньший шаг). Сделать это позволяет аргумент breaks (разломы) функции hist():
hist(X, breaks = 20)
Как видим, результатом выполнения предыдущей команды стала гистограмма с двадцатью столбцами, позволяющая более детально проанализировать распределение значений переменной X.
По умолчанию функция hist() отображает по оси ординат частоты встречаемости для каждого класса значений X. Такое поведение функции можно изменить, придав аргументу freq (от frequency - частота) значение FALSE. В этом случае ось ординат будет отражать плотность вероятности каждого класса так, что суммарна площадь под гистограммой составит 1:
hist(X, breaks = 20, freq = FALSE)
При необходимости, столбцы гистограммы можно закрасить желаемым цветом. Для этого следует воспользоваться аргументом col (от color - цвет) - это тот же аргумент, который мы использовали при рассмотрении настроек функции plot() (см. здесь и здесь):
В приведенном примере выбран светло-голубой цвет столбцов ("lightblue").
В ряде случаев, в частности при небольшом числе наблюдений, гистограммы могут давать неверное представление о свойствах совокупности - просто из-за небольшого числа редко расположенных столбцов, например:
Вместо гистограммы (или в добавок к ней) в таких случаях стоит воспользоваться кривой плотности вероятности. Оценка плотности вероятности выполняется при помощи функции density(), которую можно применить в качестве аргумента функции plot() для графического изображения результата:
Гладкость получаемой кривой контролируется при помощи аргумента bw (от bandwidth - полоса пропускания), например:
Для полноты картины гистограмму можно совместить с кривой плотности вероятности. При этом сначала необходимо построить саму гистограмму, а затем добавить к ней кривую плотности при помощи функции lines() (подробнее об этой функции будет рассказано в последующих сообщениях):
Обратите внимание на дополнительные аргументы, использованные вместе с функцией hist(): xlab и ylab - для создания названий осей, и main - для создания заголовка рисунка. Аналогично, в качестве управляющих аргументов функции lines() были применены аргументы col (для установки цвета линии) и lwd (для установки толщины линии). Эти же аргументы мы использовали ранее при построении графиков c помощью функции plot() (см. здесь и здесь). Приведенные примеры показывают универсальность этих и целого ряда других аргументов, управляющих поведением plot(), hist() и других графических функций R высокого уровня.
f1 <- function(x) 5*cos(x)
f2 <- function(x) 2*sin(x)
x<-seq(0, 2*pi, 0.01)
matplot(x,cbind(f1(x),f2(x)),type="l",col=c("red","blue"))
Возможно, Вы имеете в виду это?: http://r-analytics.blogspot.de/2011/11/r_11.html#.UnZQ_8jf-Hs
... а также ?axis
Отправить комментарий