簡體   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