Статистическая обработка экспериментальных данных. Язык R в задачах планирования эксперимента. Учебное пособие
.pdf
В языке доступны, как и наиболее частые математические формулы, такие как sin(х), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(x), log(x), log10(x), exp(x), abs(x), min(x), max(x), так и более специфические: range(x), mean(x), rank(x) и другие. Рассмотрим некоторые из них.
Следует отметить, что также как и в других языках, в R углы измеряются не в градусах, а в радианах.
Например
>#Найти синус числа 10
>sin(10)
[1] -0.5440211
>#Найти сумму элементов последовательности от 1 до 6
>sum(c(1:6)) [1] 21
>#Найти минимум и максимум последовательности
>range(c(1:6)) [1] 1 6
>#Найти произведение элементов последовательности
>prod(c(1:6)) [1] 720
>#Найти среднее и медианное среднее
>mean(c(1:6)) [1] 3.5 >median(c(1:6)) [1] 3.5
21
> #Вычислить СКО значений последовательности
>sd(c(1:6)) [1] 1.870829
2.5.Графики в R
R предлагает большое разнообразие графиков. Чтобы понять идею, можно напечатать demo (graphics). Просто невозможно описать все возможности R в отображении графиков, особенно когда каждый графическая функция имеет большое количество параметров.
Таблица 2 – Графические функции
plot(x) |
График значений х (на оси у), упорядоченные |
|
на оси х |
|
|
plot(x,у) |
Двумерный график |
|
|
sunflowerplot(x,y) |
Двумерный график(аналог plot()), но точки на |
|
графике закрашены |
|
|
piechart(x) |
Круговая диаграмма |
|
|
boxplot(x) |
Ящик с усами |
|
|
coplot (x~y|z) |
Двумерный график х и у для каждого значения |
|
z(если z-коэффициент(фактор)) |
|
|
interaction.plot |
Если f1 и f2 - коэффициенты(факторы), |
(f1, f2, x) |
составляет график средних значений y (на оси |
|
Y) относительно значений f1 (на оси X) и f2 |
|
(различные кривые); параметр fun = позволяет |
|
выбирать основную статистику y (по |
|
умолчанию fun=mean) |
|
|
matplot (x, y) |
Двумерный график первого столбца x с первым |
|
из y, второй из x со вторым из y, и т.д. |
|
|
22
dotplot (x) |
Если x - data.frame, производится построение |
|||
|
Кливлендского точечного графика |
|
||
|
|
|||
pairs(x) |
Если x - матрица или data.frame, рисует все |
|||
|
возможные |
двумерные |
графики |
между |
|
столбцами x |
|
|
|
|
|
|||
plot.ts (x) |
Если x - объект класса ts,то отображает график |
|||
|
x относительно времени, x может быть |
|||
|
многомерен, но ряды должны иметь ту же |
|||
|
самую частоту и дату |
|
|
|
|
|
|||
ts.plot (x) |
Аналог предыдущему, но если x многомерен, |
|||
|
ряды могут иметь различные даты ,а частоты те |
|||
|
же самые |
|
|
|
|
|
|
|
|
hist(x) |
Гистограмма частот х |
|
|
|
|
|
|
|
|
barplot (x) |
Гистограмма значений х |
|
|
|
|
|
|||
qqnorm (x) |
Множество значений x относительно значений, |
|||
|
ожидаемых |
согласно нормальному |
закону |
|
|
распределения |
|
|
|
|
|
|||
qqplot (x, y) |
Множество значений y относительно множества |
|||
|
x |
|
|
|
|
|
|||
contour(x,y,z) |
Создает график контура (используются |
|||
|
интерполированные данные), x и y должны |
|||
|
быть векторами и z должна быть матрица так, |
|||
|
чтобы dim (z) =c (длина (x), длина (y)) |
|
||
|
|
|
||
image(x,y,z) |
Аналог предыдущего, но в цвете |
|
||
|
|
|
|
|
persp(x,y,z) |
Трехмерный график |
|
|
|
|
|
|
|
|
23
Например
>hist(x)
>x <- seq(-pi,pi,.1)
>y <- cos(x)
>plot (x,y)
Рисунок 10 – График зависимости y от x
Например
> x <- seq(-pi,pi,.1) >hist(x, col = "green")
24
Рисунок 11 – Гистограмма
2.6.Управляющие структуры языка R
Оператор условий ifelse в R
В языке программирования R оператор условий ifelseсостоит из трех элементов:
индикатор структуры: if, else или elseif (в случае, когда условий больше одного);
условие структуры, заключенного в круглые скобки (где находится условие для выполнения действия);
тело структуры, заключенного в фигурные скобки (где находится код самого действия).
25
Например
В магазине акция: при покупке на сумму от 100$, предоставляется 12.5% скидка.
> shop <- function(x){
+if(x >= 100){
+x = x - x*12.5/100
+print(x)
+}
+}
> shop(200) [1] 175
Циклы while и for в R
Если есть условие, при исполнении которого потребуется повторить действие, используйте цикл while (перевод с англ.: "до тех пор, пока"). Если условия нет, но надо выполнить действие определенное количество раз, воспользуйтесь циклом for.
Например
Допустим у нас есть друг, который решил заняться бегом. До этого он не бегал и находится в ужасной физической форме: максимум сколько он смог пробежать за первую тренировку - 100 метров. Друг пообещал, что через 100 дней он за тренировку будет пробегать больше 10 км, так как он разработал собственную методику: он будет заниматься ежедневно и прибавлять по 5% к дистанции от предыдущей нагрузки.
Проверим при помощи цикла for сработает ли его методика в теории. Для этого создадим функцию run.10km и переменную y,
26
обозначающую дистанцию тренировки (в км). Внутри круглых скобок цикла for напишем, что круг будет повторяться 100 раз, а внутри квадратных код вычислений дистанции для каждого дня. Дистанция последнего дня будет выделена на экран при использовании функции.
>run.10km <- function(y){
+for(i in 1:100){
+y<-y+y*0.05
+}
+print(y)
+}
> run.10km(0.1) [1] 13.15013
Однако, тренироваться ежедневно без выходных для начинающего - это неминуемый путь к физическому и психическому истощению. Чтобы у друга дни нагрузок чередовались с днями отдыха, давайте предложим ему альтернативную методику: тренироваться через день, но прибавляя к дистанции по 10% от предыдущей нагрузки (вместо 5%).
Рассчитаем, используя цикл while, через сколько дней друг начнет пробегать более 10 км за тренировку и выведем результат в виде таблицы каждая строчка которой отображает день тренировки и предполагаемую дистанцию.
> alter.10km <- function(y){
+i<- 1
+Day <- i
+Distance <- y
27
+while(y <= 10){
+i<- i+ 2
+y<-y+y*0.1
+Day <- append(Day,i)
+Distance <- append(Distance,y)
+}
+DF <- data.frame(Day, Distance)
+return(DF)
+}
>
>results <- alter.10km(0.1)
>tail(results, 3) Day Distance
48 95 8.819749
49 97 9.701723
50 99 10.671896
Таким образом, наш друг с 99-го дня станет пробегать более 10 км за тренировку занимаясь реже, но интенсивнее.
3. Задание на самостоятельную работу
Задание 1. Создайте матрицу из 20 элементов и найдите сумму по строкам и столбцам.
Задание 2. Постройте график зависимости y=2*x2+5*x, где x принимает значения от -5 до 5 с шагом 0,5.
Задание 3. С помощью цикла реализовать задачу: в магазине акция: при покупке на сумму от 100$, предоставляется 12.5% скидка. Если сумма покупок больше или равна 1000$, то магазин предоставит
28
25% скидку. Если же ни первое, ни второе условие не соблюдается, то вывести на экран сообщение "Nodiscounts".
4.Контрольные вопросы для самопроверки
1.Как перейти из режима консоли в окно скрипта?
2.Как объявить переменную в языке R?
3.Для чего предназначена функция ls()?
4.Как получить информацию о типе данных переменной?
5.С помощью какой функции строится двумерный график?
6.Для чего используется математическая функция median()?
7.Как создать массив?
8.Как обратиться к элементам одномерного массива?
9.С помощью какой функции можно прочитать данные из текстового файла?
10.Какие циклы существуют в языке R?
5.Заключение
Внастоящее время язык R является одним из ведущих статистических инструментов в мире. Он активно применяется в генетике, молекулярной биологии и биоинформатике, науках об окружающей среде (экология, метеорология) и сельскохозяйственных дисциплинах. Также R все больше используется в обработке медицинских данных, вытесняя с рынка такие коммерческие пакеты,
как SAS и SPSS.
Достоинства среды R:
бесплатная и кроссплатформенная;
богатый арсенал статистических методов;
29
качественная векторная графика;
более 7000 проверенных пакетов;
гибкая в использовании:
-позволяет создавать/редактировать скрипты и пакеты,
-взаимодействует с другими языками, такими: C, Java и Python,
-может работать с форматами данных для SAS, SPSS и STATA;
активное сообщество пользователей и разработчиков;
регулярные обновления, хорошая документация и тех. поддержка.
Недостатки:
•небольшой объем информации на русском языке (хотя за последние пять лет появилось несколько обучающих курсов и интересных книг);
•относительная сложность в использовании для пользователя, незнакомого с языками программирования. Частично это можно
сгладить, работая в GUI оболочке Rcmdr, о которой я писал выше,
но |
для |
нестандартных |
решений |
всеже |
необходимо |
использовать командную строку.
Библиографический список
1.Гмурман В.Е. Теория вероятностей и математическая статистика/ В.Е.Гмурман.М.:Высшая школа, 2000.-479с.
2.Лакин Г.Ф. Биометрия/ Г.Ф. Лакин. М: Высшая школа, 1990.-
352с.
3.Теория вероятностей и математическая статистика/ Под редакцией В.А. Колемаева. М: Высшая школа, 1991.-400с.
30
