Добавил:
kiopkiopkiop18@yandex.ru Вовсе не секретарь, но почту проверяю Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5 курс / ОЗИЗО Общественное здоровье и здравоохранение / Статистический_анализ_данных_в_медицинских_исследованиях_в_2_ч_Красько

.pdf
Скачиваний:
22
Добавлен:
24.03.2024
Размер:
5.96 Mб
Скачать

Приложение R-6

library(PropCIs)

# Пример 1 EE=25 EN=125 CE=100 CN=100

OR=(EE/EN)/(CE/CN)

CIOR <- orscoreci(EE,EE+EN,CE,CE+CN, conf.level=0.95)

cat("Отношение шансов: ", OR,"; 95% ДИ ", CIOR$conf.int[1]," – ",CIOR$conf.int[2], "\n")

EER=EE/(EE+EN)

CER=CE/(CE+CN)

RR=EER/CER

CIRR <- riskscoreci (EE,EE+EN,CE,CE+CN, conf.level=0.95)

cat("Относительный риск: ", RR,"; 95% ДИ ", CIRR$conf.int[1]," – ",CIRR$conf.int[2], "\n")

# Пример 2 EE=125 EN=25 CE=100 CN=100

OR=(EE/EN)/(CE/CN)

CIOR <- orscoreci(EE,EE+EN,CE,CE+CN, conf.level=0.95)

cat("Отношение шансов: ", OR,"; 95% ДИ ", CIOR$conf.int[1]," – ",CIOR$conf.int[2], "\n")

EER=EE/(EE+EN)

CER=CE/(CE+CN)

RR=EER/CER

CIRR <- riskscoreci (EE,EE+EN,CE,CE+CN, conf.level=0.95)

cat("Относительный риск: ", RR,"; 95% ДИ ", CIRR$conf.int[1]," – ",CIRR$conf.int[2], "\n")

251

Приложение R-7

#Пример расчета клинического исследования двух препаратов

EE=10

EN=2

CE=4

CN=8

DifP=EE/(EE+EN)-CE/(CE+CN)

DCI <- diffscoreci(EE,EE+EN,CE,CE+CN,conf.level=0.95)

cat("Разность в пропорциях: ", DifP,"; 95% ДИ: ", DCI$conf.int[1]," – ",DCI$conf.int[2], "\n")

OR=(EE/EN)/(CE/CN)

CIOR <- orscoreci(EE,EE+EN,CE,CE+CN, conf.level=0.95)

cat("Отношение шансов: ", OR,"; 95% ДИ: ", CIOR$conf.int[1]," – ",CIOR$conf.int[2], "\n")

252

Приложение R-8

# построение ROC-кривой

library(pROC)

ls <- c(1.0, 1.1, 1.3, 1.5, 2.8, 3.7, 4.6, 4.8, 4.9, 5.5, 5.5, 5.9) response <- c(1,0,1,1,0,1,0,0,1,0,0,0)

roc.data <-roc(response , ls,ci=T) print(roc.data) #ci.auc(roc.data)

plot.roc(roc.data,print.thres='best',print.auc=TRUE, grid=TRUE, family="mono") plot.roc(smooth(roc.data), add=TRUE, col="blue")

ci.thresholds(roc.data,boot.n=200, conf.level=0.95, stratified=FALSE,thresholds='best')

253

Приложение R-9

library(abind, pos=4) library(vcd) library(lattice)

######################################

# три локализации

######################################

MS <- matrix(c(54,57,14,14,33,1), 2, 3, byrow=TRUE) rownames(MS) <- c('Наличие', 'Отсутствие') colnames(MS) <- c('I', 'II', 'III')

names(dimnames(MS)) <- c("Metastasis","Localization") MS # печать таблицы

colPercents(MS) # проценты

TestChiq <- chisq.test(MS, correct=FALSE) # хи-квадрат тест

round(TestChiq$expected, 2) round(TestChiq$stdres, 2) TestChiq

remove(TestChiq)

# создание мозаичной диаграммы рис. 14-1 trellis.device(theme="col.whitebg", family="mono")

#параметры легенды мозаичной диаграммы

q<- legend_resbased(fontsize = 10,

x = unit(1, "lines"), y = unit(0.1,"npc"),

height = unit(0.8, "npc"), width = unit(0.7, "lines"), digits = 3, check_overlap = TRUE, text = NULL,

steps = 200, ticks = 10, pvalue = TRUE, range = NULL)

#параметры мозаичной диаграммы

gg <- shading_hcl(MS, residuals = NULL, expected = NULL, df = 2, h = NULL, c = NULL, l = NULL, interpolate = c(1.5, 2), lty = 1, eps = NULL, line_col = "black", p.value = NULL, level = 0.95)

