繁体   English   中英

调整分层以适应与R的混淆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM