-
Notifications
You must be signed in to change notification settings - Fork 0
R course, Lecture 3
Stanislav edited this page Oct 29, 2013
·
2 revisions
##Факторы
- Общие сведения
- Факторы - вектора, элементы которого могут принимать множество значений
- Факторы часто называют категориальными переменными. Также существует некоторая аналогия факторов с enumerated type
- Факторы имеют большое применение в статистическом моделировании
- Создание факторов.
-
factor(args)- данная функция используется для создания фактора. Единственным аргументом, являющимся обязательным, является вектор значений.
x <- c(1,4,2,3,1,2,1)
factor(x)
[1] 1 4 2 3 1 2 1
Levels: 1 2 3 4
- альтернативным вариантом
factor()являетсяas.factor(). Напримерf <- as.factor(v)делает из вектора v фактор f.
- Типовые представления факторов.
-
as.character()- символьное представление -
as.numeric()- числовое представление
- Уровни и метки
-
levels()иlabels()также являются аргументами функцииfactor(). - Можно присвоить фактору произвольные метки и уровни.
Пример:
> x <- c(1,2,4,1,3,1,2)
> f <- factor(x,labels = c("a","b","c","d"))
> f
[1] a b d a c a b
Levels: a b c d
- Дополнительные функции
- Иногда может возникнуть ситуация, когда фактор содержит NA. В данном случае можно определить количество вхождений NA в факторе путем использования функции
addNA()Данная функция вызывается от фактора, берет все NA и заворачивает в новый класс, т.е. интерпретирует пропуск как новый класс.
Количество вхождений можно посчитать следующим образом:
table(addNA(factor(c(1,3,4,1,2,NA,NA))))
1 2 3 4 <NA>
2 1 1 1 2
- Имеет место проверять элемент на принадлежность фактору. Элементы могут быть как и символами, так и числами.
f <- factor(c("r","g","b"))
f == "r"
TRUE FALSE FALSE
- Основные команды
-
save(...,file)...- список всех объектов, которые необходимо сохранить,file- имя файла, в который происходит запись данных. Расширение данного файла, как правило.rda -
save.image(file)file- имя файла, в который происходит запись данных. Данная функция сохраняет все рабочее пространство. Альтернатива:save(list = ls(all = TRUE), file = "...").
Пример:
s <- "mama"
save.image(file = "mama.rda")
-
load(file)- загружает данные изfile.
load(file = "D:/mama.rda")
ls() # посмотреть содержимое
- Два способа сохранения данных
- Сохраняем как
save(...,file="...")
Данный способ - лучший вариант, если нужно перетащить данные на машины, где есть R. Соответственно, минусы очевидны. Привязка к формату файла.rdaделает невозможным чтения данных без R.- Весь Workspace можно сохранить в одну переменную. Сделать это можно с помощью
env <- new.env(). - Загрузить данное рабочее пространство можно с помощью функции
loadс соответствующим аргументом.load(file="file.rda",envir=env) - Если мы хотим просмотреть содержимое всей среды, используем
ls(env), если только части -env$arg( например,argможет быть вектор ) - Допонительными аргументами функции
save()являютсяcompressionиcompression_level.
save(...,compress="gzip",...)- применит сжатиеGzip( плюсыGzip- его быстрая работа ).
save(...,Compression_level = arg,...), гдеarg-integer- Определенный "уровень" сжатия.Arg = 6соответствуетGzip,Arg = 9-Bzip2илиXzсжатию.
- Весь Workspace можно сохранить в одну переменную. Сделать это можно с помощью
- Сохраняем через
read.table()- Основные сведения
read.table(...)считывает файл в формате таблицы ( например,.csv) и записывает вDataFrame.
2 вариантаread.table:read.csvиread.csv2(read.csv2используется в странах, которые используют запятую, как разделитель ) Основная информация :??read.table - Некоторые основные аргументы
-
read.tablefile- имя файла, из которого будут считываться данные -
header== true or falseсодержится ли заголовок ? -
sep- разделитель столбцов -
quote- ограничитель строк -
row.names- указание столбца, где хранятся имена строк -
col.names- создание имен для столбцов -
StringsAsFactors- интерпретируем как фактор
-
- Функции
scan()иwrite.table()-
scan- более гибкая, чемread.table. Основное преимущество в том, что при вводе можно указать тип переменных -
write.table- симметрияread.table.write(x, file="data.txt")- сохраняет данные из файлаdata.txtв x
-
- Основные сведения
- База "Ирисы Фишера"
- Основные сведения
- Одна из первых баз данных (1936)
- Набор данных для задачи классификации
- Содержит данные о 150 экземплярах ириса: "Setosa", "Virginica", "Versicolor". Подробнее:
- Считывание данных первым способом
-
save(iris,file="D:/iris.rda")- сохраняем в iris наши данные - Сохраняем весь Workspace в env, загружаем файл, смотрим объект среды env
-
env<-new.env()
load(file="D:/iris.rda",envir=env)
env$iris
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# ............................................................
- Считывание данных вторым способом
- записываем данные в
csv
- записываем данные в
write.csv(iris,file="D:/iris.csv",row.names=FALSE)
### Используем row.names=FALSE, чтобы "убрать мусор"
df <- read.csv(file="D:/iris.csv")
df
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# ............................................................
- "Анализ" содержимого
-
mode()- получает или устанавливает тип хранимого объекта. Например,mode(df$Sepal.Length) -
attributes()- обращается к аттрибутам объекта и возвращает их список. Например,attributes(df$species) - можно изменить уровни в
df$Species-df$Species <- factor (df$Species,levels=c(...),...)
-
- Основные сведения
- Корреляция - зависимость двух случайный величин.
- Линейный коэффициент корреляции (Спирмена) :
- Считаем корреляцию в R:
cor(1:10,10:1)
# -1
- Зависимость и корреляция
- Некоррелируемость случайных величин не гарантирует их независимость. Пример:
Две случайные величины распределены на окружности. - Но коррелируемые случайные величины являются зависимыми.
- Некоррелируемость случайных величин не гарантирует их независимость. Пример:
- Корреляция данных в базе ирисов Фишера
cor(iris[1:4])
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
- Извлечение подмножеств
-
subset(iris,Species="setosa")- извлечение подмножества из базы всех ирисов, гдеSpecies="setosa"
-
- Центрирование и нормирование
-
scale(vector)- выдает нормированный и центрированный вектор, а также центр и отклонение.
-
scale(c(1,2,3,2,1))
#Result:
[,1]
[1,] -0.9561829
[2,] 0.2390457
[3,] 1.4342743
[4,] 0.2390457
[5,] -0.9561829
attr(,"scaled:center")
[1] 1.8
attr(,"scaled:scale")
[1] 0.83666
- Задача отбеливания.
Возможна ситуация, когда матрица признаковXзашумлена. Например, пусть матрица признаков содержит данные о автомобилях, где двумя признаками являются количество потребляемого топлива в городе и за городом. В данном случае эти два признака сильно коррелируемы. Возникает вопрос:" Как определить наиболее важные признаки и как избавиться от зашумленности?"
С помощью диагонализирующего преобразования можно получить из матрицы X диагональную матрицу. Например, метод главных компонент
##Графика в R
- Встроенные пакеты
-
graphics- базовый пакет -
lattice- Содержит сложные, красивые графики, удобно при написании статей.
-
-
ggplot2иrgl-
ggplot2как иlatticeсодержит графики, удобные для визуализации данных( При написании статьи) -
rgl- пакет трехмерной графики. Можно даже создать сцену.
-
- Рисование графиков
-
plot()- Рисование графика. - Аргументы:
-
plot(x,y,...)- x и y координаты точек на графике. -
type- какой тип графика следует нарисовать.Например, p соответствует точкам, l - прямым, n - ничего не рисовать. -
xlabиylab- подпись координатных осей. -
xlim- ограничивает координаты x
-
- установление параметров для объектов
-
par- используется для переопределения графических параметров -
pch= integer - установка формата точки -
lty- тип линии -
col- цвет линии (можно также устанавливать прозрачность)
-
-
# из документации
Speed <- cars$speed
Distance <- cars$dist
plot(Speed, Distance, panel.first = grid(8, 8), pch = 0, cex = 1.2, col = "blue")
plot(Speed, Distance, panel.first = lines(stats::lowess(Speed, Distance), lty = "dashed"), pch = 0, cex = 1.2, col = "blue")
- `legend` - добавляет легенду на график
- `matplot` - рисует колонны матрицы напротив строк
- `pairs` - изображает диаграмму рассеяния матрицы<br/>Пример для ирисов:
pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
- Дополнительные функции
- Возможность сохранения графика в pdf:
pdf("1-20.pdf",family="NimbusSan",encoding="KOI8-R.enc") # создать
plot(1:20, main="Заголовок") # рисовать
dev.off() # сохранить
- `dev.new()`,`dev.off()` -управляют графическими устройствами. При использовании `dev.off()` R закроет графическое устройство.
- `hist()` - гистограмма. Пример использования для ирисов: `hist(iris$Sepal.Length,breaks=3)`
- `density()` - плотность ( графически - сглаженная гистограмма ). Пример `density.default(x=iris$Sepal.Length)`
- Можно построить матрицу контуров. <br/>Пример для случайного вектора: `contour(matrix(rnorm(100),10))`
- Ящик с усами `boxplot()` - показывает медиану, нижний и верхний квартили, минимальное и максимальное значение выборки и выбросы
Подробнее здесь
5. Трехмерная графика
- library(rgl) - подключение пакета, содержащего трехмерную графику
- plot3d(iris[[1]],iris[[2]],iris[[3]], ...) - трехмерный график