# получение рисунка

assoc(MS, shade=T, xscale=0.5,margins=c(5,4,4,5),legend = q,gp = gg, ,xlab="", main = "", labeling_args = list(1,2))

remove(MS)

#сравнение II и I metastasis <- c( 57, 54 ) all <- c( 90, 68)

prop.test(metastasis, all, alternative='less', conf.level=.95, correct=FALSE)

#сравнение II и III

metastasis <- c( 57, 14 ) all <- c( 90, 15)

prop.test(metastasis, all, alternative='less', conf.level=.95, correct=FALSE)

# сравнение II и не-II metastasis <- c( 68, 57 ) all <- c(83, 90)

prop.test(metastasis, all, alternative='two.sided', conf.level=.95, correct=FALSE)

254

# доверительные интервалы для II и не-II групп prop.test(57, 90)

prop.test(68, 83)

#Разность в пропорциях metastasis <- c( 68, 57 ) all <- c(83, 90)

t <- prop.test(metastasis, all, alternative='two.sided', conf.level=.95, correct=FALSE)

cat("разность в пропоциях=",t$estimate[1]-t$estimate[2], ", 95% ДИ", t$conf.int[1], " - ", t$conf.int[2],"\n")

#оценка пропорций и разницы в пропоциях

#с помощью библиотеки epiR

library(epiR)

round(epi.conf(matrix(c(68, 15),ncol = 2), ctype = "prop.single"), digits = 3) round(epi.conf(matrix(c(57, 33),ncol = 2), ctype = "prop.single"), digits = 3)

dat <- matrix(c(68, 15, 57, 33),ncol = 4) round(epi.conf(dat, ctype = "prop.unpaired"), digits = 3)

# оценка отношения шансов

MS.2_not2 <- matrix(c(68,15,57,33), 2, 2) rownames(MS.2_not2) <- c('Наличие', 'Отсутствие') colnames(MS.2_not2) <- c('не II', ' II')

MS.2_not2 fisher.test(MS.2_not2)

# оценка относительного риска library(PropCIs)

RR=(68/83)/(57/90)

t <- riskscoreci(68, 83, 57, 90, conf.level=0.95)

cat("относительный риск RR=",RR, ", 95% ДИ", t$conf.int[1], " - ", t$conf.int[2],"\n")

255

Приложение R-10

Исходные данные

Num

age.at.measure

Group

Sex

Osteocalcin

BCTX

1

15.7

HighDose

female

33.43

0.836

2

22.2

HighDose

female

35.99

1.170

3

21.3

HighDose

male

43.52

1.330

4

15.2

HighDose

female

52.36

0.919

5

10.0

HighDose

male

103.60

2.240

6

15.1

HighDose

male

86.44

1.820

7

15.8

HighDose

male

72.51

1.470

8

7.0

HighDose

male

46.65

0.901

9

21.7

HighDose

male

32.57

1.120

10

17.9

HighDose

male

42.03

0.877

11

7.4

HighDose

male

67.82

1.630

12

18.3

HighDose

female

21.04

0.568

13

5.7

HighDose

female

40.48

0.741

14

9.3

HighDose

female

43.70

1.070

15

17.3

HighDose

female

43.65

0.586

16

6.3

HighDose

male

76.78

2.120

17

6.4

HighDose

male

71.61

1.460

18

13.3

HighDose

male

30.51

0.723

19

20.0

HighDose

male

40.42

0.408

20

9.6

HighDose

female

107.10

1.860

21

5.5

HighDose

male

66.09

1.140

22

24.3

HighDose

male

17.11

0.211

23

8.4

LowDose

male

96.62

1.540

24

8.8

LowDose

male

101.30

2.480

25

17.8

LowDose

female

23.24

0.585

26

8.6

LowDose

female

83.03

1.510

27

21.2

LowDose

female

24.82

0.660

28

15.2

LowDose

male

73.47

1.130

29

26.6

LowDose

male

17.73

0.474

30

24.8

LowDose

male

30.88

0.527

31

13.8

LowDose

male

97.27

2.140

32

15.5

LowDose

female

26.03

0.519

33

12.1

LowDose

female

80.28

1.080

34

13.1

LowDose

male

111.90

1.780

35

18.0

LowDose

female

53.63

1.650

36

18.0

LowDose

male

62.95

1.010

37

20.7

LowDose

male

30.29

0.762

38

12.6

LowDose

male

114.90

2.940

39

11.6

LowDose

male

24.29

1.160

40

5.8

LowDose

female

58.73

1.260

41

13.4

LowDose

female

42.14

0.874

42

15.4

LowDose

male

59.45

1.290

43

13.6

