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

如何在Stata回归循环中提取BMI显著结果并导出至Excel

Stata实现提取BMI显著的代谢物结果并导出Excel

完整代码

// 创建空数据集存储结果
clear
set obs 0
gen metabolite = ""  // 代谢物名称
gen bmi_coef = .     // BMI回归系数
gen bmi_p = .        // BMI的P值
gen ci_lower = .     // 95%置信区间下限
gen ci_upper = .     // 95%置信区间上限
save "bmi_significant_results.dta", replace

// 加载你的原始数据集
use "你的原始数据集路径及名称.dta", clear

local counter = 0
local counter_pos = 0
local counter_neg = 0

foreach outcome of varlist B - Z {
    regress `outcome' bmi Age i.sex i.smoking i.lpa2c i.cholestrol
    matrix M = r(table)
    
    // 判断BMI结果是否显著
    if M[4, 1] < 0.05 {
        local ++counter
        _b[bmi] < 0 ? local ++counter_neg : local ++counter_pos
        
        // 将当前显著结果追加到结果数据集
        preserve
        use "bmi_significant_results.dta", clear
        set obs `=_N + 1'
        replace metabolite = "`outcome'" in `=_N'
        replace bmi_coef = _b[bmi] in `=_N'
        replace bmi_p = M[4, 1] in `=_N'
        replace ci_lower = M[5, 1] in `=_N'
        replace ci_upper = M[6, 1] in `=_N'
        save "bmi_significant_results.dta", replace
        restore
    }
}

// 输出统计结果
display as text "显著结果总数: " as result `counter'
display as text "正关联数量: " as result `counter_pos'
display as text "负关联数量: " as result `counter_neg'

// 导出结果到Excel
use "bmi_significant_results.dta", clear
export excel using "bmi显著代谢物结果.xlsx", firstrow(variables) replace

关键说明

  • 结果存储机制:先创建空数据集,避免循环中临时变量丢失信息,每次捕获到显著结果就追加进去。
  • 结果提取逻辑:r(table)矩阵中,第4行对应P值、第5-6行对应95%置信区间,第1列对应BMI变量的结果;_b[bmi]直接调用BMI的回归系数。
  • 数据集切换:用preserve和restore保证原始数据集的循环操作不被打断,同时完成结果的追加存储。
  • Excel导出:firstrow(variables)参数会把变量名设为Excel表头,方便直接查看。

注意事项

  • 替换代码中"你的原始数据集路径及名称.dta"为你实际使用的文件路径。
  • 确认varlist B - Z覆盖了你所有1000种代谢物的变量,若变量命名规则不同,需调整该范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:50:23