You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:57:04