R中dagitty包adjustmentSets输出转回归公式的实现方法
dagitty调整集自动转回归公式实现
基础代码
library(dagitty) g1 <- dagitty( "dag { W1 -> Z1 -> X -> Y Z1 <- V -> Z2 W2 -> Z2 -> Y X <-> W1 <-> W2 <-> Y }") adjustmentSets(g1, 'Z1', 'X') # 输出:{ W1 }
转换规则
- 因变量取
adjustmentSets()的第三个传入参数 - 固定自变量取
adjustmentSets()的第二个传入参数 - 额外自变量从
adjustmentSets()输出的调整集中提取,存在多个调整集时任选其一即可
转换示例:
调整集输出为{ W1 }→ 输出X ~ Z1 + W1
调整集输出为{ W1, W2}→ 输出X ~ Z1 + W1 + W2
调整集输出为{W1 W2} {Z2 Z1}→ 可输出X ~ Z1 + W1 + W2或X ~ Z1 + Z2
实现代码
library(dagitty) # 构造DAG g1 <- dagitty( "dag { W1 -> Z1 -> X -> Y Z1 <- V -> Z2 W2 -> Z2 -> Y X <-> W1 <-> W2 <-> Y }") # 配置参数 exposure_var <- "Z1" # adjustmentSets第二个参数:固定自变量 outcome_var <- "X" # adjustmentSets第三个参数:因变量 # 获取调整集,默认取第一个有效调整集 adj_sets <- adjustmentSets(g1, exposure = exposure_var, outcome = outcome_var) chosen_covariates <- if(length(adj_sets) >= 1) adj_sets[[1]] else character(0) # 生成回归公式 all_ind_vars <- c(exposure_var, chosen_covariates) reg_formula <- reformulate(all_ind_vars, response = outcome_var) # 打印验证 print(reg_formula)
运行上述代码输出结果为:X ~ Z1 + W1
完全符合预期要求。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