LowDose

male

67.04

1.440

44

11.6

LowDose

male

63.40

1.560

45

17.6

LowDose

male

35.38

0.669

46

19.4

LowDose

male

25.46

0.573

47

18.7

LowDose

female

27.04

0.393

48

12.8

LowDose

female

72.90

1.550

49

14.4

LowDose

male

69.05

1.760

50

5.1

control

male

103.90

2.500

51

5.3

control

female

63.20

1.450

52

5.9

control

female

127.90

1.880

256

53

6.4

control

female

82.75

1.530

54

5.7

control

male

84.94

1.920

55

6.6

control

male

60.91

0.683

56

6.6

control

female

93.15

1.900

57

6.8

control

male

84.21

2.590

58

7.3

control

male

55.58

1.640

59

7.5

control

male

111.40

2.390

60

8.0

control

male

69.29

1.790

61

8.7

control

female

83.77

1.740

62

8.8

control

female

72.53

1.650

63

9.3

control

male

83.80

2.100

64

9.9

control

male

152.80

3.230

65

9.3

control

female

97.25

1.790

66

10.8

control

female

121.10

1.990

67

10.8

control

female

88.23

1.810

68

11.3

control

female

87.87

2.110

69

11.6

control

male

119.00

2.590

70

11.9

control

female

102.00

1.450

71

12.5

control

female

161.50

2.120

72

12.3

control

male

110.10

2.440

73

12.3

control

male

97.43

2.060

74

12.4

control

male

166.80

2.890

75

13.5

control

male

121.50

2.180

76

14.1

control

female

70.76

1.310

77

14.1

control

male

114.10

2.400

78

14.8

control

male

89.88

2.100

79

14.8

control

female

64.50

1.140

80

15.1

control

female

44.04

1.100

81

15.0

control

female

70.13

1.460

82

15.0

control

male

69.11

1.830

83

15.2

control

male

84.71

2.460

84

15.0

control

male

130.60

3.330

85

15.8

control

male

64.02

1.430

86

16.3

control

female

35.15

0.649

87

16.7

control

female

48.28

1.370

88

17.6

control

male

32.32

0.418

89

17.7

control

male

47.66

1.190

90

18.2

control

female

24.81

0.464

91

18.0

control

male

51.25

1.620

92

19.3

control

female

25.71

0.987

93

20.3

control

female

22.05

0.449

94

20.6

control

female

14.46

0.262

95

20.9

control

male

30.45

0.671

96

21.1

control

male

33.86

1.260

97

21.1

control

male

62.84

0.861

98

21.2

control

male

33.90

0.793

99

21.7

control

female

20.20

0.610

100

21.7

control

male

21.63

0.809

101

21.8

control

male

23.55

0.437

102

21.8

control

male

27.28

0.562

103

23.6

control

male

24.03

0.830

104

25.4

control

male

24.63

0.631

105

26.5

control

male

16.57

0.368

257

Скрипт R для выполнения анализа

Перед выполнением необходимо скопировать данные, сохранить в текстовом файле или файле EXCEL и импортировать их в набор данных R под именем Markers.

library(abind)

library(nortest)

library(abind)

library(e1071)

library(class)

library(lattice)

library(grid)

library(colorspace)

library(effects)

library(car)

library(effects)

Markers$Group <- factor(Markers$Group, levels=c('control','LowDose','HighDose'))

##############################################

#Наблюдения по полу и объему лечения

#Таблица 16-5

xtabs(~Group + Sex, data=Markers)

##################################################################################

# BCTX

########################################################################

#Шаг 1 предварительные исследования зависимой переменной

########################################################################

#выделение контрольной группы

control.BCTX <- subset(Markers, subset=Group=="control", select=c(BCTX))

#проверка на соответствие закону нормального распределения shapiro.test(control.BCTX$BCTX)

sf.test(control.BCTX$BCTX)

#выделение группы под воздействием

treat.BCTX <- subset(Markers, subset=Group!="control", select=c(BCTX))

# проверка на соответствие закону нормального распределения

shapiro.test(treat.BCTX$BCTX) sf.test(treat.BCTX$BCTX)

# проверка на соответствие закону нормального распределения всей выборки

shapiro.test(Markers$BCTX) sf.test(Markers$BCTX) par(family='mono') plot(density (Markers$BCTX))

# Графики Рис.16-8, Рис.16-9 trellis.device(theme="col.whitebg", family="mono")

scatterplot(BCTX~age.at.measure | Sex, reg.line=FALSE, smooth=TRUE, spread=F, boxplots='xy', cex.axis=0.8, span=0.5, jitter=list(x=1, y=1), by.groups=TRUE, data=Markers)

258

