#r #glm #confidence-interval
Вопрос:
В своем исследовании я рассматриваю половые различия в эффективности биологических препаратов (=тип лекарства) у пациентов с аксиальным спондилоартритом. Я рассматриваю 7 различных исходов (оценки активности заболевания) за 6, 12 и 24 месяца. Я использую GLM с биномиальным семейством для расчета относительного риска и разницы в рисках. Я хочу расширить доверительные интервалы, так как я хочу внести коррективы для многократного тестирования.
Как бы я это сделал?
Вот небольшой репрезентативный набор данных и код, который я запустил:
dat <- structure(list(gender = c(0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0,
1, 0, 1, 1, 1, 0, 0, 1), age_std = structure(c(-0.467384378359854,
-0.623520001679169, 0.703632796535007, -0.935791248317799, -1.16999468329677,
1.32817528981227, -1.16999468329677, 0.235225926577062, -0.857723436658141,
-0.389316566700197, -0.467384378359854, -0.31124875504054, -1.24806249495643,
-1.09192687163711, -0.623520001679169, -1.40419811827574, -1.79453717657403,
-1.71646936491437, -1.87260498823369, -1.09192687163711), .Dim = c(20L,
1L)), bio_drug_start_year_centered = c(-6, -2, -1, -1, -1, -9,
-1, -1, -1, -1, -1, -1, 3, 2, 0, 2, 0, 0, 1, 0), country = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("CH", "CZ", "DK", "ES", "IS", "IT", "NL",
"NO", "PT", "RO", "SE", "SF", "SI", "TR", "UK"), class = "factor"),
bio_drug_start_year = c(2007, 2011, 2012, 2012, 2012, 2004,
2012, 2012, 2012, 2012, 2012, 2012, 2016, 2015, 2013, 2015,
2013, 2013, 2014, 2013), asdas_crp_cii_6month = c(1, 1, 0,
1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0)), na.action = structure(c(`114174` = 2755L,
`116484` = 2770L, `231118` = 3050L), class = "omit"), row.names = c("463",
"7729", "7756", "8306", "8324", "128", "8440", "8450", "8663",
"8809", "8840", "8857", "9020", "9033", "9101", "9324", "9377",
"9523", "9702", "9718"), class = "data.frame")
rr = rd = numeric()
for( i in 1: 1e3){
logmod = glm( asdas_crp_cii_6month ~ gender country age_std bio_drug_start_year_centered,
family = 'binomial', data = dat[sample(1:nrow(dat),nrow(dat),replace=T),])
summary(logmod)
dat.1 = dat.0 = dat
dat.1$gender = 1
dat.0$gender = 0
p1 = predict(logmod, newdata = dat.1, 'response' )
p0 = predict(logmod, newdata = dat.0, 'response' )
rr[i] = mean(p1)/mean(p0)
rd[i] = mean(p1)-mean(p0)
}
twosidep<-function(data, test = 0){
p1<-sum(data>test)/length(data)
p2<-sum(data<test)/length(data)
p<-min(p1,p2)*2
return(p)
}
m = rbind(c(mean(rr), quantile(rr, c(0.025, 0.975)), twosidep(rr, test = 1) ),
c(mean(rd), quantile(rd, c(0.025, 0.975)), twosidep(rd) ))
rownames(m) = c('rr', 'rd')
colnames(m) = c('Estimate', 'Lower CI', 'Upper CI', 'p-value')
m
Вот вывод кода
Estimate Lower CI Upper CI p-value
rr 0.6337688 0.1612215 1.1929914 0.25
rd -0.3050054 -0.5731631 0.1239957 0.25
Вопрос: Как я могу увеличить эти доверительные интервалы с помощью метода коррекции Бонферрони?
Комментарии:
1. Вместо того, чтобы пытаться найти функцию, вам сначала нужно определить, существует ли статистический метод, подходящий для ваших данных, чтобы выполнить то, что вы хотите. Сначала вам следует обратиться за статистической помощью в Перекрестную проверку . Как только вы узнаете, какой метод подходит, вам будет легче найти, как выполнить это действие в R. Вам нужно точно знать, как вы хотите исправить для многократного тестирования.
2. Я должен был добавить это в вопрос. Я хочу использовать коррекцию бонферрони.