![](/img/trans.png)
[英]Statistical methods in tableone in r for categorical variable stratification
[英]Stratification to adjust for confounding with R
我有4次暴露(或属性)(每个都是二进制数据,例如高/低,真/假,红色/蓝色)和1种疾病结果(真/假患病)的数据。
我想计算每次接触导致疾病结果的相对风险,同时控制混淆。
我更喜欢使用分层,但是有4次曝光是很多层次。 但是,如果有一种简便的方法,我将接受多元分析。 分层是指这里描述的https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5384727/
是否有软件工具可以帮助我输入包含5列的表格(4次暴露,1种疾病结果)并按层生成相对风险值(置信区间为95%)?
数据结构为(前3列为曝光,最后一列为结果)。 这些只是示例性的暴露,以说明我的意思,而不是我的实际暴露和结果:
| 吃过早餐| 行使| 睡了超过7小时| 很开心|
| 真实| 错误 真实| 错误
| 错误 真实| 真实| 真实|
| 错误 真实| 错误 错误
我无法为您提供分层服务,但是在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)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.