Анализ данных в среде R. Медицинская статистика и биостатистика.

О проекте -  Оглавление обучающего курса - Примеры расчета / обработки данных - R Скрипты  - Библиотека - Дополнение - Мои достижения

Ютуб / ФБ LJ / ВК <- Задать вопрос, узнать новости, критиковать проект

Примеры расчета / обработки данных


Раздел править буду позже.



-----------------------------------------------------
Содержание: Сон. / Пол, рост, вес.. / Ромашка (доли и счет)
-----------------------------------------------------
Пример. 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 пациента.

1_1.jpg

Пол, рост, вес. (пример работы с номинальными данными)
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
 

 

Г. Анализ без разделения на группы.


df2[, -5]

 

Д. Формирование групп.


Номинативные данные.
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

Основные источники материалов для курса указаны в этом уроке.


Медицинская статистика, биостатистика, R программирование

 
->

июнь 2017