Примеры расчета / обработки данных
Раздел править буду позже.
-----------------------------------------------------
Содержание: Сон. / Пол, рост, вес.. / Ромашка (доли и счет)
-----------------------------------------------------
Пример. 1 Сон. (Основной текст) -1
Данные, которые показывают действие двух снотворных препаратов (увеличение часов сна по сравнению с контролем). Данные представлены в виде таблицы (эксель файл, ткст файл в формате ), в R содержится в библиотеке ... и можно посмотреть командой help (sleep).
Источник. Cushny, A. R. and Peebles, A. R. (1905) The action of optical isomers: II hyoscines. The Journal of Physiology 32, 501–510.
Предполагается что это связанные (парные) данные(есть одинаковые ID пациента в первой и второй группах).
Обработка.
1. Услуга 1, - Золотой стандарт статистики.
2. Исследование увеличение продолжительности сна.
Структура данных. |
Таблица с 20 наблюдениями и 3
[, 1] Числовая переменная. Увеличение часов сна в сравнение со среднем.
[, 2] Факторная переменная. Тип воздействия (1,2).
[, 3] Факторная переменная, ID пациента. |
|
Пол, рост, вес. (пример работы с номинальными данными)
sex <- c("male", "female", "male", "male", "female", "male", "male")
w <- c(69, 68, 93, 87, 59, 82, 72)
Команада table() позволяет создать таблицу с подсчетом количества бинарных данных разного типа.
table(sex)
sex
female male
2 5
sex.f <- factor(sex)
x <- c(174, 162, 188, 192, 165, 168, 172.5)
plot(x, w, pch=as.numeric(sex.f), col=as.numeric(sex.f))
legend("topleft", pch=1:2, col=1:2, legend=levels(sex.f))
pch и col — эти параметры предназначены для определения соответственно типа значков и их цвета на графике
Упорядочивание факторов. В примере ниже
m <- c("L", "S", "XL", "XXL", "S", "M", "L")
m.f <- factor(m)
m.f
[1] L S XL XXL S M L
Levels: L M S XL XXL
m.o <- ordered(m.f, levels=c("S", "M", "L", "XL", "XXL"))
m.o
[1] L S XL XXL S M L
Levels: S < M < L < XL < XXL
Правильно перевести факторные значения в числа. Так что бы их значения. не перевелись по месту в уровнях фактора.
a <- factor(3:5)
> a
[1] 3 4 5
Levels: 3 4 5
as.numeric(a) # Неправильно!
[1] 1 2 3
> as.numeric(as.character(a)) # Правильно!
[1] 3 4 5
Ромашка (доли и счёт).
romashka.t <- read.table("data/romashka.txt", sep="\t")
romashka <- romashka.t$V2
names(romashka) <- romashka.t$V1
oldpar <- par(mar = c(7, 4, 4, 2) + 0.1)
romashka.plot <- barplot(romashka, names.arg="")
text(romashka.plot, par("usr")[3]-0.25, srt=45, adj=1, xpd=TRUE, labels=names(romashka))
par(oldpar)
в R есть так называемые точечные графики (dotplots), которые нагляднее гистограмм.
dotchart(romashka)
--
rev(sort(romashka))
плюнет к сердцу прижмет поцелует
24 17 16
не любит любит к черту пошлет
15 15 13
(Мы использовали rev(), потому что sort() сортирует по возрастанию.)
Как видно, гадание было не очень-то удачное...
Файл grants.csv, содержит набор данных о принятых и отвергнутых данных. -4
А. Анализ таблицы. Сама таблица.
setwd("C:/data_an/R_1") #1
df1 <- read.csv('grants.csv') #2
str(df1) |
Устанавливаем рабочую папку.
Переписываем файл из папки в новый вектор.
1420 obs. of 7 variables:
$ npersons : int 2 1 1 1 4 2 1
$ years_in_uni: Factor w/ 3 levels "< 5","> 10","5-10":
$ oldest_age : int 66 51 36 46 46
$ field : Factor w/ 5 levels "beh_cog","bio",..: 2 2 2 2 4 2 3 2 1
- $ RFCD.Code.1 : int 270799
-midpoint : num 25000 25000
$ status : int 1 0 0 0 1 0 1 1 |
Вывод. Удаляем RFCD.Code.1 и midpoint, заменяем status на тип, - фактор.
Б. Получаем новую таблицу.
df1$RFCD.Code.1 <- NULL
df1$midpoint <- NULL
df1$status <- factor(df1$status, labels = c("Not funded", "Funded"))
df2<-df1
str(df2)
sum(is.na(df2)) |
1420 obs. of 5 variables:
$ npersons : int 2 1 1 1 4 2 1 2
$ years_in_uni: Factor w/ 3 levels "< 5","> 10","5-10": 1 1 1 3 2 1 1 3
$ oldest_age : int 66 51 36 46 46
$ field : Factor w/ 5 levels "beh_cog","bio",..: 2 2 2 2 4 2 3 2 1
$ status : Factor w/ 2 levels "Not funded","Funded": 2 1 1 1 2 1 2
|
В. Анализ групповой переменной. Основная групповая переменная, - status
sum(is.na(df2$status))
t1 <- table(df2$status) #1
df2[, 5] |
1. - одномерная табличка с двумя столбцами.
Not funded Funded
747 673
|
Г. Анализ без разделения на группы.
Д. Формирование групп.
Номинативные данные.
t2 <- table(status = df2$status, field = df2$field) #1
t3 <- table(Years = df2$years_in_uni, Field = df2$field, Status = df2$status) #2
subset(df2, status == 'Not funded') #1
|
1) табличка разбитая по двум переменным, статусу и области знаний и вписывает название столбиков
3) по трём номинативным переменным. |
Е. Анализ различных групп (с учётом одной группирующей переменной, с учётом двух группирующих переменных).
mtcars, данные из встроенной библиотеки. - 5
А. Анализ таблицы. в эксель.
help (mtcars) #1
str (mtcars) #2 |
|
|
|
[, 1] |
mpg |
Miles/(US) gallon |
$ mpg : num 21 21 22.8 21.4 18.7
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105
$ drat: num 3.9 3.9 3.85 3.08 3.15
$ wt : num 2.62 2.88 2.32 3.21 3.44
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
A data frame with 32 observations on 11 variables. |
[, 2] |
cyl |
Number of cylinders (4,6,8) |
[, 3] |
disp |
Displacement (cu.in.)/ водоизмещение |
[, 4] |
hp |
Gross horsepower / Полная мощность |
[, 5] |
drat |
Rear axle ratio / Коэффициент задней оси |
[, 6] |
wt |
Weight (1000 lbs) |
[, 7] |
qsec |
1/4 mile time |
[, 8] |
vs |
V/S 0/1 |
[, 9] |
am |
Transmission (0 = automatic, 1 = manual) |
[,10] |
gear |
Number of forward gears / Количество передних передач. (3,4,5) |
[,11] |
carb |
Number of carburetors |
Задачи: 1. Удаляю 2, 3, 5, 6, 10 и 11 столбики. 2., 8 и 9 переводим в формат фактора.
Б. Новая таблица. Две группирующие переменные vs - 2 уровня & am 2 уровня. (вариант с созданием группирующих переменных из количественных.
df <- mtcars
df$cyl<- NULL
df$disp <- NULL
df$drat <- NULL
df$wt <- NULL
df$gear <- NULL
df$carb <- NULL
df$vs <- factor(df$vs , labels = c("V", "S"))
df$am <- factor(df$am , labels = c("Auto", "Manual"))
str(df)
sum(is.na(df)) |
Записываем в рабочий вектор.
Удаляем лишние группы
Меняем тип переменных на Фактор и название переменных.
Получаем
'data.frame': 32 obs. of 5 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1
$ hp : num 110 110 93 110 175 105 245
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : Factor w/ 2 levels "V","S": 1 1
$ am : Factor w/ 2 levels "Auto","Manual": 2 2 2 1 1 1 1 1 1 1 ...
Определяем количество пропущенных значений |
В. Анализ группирующих переменных. Две группирующие переменные, vs и am. Соответственно, можно получить от 1 до 4 групп
sum(is.na(df$vs))
t01 <- table(df$vs) #1
sum(is.na(df$am))
t02 <- table(df$am) #1
t03 <- table(vs = df$vs, am = df$am) #2 |
1) > t01
V S
18 14
> t02
Auto Manual
19 13
2) am
vs Auto Manual
V 12 6
S 7 7
|
Г. Анализ без разделения на группы.
df [, c("mpg", "hp", "qsec ")] |
|
Д. Формирование групп.
Е. Анализ различных групп (с учётом одной группирующей переменной, с учётом двух группирующих переменных).
- evals.
Таблица.
Связь
Вы также можете принять участие в достижение поставленных целей, присылая свои вопросы, которые Вы бы хотели прояснить, высказывая критические замечания о содержание материалов сайта, предлагая взаимовыгодное сотрудничество.
Связаться со мной можно:
- по почте, - hum.d @ narod.ru
- написать сообщение в моих социальных группах Ютуб / ФБ / LJ / ВК
- выйти на связь через скайп molodoy.biz
Основные источники материалов для курса указаны в этом уроке.
|