Серия материалов “Базовые операции в R” призвана для того, чтобы ближе познакомить читателя с программной средой R и закрыть белые пятна между статьями, вышедшими в свет ранее на нашем сайте. Мы также рекомендуем читателю ознакомиться с публикацией Статистика с большой буквы или R, чтобы узнать об истории развития этого языка и общих принципах работы с ним. Работая с примерами этого цикла публикаций, Вы сможете самостоятельно, начиная с азов, освоить R и постепенно научиться выполнять вычисления простой и средней сложности. Кроме того, изучив все материалы этой серии, для Вас не составит труда применить и более сложные методики анализа, описанные на нашем сайте. Мы также рекомендуем настоящий цикл материалов как отправную точку для участников наших on-line курсов шести сигм, отдавшим предпочтение R в качестве среды анализа в своих проектах. Итак, в первой статье мы познакомимся со способами расчета некоторых показателей, объединенных под общим понятием описательных или базовых статистик. Сюда принято относить среднее значение (среднее арифметическое, медиана, мода), минимальное и максимальное значения, разброс, вариацию и стандартное отклонение, квартили и процентили… В качестве набора результатов наблюдений создадим ряд значений, подчиняющихся нормальному закону распределения, состоящий из 100 наблюдений со средним арифметическим 50 и стандартным отклонением 5. Рабочий файл прикреплен к статье и доступен всем зарегистрированным пользователям. Вы всегда можете сгенерировать подобные значения самостоятельно, применив команду: > x<-rnorm(100, 50, 5) Чтобы сохранить эти значения введите еще одну команду: > write.csv(x, file="data.csv") Теперь сгенерированный набор значений находится в папке Мои документы в файле data.csv. Его можно в любой момент вызвать, введя команду: > read.csv(file="data.csv", header=TRUE, sep=",", dec=".") или присвоить значения какой-либо переменной: > x<-read.csv(file="data.csv", header=TRUE, sep=",", dec=".") Теперь рассчитаем среднее арифметическое значение: > mean(x) В R вы всегда можете задать алгоритм расчета, если не уверены или не знаете какой командой его осуществить. Так, к примеру, среднее арифметическое значение представляет собой сумму всех значений, разделенных на их количество. Таким образом, среднее арифметическое можно рассчитать с помощью команды: > sum(x)/100 Чтобы рассчитать медиану введите команду: > median(x) А вот для моды стандартной команды в R не предусмотрено, поэтому используйте следующее выражение: > density(x)$x[which.max(density(x)$y)] Минимальное и максимальное значения можно рассчитать, используя следующие команды, соответственно: > min(x) Стандартная команда range, отражает диапазон значений в формате “от-до” (от минимального значения до максимального): > range(x) Для того, чтобы действительно рассчитать разброс, необходимо ввести следующую команду: > max(x)-min(x) С помощью следующего выражения можно рассчитать вариацию значений: > var(x) Квадратный корень этого значения покажет стандартное (среднеквадратическое) отклонение: > sqrt(var(x)) Последний показатель можно также рассчитать с помощью специальной функции расчета стандартного отклонения: > sd(x) Чтобы рассчитать квартили введите команду: > quantile(x) Полученные результаты показывают минимальное значение, первый, второй, третий и четвертый квартили. Чтобы рассчитать какой-либо процентиль (квантиль), воспользуйтесь командой: > quantile(x, c()) В аргументе вектора “c” следует указать соответствующие доли от единицы. Например, чтобы рассчитать 30, 60 и 90% квантили введите команду: > quantile(x, c(.30, .60, .90)) Существую также команды для вызова стандартного набора описательных статистик. Например: > summary(x) или > fivenum(x) С помощью последней команды получают минимальное значение, первый квартиль, медиану, третий квартиль и максимальное значение. Все эти команды являются базовыми – встроенными в R. Кроме стандартных команд, существует немало различных пакетов, которые позволяют, как автоматизировать процесс расчёта, так и применить некоторые другие алгоритмы расчета статистических величин. UPD 05.03.2012: Базовые операции в R. Часть 2 Продолжая серию публикаций, посвященных простейшим примерам работы в среде R, мы попробуем отразить некоторые из базовых статистик в графическом виде. Таким образом, в этой статье мы разберем основы построения диаграмм в R. В качестве результатов наблюдений будут использованы данные из предыдущей статьи. Вызовите их и присвойте какой-либо переменной. Чтобы отразить наблюдения в графическом виде используйте команду: > plot(x$x) Конечно же, в таком виде наблюдения мало о чем могут сказать. Гораздо информативнее изображение в виде гистограммы: > hist(x$x) или ящичной диаграммы: > boxplot(x$x) Теперь рассмотрим способы представления данных в виде категорий с помощью круговых и столбчатых диаграмм. Для этого создадим новый набор значений, соответствующий составу атмосферы: > data<-c(78, 21, 1) > pie(data) Теперь разберем основные способы настройки диаграмм и попробуем применить их:
> barplot(data, ylab="%", xlab="Атмосферные газы", main="Состав атмосферы", sub="SixSigmaOnline.ru") С помощью команды “col”, можно разрисовать диаграмму в любой цвет: > color=c("red", "blue", "yellow") или > pie(data, col=color, main="Состав атмосферы", sub="SixSigmaOnline.ru") Конечно, это далеко не все команды, которые можно применить для настройки диаграмм, тем не менее, оперируя ими Вы сможете построить достаточно информативную и наглядную диаграмму. UPD 02.04.2012: Базовые операции в R. Часть 3 В настоящей публикации мы рассмотрим некоторые способы представления числовых рядов в виде простейших графиков, продолжим рассматривать способы настройки диаграмм в R, а также способы изучения взаимосвязи между двумя факторами – корреляцию. В качестве набора наблюдения я использую ряды данных, присвоенные переменным. Каждый ряд представляет координаты отдельных точек: координаты абсцисс присвоены переменной x, а ординат – y. > x<-c(3.9, 6.5, 3.7, 4.5, 5.0, 5.8, 3.3, 6.2, 3.6, 3.9, 5.1, 6.4, 4.2, 4.9, 6.0, 5.4, 4.4, 3.8, 6.7, 4.6, 4.3, 6.3, 5.2, 6.4, 6.2, 5.5, 2.7, 2.8, 5.4, 5.8, 6.6, 5.3, 4.2, 4.3, 4.0, 5.4) С помощью следующей команды мы представим результаты наблюдений в виде точек на плоскости декартовых координат: > plot(x, y) Обратите внимание на положение переменных в аргументе функции – оно соответствует зависимой (y) и независимой (x) переменной. Если поменять их местами, то диаграмма примет несколько иной вид: Попробуем видоизменить способ изображения наблюдений с помощью аргумента “type”. Значение аргумента может принимать одно из следующих значений:
Используем соединительные линии: > plot(x, y, type="l") Разумеется, в таком виде диаграмма становиться не только менее информативной, но и прячет всякую связь между переменными. Используем следующую команду, чтобы графически изобразить корреляционную зависимость между переменными: > abline(lm(y ~ x)) Функция abline() позволяет добавить на любой график прямую линию. В настоящем примере, мы записали в ее аргументе функцию lm(), указав, таким образом, что прямая линия должна отражать линейную зависимость переменных x и y. Применив следующую команду, можно нанести линию, рассчитанную при помощи взвешенной локальной регрессии для каждого сглаживаемого значения данных – линию сглаживания: > lines(lowess(x, y)) Оба представленных метода помогают графически представить и оценить взаимосвязь между переменными, однако не дают возможности судить о силе этой взаимосвязи. Числовую оценку взаимосвязи – корреляцию, можно рассчитать с помощью функции: > cor(x,y) В аргументе команды следует указать метод расчета корреляции – method и способ выбора наблюдений – use: > cor(x, use="", method="") Аргумент method, принимает одно из следующих значений: pearson, spearman или kendall, соответствующих расчету коэффициента корреляции Пирсона, Спирмена или Кендалля, а use – everything, all.obs, complete.obs, na.or.complete или pairwise.complete.obs, соответствующих различному подходу к анализу наблюдений и отсутствую отдельных значений числового ряда. Например: > cor(x,y, use="complete.obs", method="spearman") Таким образом, используя один из методов визуализации взаимосвязи между переменными и расчета корреляционной зависимости, результаты анализа можно представить одной иллюстрацией: > cor(x,y, method="pearson") UPD 09.04.2012: Базовые операции в R. Часть 4 Одной из важнейших задач первичного анализа данных является изучение закона распределения наблюдаемой величины. В зависимости от поставленных задач, исследователь может прибегнуть к визуальной оценке распределения, изучению выбросов, хвостов или аномалий, проверке согласия распределения с определенным законом (например, нормальным) и т.д. Для визуальной оценки распределения чаще всего используют гистограммы. Создадим набор значений, подчиняющихся нормальному закону распределения, и построим простейшую гистограмму: > x<-rnorm(100, 0, 1) Реже используют ящичные диаграммы: > boxplot(x) Альтернативный способ визуализации распределения величины – график плотности вероятности: > plot(density(x)) С помощью следующей команды на гистограмму можно нанести кривую нормального распределения: > hist(x) Унимодальные распределения, неподверженные асимметрии (в том числе и нормальное), обладают той особенностью, что среднее арифметическое, медиана и мода близки (идеальный вариант – все значения равны между собой). Рассчитав указанные статистики: > mean(x) можно нанести их на график плотности вероятности или гистограмму. Например: >hist(x) Наличие асимметрии можно диагностировать по порядку расположения выбранных статистик:
Если значения выстраиваются в какой-либо другой последовательности, возможно, распределение переменной би- или полимодальное. Для анализа асимметрии по величине скоса (Skewness) необходимо предварительно установить пакет “moments”. С помощью этого пакета мы также сможем проверить эксцесс (Kurtosis) – “остроту пика” распределения. Алгоритм анализа выглядит следующим образом: > install.packages("moments") Отрицательный показатель скоса (Skewness) свидетельствует о незначительной левосторонней асимметрии, а положительный эксцесс (Kurtosis) – о более островершинной форме кривой функции вероятности распределения. Следует учесть, что равенство средних значений (среднего арифметического, медианы и моды) и отсутствие асимметрии еще не доказывают подчинение распределения величины нормальному закону. Логистическое распределение и распределение Лапласа также удовлетворяют этим условиям. Однако показатель эксцесса для этих распределений будет выше 0 – значения эксцесса нормального распределения. Если в целях последующего исследования достаточно проверить, с какой вероятностью распределение наблюдаемой величины можно описать нормальным законом, то после визуальной оценки гистограммы следует провести тест гипотезы. С механизмом проверки согласия закона распределения с нормальным читатель может ознакомиться в статье Проверка гипотез о нормальности распределения. | |
![]() |
Всего комментариев: 0 | |
|
|
Я добавил в таблицу графики, которые показывают α и α/2. Кстати, пока добавлял, заметил, что в исходном файле формула расчета коэффициентов подтягивала величину риска из строки α/2. Возможно, из-за этого возникла путаница? Буду рад, если повторите расчеты и отпишите.
Задача которую я решаю: Мы проводим многократные измерения случайной величины, которая подчиняется закону распределения Стьюдента (это проверяется критерием Пирсона). И с доверительной вероятностью, как правило 95% и уровнем значимости 5%, ищем области в которых с заданной доверительной вероятностью находится истинное значение измеряемой величины. Именно к этой задаче относятся вышеприведённый схемы.