我想计算每次暴露导致疾病结果的相对风险,同时控制混淆。
我更喜欢使用分层,但对于4次曝光,这是很大的层次。但如果有简单的方法,我会对多变量分析持开放态度。这里所说的分层,指的是https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5384727/
有没有软件工具可以帮助我输入一个有5列(4次暴露,1次疾病结果)的表,并按层生成相对风险值( 95%置信区间)?
数据结构是(前3列是曝光,最后一列是结果)。这些只是样本曝光,以说明我的意思,而不是我的实际曝光和结果:
吃过早餐|锻炼过|睡眠超过7小时|快乐
true | false | true | false
false | true | true | true
false | true | false | false
发布于 2019-01-04 18:07:00
我不能帮助你进行分层,但是在R中做多元逻辑回归是相当简单的。
首先是一些示例数据。
三个二元解释变量和一个二元响应变量的350个样本。我还在两个解释变量之间添加了一个交互。
set.seed(1)
n <- 350
v1 <- sample(0:1, n, r=TRUE)
v2 <- sample(0:1, n, r=TRUE)
v3 <- sample(0:1, n, r=TRUE)
re <- 0.6*v1 + 0.8*v2 + 0.6*v3 + v1*v3 + rnorm(n)
re <- re > 1.3
dtf <- data.frame(re, v1, v2, v3)然后我们回归。
# full model
mod0 <- glm(re ~ v1*v2*v3, data=dtf, family=binomial(link="logit"))
summary(mod0)
# full model minus three-way interaction
mod1 <- glm(re ~ v1*v2*v3 - v1:v2:v3, data=dtf, family=binomial(link="logit"))
summary(mod1)
# v1:v3 as only interaction
mod2 <- glm(re ~ v1+v2+v3 + v1:v3, data=dtf, family=binomial(link="logit"))
summary(mod2)
anova(mod0, mod1, mod2)
# odds ratio coefficients and confidence intervals
library(MASS)
exp(cbind(coef(mod2), confint(mod2)))由于这些是逻辑回归(使用logit链接函数),因此响应不是根据风险比,而是对数赔率比。如果你想估计风险比率,那么严格地说,它不是逻辑回归,因为你必须使用对数作为连接函数。通常不建议这样做,但可以这样做。
mod3 <- glm(re ~ v1+v2+v3 + v1:v3, data=dtf, family=binomial(link="log"),
start=c(log(mean(re)), 0, 0, 0, 0))
summary(mod3)
# risk ratio
exp(cbind(coef(mod3), confint(mod3)))https://stackoverflow.com/questions/53974276
复制相似问题