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

如何在Stata中创建非互斥分类变量并完成风险回归分析

解决Stata中既往病史组合变量赋值覆盖问题

方案1:创建包含所有疾病组合的互斥分类变量

你的原始代码出现赋值覆盖,是因为未排除同时患有其他疾病的情况。要生成所有8种可能的疾病组合(无疾病、仅高血压、仅哮喘、仅糖尿病、高血压+哮喘、高血压+糖尿病、哮喘+糖尿病、三种疾病都有),可采用以下两种方式:

方式一:多条件判断赋值

gen disease_group = 0  // 0=无任何疾病
replace disease_group = 1 if hypertension==1 & asthma==0 & diabetes==0  // 仅高血压
replace disease_group = 2 if hypertension==0 & asthma==1 & diabetes==0  // 仅哮喘
replace disease_group = 3 if hypertension==0 & asthma==0 & diabetes==1  // 仅糖尿病
replace disease_group = 4 if hypertension==1 & asthma==1 & diabetes==0  // 高血压+哮喘
replace disease_group = 5 if hypertension==1 & asthma==0 & diabetes==1  // 高血压+糖尿病
replace disease_group = 6 if hypertension==0 & asthma==1 & diabetes==1  // 哮喘+糖尿病
replace disease_group = 7 if hypertension==1 & asthma==1 & diabetes==1  // 三种疾病都有

// 给分组添加标签,方便后续分析查看
label define group_label 0 "无疾病" 1 "仅高血压" 2 "仅哮喘" 3 "仅糖尿病" 4 "高血压+哮喘" 5 "高血压+糖尿病" 6 "哮喘+糖尿病" 7 "三种疾病"
label values disease_group group_label

方式二:编码计算生成(更简洁)

利用二进制编码思路,给每个疾病分配权重,直接计算唯一分组值:

gen disease_group = hypertension*4 + asthma*2 + diabetes*1
// 此时0=无疾病,1=仅糖尿病,2=仅哮喘,3=哮喘+糖尿病,4=仅高血压,5=高血压+糖尿病,6=高血压+哮喘,7=三种疾病
// 添加标签
label define group_label 0 "无疾病" 1 "仅糖尿病" 2 "仅哮喘" 3 "哮喘+糖尿病" 4 "仅高血压" 5 "高血压+糖尿病" 6 "哮喘+糖尿病" 7 "三种疾病"
label values disease_group group_label

方案2:直接用多变量回归计算单疾病风险比(无需组合变量)

如果你的目标是像表格中那样,分别计算每种疾病的风险比(调整其他疾病影响),无需创建组合变量,直接将三个二分类变量纳入logistic回归即可,以无疾病(三个变量均为0)为参考组:

// 假设不良反应变量为binary型:adverse(1=出现,0=未出现)
logistic adverse hypertension asthma diabetes, or

回归结果中,每个疾病变量的OR值就是该疾病相对于无疾病人群的风险比(已调整另外两种疾病的影响)。

内容的提问来源于stack exchange,提问作者Becky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:35:19