Файл: Следует набрать х, чтобы в ответ получить этот вектор.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.03.2024

Просмотров: 13

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Лабораторная работа № 1
В этой лабораторной работе необходимо изучить некоторые команды R. Загрузить среду выполнения программ R можно с сайта https://cran.r-project.org/
Для выполнения операций R использует функции. Для запуска функции с именем funcname необходимо набрать funcname (input 1, input2), где входные параметры, или аргументы, input 1 и input2 сообщают R, как именно следует исполнить эту функцию. Например, для создания вектора с несколькими числами необходимо использовать функцию конкатенации с(). Следующая команда R позволяет объединить числа 1, 3, 2 и 5 и сохранить их в виде вектора с именем х.
Следует набрать х, чтобы в ответ получить этот вектор.
> x <- c(1, 3, 2, 5)
> х
[1] 1 3 2 5
Следует обратить внимание на то, что символ «>» не является частью команды — R выводит этот знак просто, чтобы показать свою готовность к выполнению следующей команды. Можно сохранять объекты не только с помощью “<-“, но также и “=:“.
> x = c(1, 6, 2)
> x
[1] 1 6 2
> y = c(1, 4, 3)
Многократное нажатие клавиши со стрелкой вверх приведет к показу предыдущих команд, которые можно отредактировать. Это полезно, поскольку необходимость повторения похожих команд возникает часто. Кроме того, ввод команды ?funcname всегда откроет новое окно со справочным файлом, содержащим дополнительную информацию по функции funcname.
Далее необходимо выполнить сложение двух чисел. В этом случае программа сначала добавит первое число из х к первому числу из у и т. д. Однако х и у должны быть одинаковой длины.
Можно проверить их длину при помощи функции length().
> length(x)
[1] 3
> length(y)
[1] 3
> x + y
[1] 2 10 5
Функция Is () позволяет просмотреть список всех объектов, таких как данные и функции, которые были сохранены до этого момента. Функцию rm() можно использовать для удаления любого нежелательного объекта.
> ls()
[1] "x" "y"
> rm(x, y)
> ls() character(0)
Имеется также возможность удалить все объекты за один раз:
> rm(list = ls())