scatterplot(BCTX~age.at.measure | Group, reg.line=FALSE, smooth=TRUE, spread=F, boxplots='xy', cex.axis=0.8, span=0.5, jitter=list(x=1, y=1), by.groups=TRUE, data=Markers)

# создание бинарного предиктора контроль-лечение

Markers$Expose <- with(Markers, 1*(Group!='control')) Markers$Expose <- factor(Markers$Expose, labels=c('control','expose'))

scatterplot(BCTX~age.at.measure | Expose, reg.line=FALSE, smooth=TRUE, spread=F, boxplots='xy', cex.axis=0.8, span=0.5, jitter=list(x=1, y=1), by.groups=TRUE, data=Markers)

# группы возраста

numSummary(Markers[,"age.at.measure"], statistics=c("mean", "sd", "quantiles"),quantiles=c(0,.25,.5,.75,1))

Markers$Age.Group <- with(Markers, 1*(age.at.measure<10)+ 2*(age.at.measure>=10 & age.at.measure<15)+3*(age.at.measure>=15 & age.at.measure<=18)+4*(age.at.measure>18)) Markers$Age.Group <- factor(Markers$Age.Group, labels=c('до 10','10-14','15-18','18+'))

# Таблица 16-6

.Table <- xtabs(~Age.Group+Sex, data=Markers)

.Table

chisq.test(.Table, correct=FALSE)

#проверка на различие возраста в группа, множественное сравнение

TukeyHSD(aov(age.at.measure ~ Age.Group*Sex, data=Markers))

#Таблица 16-7

.Table <- xtabs(~Age.Group+Expose, data=Markers)

.Table

chisq.test(.Table, correct=FALSE) remove(.Table)

##################################

# Шаг 2 предварительная модель #

##################################

#предварительная модель с основными эффектами

LM.0 <- lm(BCTX ~ Age.Group+Group+Sex, data=Markers)

#Таблица 16-8 Anova(LM.0, test="F")

#Таблица 16-9 summary(LM.0)

########################################################################

#Шаг 3 провека линейной гипотезы о равенстве коэффициентов регрессии

#снижение количества параметров модели, сравнение моделей

########################################################################

#проверка линейной гипотезы о различимом воздействии выскокодозного и низкодозного воздействия linearHypothesis(LM.0, "Group[T.HighDose] - Group[T.LowDose] = 0")

#проверка линейной гипотезы о различии возрастных групп до 14 и 10-14

linearHypothesis(LM.0, "Age.Group[T.10-14] = 0")

# сокращение возрастных групп

Markers$Age.Group.BCTX <- with(Markers, 1*(age.at.measure<15)+2*(age.at.measure>=15 & age.at.measure<=18)+3*(age.at.measure>18))

259

Markers$Age.Group.BCTX <- factor(Markers$Age.Group.BCTX, labels=c('до 15','15-18','18+'))

#предварительная модель с основными эффектами

LM.1 <- lm(BCTX ~ Age.Group.BCTX+Expose+Sex, data=Markers)

#Таблица 16-10 Anova(LM.1, test="F")

# сравнение моделей anova(LM.0, LM.1, test="F")

##################################################

# Шаг 4 провека наличия эффектов взаимодействия

##################################################

LM.interaction <- stepAIC(LM.1, ~ .^2 ,direction='both', k=2,trace =T )

#Таблица 16-11 Anova(LM.interaction, test="F")

#Таблица 16-12 summary(LM.interaction)

#проверка линейной гипотезы

linearHypothesis(LM.interaction, "Expose[T.expose] + Age.Group.BCTX[T.18+]:Expose[T.expose] = 0")

##############################################

#Шаг 5 исследование остатков и выбросов

##############################################

#основные графики для исследования остатков Рис. 16-10 oldpar <- par(oma=c(0,0,3,0), mfrow=c(1,2),family='mono') plot(LM.interaction,sub.caption = "LM.interaction", which=c(1,2)) par(oldpar)

#проверка остатков

res.LM.interaction <- residuals(LM.interaction) shapiro.test(res.LM.interaction) sf.test(res.LM.interaction)

#тест на выбросы outlierTest(LM.interaction, cutoff=Inf)

#График Рис 16-11

influencePlot(LM.interaction, id.method="identify")

# влияющие наблюдения

inflm <- influence.measures(LM.interaction) summary(inflm)

##########################################################

# удаление выброса и повторение шагов подгонки модели

##########################################################

Markers.New <- Markers[-c(84),]

# Повтороение подгонки модлеи

LM.prem <- lm(BCTX ~ Age.Group+Group+Sex, data=Markers.New)

260

Соседние файлы в папке ОЗИЗО Общественное здоровье и здравоохранение