Функцию matrix () можно использовать для создания матрицы с числами. Перед применением функции matrix () можно узнать о ней больше следующим образом:
> ?matrix
Справочный файл сообщает, что функция matrix () принимает несколько входных параметров, но для начала мы будем использовать первые три: данные (элементы матрицы), количество строк и количество столбцов. Необходимо создать матрицу.
> x = matrix (data = c(1, 2, 3, 4), nrow = 2, ncol = 2)
> x
[,1] [,2]
[1,] 1 3
[2,] 2 4
Обратите внимание, что можно не набирать data =, nrow = и ncol = в приведенной выше команде matrix(), а просто ввести x = matrix(c(1, 2, 3, 4), 2, 2) и это имело бы тот же эффект. Однако иногда бывает полезно указать имена аргументов, т. к. иначе R будет предполагать, что аргументы функции подаются на нее в том же порядке, который приведен в справочном файле этой функции. Как показано в данном примере, по умолчанию R создает матрицы путем последовательного заполнения столбцов. В качестве альтернативы можно использовать опцию byrow = TRUE для заполнения матрицы по строкам.
> matrix(c(1, 2, 3, 4), 2, 2, byrow = TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 4
В приведенной выше команде матрице не было присвоено никакого имени вроде х. В этом случае матрица была выведена на экран, но не сохранена для будущих вычислений. Функция sqrt() возвращает квадратный корень каждого элемента вектора или матрицы. Команда х^2 возводит каждый элемент х в квадрат; возможно использование любой степени, включая дроби и отрицательные степени. Выполните следующие действия:
> sqrt(x)
[,1] [,2]
[1,] 1.00 1.73
[2,] 1.41 2.00
> x^2
[,1] [,2]
[1,] 1 9
[2,] 4 16
Функция rnorm() генерирует вектор случайных нормально распределенных значений, при этом аргумент п задает размер выборки. Каждый раз при вызове этой функций получатся другой результат. Создайте два набора чисел — х и у — и примените функцию cor() для расчета корреляции между ними.
> x = rnorm(50)
> y = x + rnorm(50, mean = 50, sd = .1)

> cor(x, y)
[1] 0.995
По умолчанию rnorm() создает случайные переменные, представляющие стандартное нормальное распределение со средним значением 0 и стандартным отклонением 1. Однако, как показано выше, среднее значение и стандартное отклонение можно изменить при помощи аргументов mean и sd. Для того, чтобы код в точности воспроизводил один тот же набор случайных чисел, необходимо использовать функцию set.seed(). Функция set.seed() принимает в качестве аргумента произвольное целое число.
> set.seed(1303)
> rnorm(50)
[1] -1.1440 1.3421 2.1854 0.5364 0.0632 0.5022 -0.0004
Для получения воспроизводимых результатов, необходимо использовать set.seed()во всех лабораторных работах, где выполняются вычисления, содержащие случайные величины.
Функции mean() и var() необходимо использовать для вычисления среднего значения и дисперсии некоторого набора чисел. Применение sqrt() к результату работы var() даст стандартное отклонение. Или можно просто mean() применить функцию sd(). Выполните следующие действия:
> set.seed(3)
> y = rnorm(100)
> mean(y)
[1] 0.0110
> var(y)
[1] 0.7329
> sqrt(var(y))
[1] 0.8561
> sd(y)
[1] 0.8561
Использование функции plot() является основным способом визуализации данных в R. Например, plot(x, у) создает график зависимости значений у от значений х. Имеется большое количество дополнительных опций, которые можно подать на функцию plot(). Например, использование аргумента xlab приведет к появлению заголовка оси X. Для получения дополнительной информации о функции plot() необходимо использовать команду ?plot. Выполните следующие действия:
> x = rnorm(100)
> y = rnorm(100)
> plot(x, y)
> plot(x, y, xlab = "this is the x-axis", ylab = "this is the y-axis", main = "Plot of X vs Y")
Существует несколько способов сохранить построенный в R график. Используемая для этого команда будет зависеть от типа файла, который необходимо создать. Например, для создания
PDF-файла нужно использовать функцию pdf(), а для создания JPEG-файла — функцию jpeg().
Выполните следующие действия:
> pdf("Figure.pdf ")
> plot(x, y, col = "green")
> dev.off() windows
2

Функция dev.off() сообщает R, что создание графика завершено. В качестве альтернативного варианта можно просто скопировать содержимое графического окна и вставить его в файл нужного типа, вроде документа Word.
Функцию seq() можно использовать для создания последовательности чисел. Например, seq(a, b) создает вектор из целых чисел от a до b. Есть много опций: например, seq(0, 1, length = 10) создаст последовательность из 10 чисел, которые равномерно размещены на промежутке от 0 до 1.
Команда 3:11 является сокращенным вариантом seq(3, 11) для целых чисел. Выполните следующие действия:
> x = seq(1, 10)
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x = 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> x = seq(-pi, pi, length = 50)
Теперь необходимо построить более сложные графики. Функция contour () создает контурную диаграмму для изображения трехмерных данных, которая напоминает топографическую карту.
Эта функция принимает три аргумента:
1. Вектор значений х (первое измерение),
2. Вектор значения у (второе измерение),
3. Матрица, чьи элементы соответствуют значениям z (третье измерение) для каждой пары координат (х, у).
Как и в случае с функцией plot(), есть много входных параметров, которые можно использовать для тонкой настройки функции contour(). Чтобы узнать о них подробнее, просмотрите справочный файл, набрав ?controur. Затем выполните следующие действия:
> y = x
> f = outer(x, y, function(x, y) cos(y)/(1 + x^2))
> contour(x, y, f)
> contour(x, y, f, nlevels = 45, add = T)
> fa = (f - t(f))/2
> contour(x, y, fa, nlevels = 15)
Функция image() работает так же, как и contour(), за исключением того, что она создает цветную диаграмму, где цвет зависит от значения z. Такая диаграмма известна как тепловая карта и иногда используется для изображения температуры в прогнозах погоды. В качестве альтернативы для создания трехмерных графиков можно использовать persp(). Аргументы theta и phi контролируют углы обзора графика. Выполните следующие действия:
> image(x, y, fa)
> persp(x, y, fa)
> persp(x, y, fa, theta = 30)
> persp(x, y, fa, theta = 30, phi = 20)
> persp(x, y, fa, theta = 30, phi = 70)
> persp(x, y, fa, theta = 30, phi = 40)

Часто необходимо изучить только некоторую часть данных. Предположим, что данные хранятся в матрице А.
> A = matrix(1:16, 4, 4)
> A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
Тогда выполнение команды
> A[2, 3]
[1] 10 приведет к выбору элемента, соответствующего второй строке и третьему столбцу. Первое число после открывающей скобки [ всегда соответствует строке, а второе — столбцу. Мы можем также выбрать несколько строк и столбцов одновременно, указав векторы в качестве индексов.
Выполните следующие действия:
> A[c(1, 3), c(2, 4)]
[1,] 5 13
[2,] 7 15
> A[1:3, 2:4]
[,1] [,2] [3,]
[1,] 5 9 13
[2,] 6 10 14
[3,] 7 11 15
> A[1:2,]
[,1] [,2] [3,] [4,]
[1,] 1 5 9 13
[2,] 2 6 10 14
> A[, 1:2]
[,1] [,2]
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
В последних двух примерах отсутствует индекс либо для столбцов, либо для строк. Это означает, что включаются все столбцы или все строки соответственно. R рассматривает одну строку или столбец матрицы как вектор.
> A[1,]
[1] 15 9 13
Использование знака минус - в индексе говорит R, что нужно оставить все строки или столбцы, за исключением указанных в этом индексе. Выполните следующие действия:
> A[-c(1, 3), ]
[,1] [,2] [,3] [,4]
[1,] 2 6 10 14

[2,] 4 8 12 16
> A[-c(1, 3), -c(1, 3, 4)]
[1] 6 8
Функция dim() выводит размерность матрицы, т. е. число содержащихся в ней строк, за которым следует число столбцов.
> dim(A)
[1] 4 4
Для большинства задач первым шагом является импортирование набора данных в R. Функция read.table() — один из основных инструментов для этого. Справочный файл содержит детали, касающиеся использования этой функции. Для экспортирования данных можно использовать функцию write.table().
Перед попыткой загрузить некоторый набор данных необходимо убедиться в том, что R знает правильную директорию, где нужно его искать. В операционной системе Windows можно было бы выбрать директорию при помощи опции Change dir из раздела File главного меню.
Далее необходимо загрузить набор данных Auto. Эти данные являются частью пакета ISLR, но для демонстрации функции read.table() нужно загрузить их из текстового файла. Выполните указанную ниже команду для загрузки файла Auto.data в R и сохраните его в виде объекта Auto в формате, который называется «таблица данных». После загрузки данных необходимо применить функцию fix() для просмотра этих данных в окне, напоминающем электронную таблицу. Обратите внимание, что перед вводом любых следующих команд эту таблицу нужно закрыть.
> Auto = read.table("Auto.data")
> fix(Auto)
Auto.data —текстовый файл, который можно посмотреть при помощи стандартного текстового редактора. Часто перед загрузкой того или иного набора данных в R рекомендуется просмотреть его с использованием текстового редактора или других программ, таких как Excel. Этот конкретный набор данных не был загружен корректно, поскольку система R предположила, что имена переменных являются частью данных и поэтому включила их в первую строку. Эти данные содержат также несколько пропущенных значений, отмеченных вопросительным знаком «?».
Пропущенные значения — частое явление в реальных данных. Использование опции header = T
(header = TRUE) при вызове функции read, table() сообщает R о том, что первая строка файла содержит имена переменных, а использование опции na.strings говорит R о том, что каждый раз при обнаружении определенного сочетания символов (например, вопросительного знака) это сочетание следует рассматривать в качестве пропущенного элемента матрицы.
> Auto = read.table("Auto.data", header = T, na.strings = "?")
> fix(Auto)
Excel — это программа для хранения данных в одном из распространенных форматов. Легким способом загрузки таких данных в R является сохранение их в виде CSV-файла (от «comma separated values», т. е. «значения, разделенные запятыми») и использование функции read.table() для загрузки.
> Auto = read.csv("Auto.csv", header = T, na.strings = "?")
> fix(Auto)
> dim(Auto)
[1] 397 9
> Auto [1:4, ]

Функция dim() сообщает нам, что данные содержат 397 наблюдений, или строк, и девять переменных, или столбцов. Есть разные способы работы с пропущенными значениями. В данном случае пропущенные значения содержатся только в пяти строках, и поэтому мы используем функцию na.omit (), чтобы просто удалить эти строки.
> Auto = na.omit(Auto)
> dim(Auto)
[1] 392 9
После корректной загрузки данных мы можем применить функцию names() для просмотра имен переменных.
> names(Auto)
[1] "mpg"
"cylinders"
"displacement" "horsepower"
[5] "weight"
"acceleration" "year"
"origin"
[9] "name"
Мы можем воспользоваться функцией plot() для создания диаграмм рассеяния количественных переменных. Однако простой ввод имен переменных приведет к сообщению об ошибке, поскольку R не знает, что эти переменные нужно искать в таблице Auto.
> plot(cylinders, mpg)
Error in plot(cylinders, mpg) : object 'cylinders' not found
Для обращения к переменной мы должны указать название набора данных и имя этой переменной, объединенные знаком $. В качестве альтернативы мы можем использовать функцию attach(), чтобы сообщить R о том, что переменные в этом наборе данных нужно сделать доступными по их имени.
> plot(Auto$cylinders, Auto$mpg)
> attach(Auto)
> plot(cylinders, mpg)
Переменная cylinders хранится в виде количественного вектора, и поэтому она была распознана R как количественная переменная. Но поскольку имеется лишь небольшое число возможных значений cylinders, эту переменную, возможно, следует рассматривать как качественную. Функция as.factor() конвертирует количественные переменные в качественные.
> cylinders = as.factor(cylinders)
Если отображенная на оси X переменная является качественной, то функция plot () автоматически построит диаграмму размахов. Как обычно, для настройки графика можно указать целый ряд опций.
> plot(cylinders, mpg)
> plot(cylinders, mpg, col = "red")
> plot(cylinders, mpg, col = "red", varwidth = T)
> plot(cylinders, mpg, col = "red", varwidth = T, horizontal=T)
> plot (cylinders, mpg, col = "red", varwidth = T, xlab = "cylinders", ylab = "MPG")
Для построения гистограммы можно использовать функцию hist(), Заметьте, что col = 2 имеет тот же эффект, что и col = "red".
> hist(mpg)

> hist(mpg, col = 2)
> hist(mpg, col = 2, breaks = 15)
Функция pairs() создает матрицу диаграмм рассеяния, т.е. диаграмму рассеяния для каждой пары переменных из того или иного набора данных. Мы можем также построить диаграммы рассеяния только для определенного подмножества переменных.
> pairs(Auto)
> pairs( mpg + displacement + horsepower + weight + acceleration,
Auto)
Сочетание функций plot() и identify() обеспечивает полезный интерактивный метод определения значений конкретной переменной на графике. Мы подаем на identify() три аргумента: переменные для отображения на осях X и Y и переменную, чьи значения мы хотели бы указать рядом с каждой точкой. Тогда щелчок мышью по некоторой точке на графике заставит R вывести соответствующее значение интересующей нас переменной. Щелчок правой кнопкой мыши по графику остановит работу функции identify() (Ctrl + щелчок на компьютерах Мас). Выведенные функцией identify() числа соответствуют порядковым номерам строк в таблице данных.
> plot(horsepower, mpg)
> identify(horsepower, mpg, name)
Функция summary() рассчитывает количественные сводки по каждой переменной в конкретном наборе данных.
> summary(Auto) mpg cylinders displacement
Min. : 9.00 Min. :3.000 Min. :68.0 1st Qu. :17.00 1st Qu. :4.000 1st Qu. :105.0
Median :22.75 Median :4.000 Median :151.0
Mean :23.45 Mean :5.472 Mean :194.4 3rd Qu. :29.00 3rd Qu. :8.000 3rd Qu. :275.8
Max. :46.60 Max. :8.000 Max. :455.0 horsepower weight acceleration
Min. : 46.0 Min. :1613 Min. :8.00 1st Qu. : 75.0 1st Qu. :2225 1st Qu. :13.78
Median : 93.5 Median :2804 Median :15.50
Mean :104.5 Mean :2978 Mean :15.54 3rd Qu. :126.0 3rd Qu. :3615 3rd Qu. :17.02
Max. :230.0 Max. :5140 Max. :24.80 year origin name
Min. :70.00 Min. :1.000 amc matador : 5 1st Qu. :73.00 1st Qu. :1.000 ford pinto : 5
Median :76.00 Median :1.000 toyota corolla : 5
Mean :75.98 Mean :1.577 amc gremlin : 4 3rd Qu. :79.00 3rd Qu. :2.000 amc hornet : 4
Max. :82.00 Max. :3.000 Chevrolet chevette : 4
(Other): 365
Для качественных переменных, таких как name, R перечислит число наблюдений, попадающих в каждую категорию. Мы можем также получить сводку только по одной переменной.
> summary (mpg)

Min. 1st Qu.
Median
Mean
3rd Qu. Max.
9.00 17.00 22.75 23.45 29.00 46.60
Закончив использование R, мы вводим q() для завершения работы, или для выхода из программы.
При выходе из R у нас есть имеется возможность сохранить текущую рабочую среду, чтобы в следующий раз сделать доступными все объекты, которые мы создали во время этой сессии работы с R. Перед выходом из R мы можем захотеть сохранить историю всех команд, выполненных во время последней сессии; это можно сделать при помощи функции savehistory(). В следующий раз при запуске R мы можем загрузить эту историю команд при помощи функции loadhistory().