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

分类暴露变量线性回归结果导出问题求助

解决分类暴露变量线性回归结果仅输出第一组的问题

你的问题出在只提取了回归结果矩阵的第一列,而分类变量(比如rep78)生成的多个哑变量对应矩阵的不同列。下面我会帮你修改代码,让它能输出所有分类水平的回归结果:

问题根源分析

原代码中local beta = table[1,1]这类语句固定取矩阵的第1列,而当你用i.rep78时,Stata会生成4个哑变量(对应rep78的2-5水平,以1为参照),每个哑变量的结果对应r(table)矩阵的第2到第5列(第1列是截距项)。所以你需要循环遍历矩阵的每一列,把每个哑变量的结果都写入到临时文件中。

修改后的完整代码

* 针对分类暴露变量的修正版代码
sysuse auto.dta, clear
describe
summ

postfile temp str40 exp str40 outcome str40 adjusted N beta se lci uci pval using ///
    "\test.dta", replace

foreach out in price weight {
    foreach exp_var in rep78 {  // 直接用变量名,后续用i.前缀处理分类逻辑
        foreach adjust in 1 {
            if `adjust'==1 local adjusted_vars "mpg"
            
            // 用i.前缀生成分类变量哑变量,替代xi命令(更现代的Stata写法)
            reg `out' i.`exp_var' `adjusted_vars'
            
            local N = e(N)
            matrix table = r(table)
            local cols = colsof(table)  // 获取结果矩阵的总列数
            
            // 循环遍历每一列,跳过截距项(第1列),处理所有分类哑变量
            forvalues j=2/`cols' {
                // 获取当前列对应的哑变量名称(比如rep78_2、rep78_3等)
                local varname: colnames table[,`j']
                // 提取该哑变量的回归结果
                local beta = table[1,`j']
                local se = table[2,`j']
                local lci = table[5,`j']
                local uci = table[6,`j']
                local pval = table[4,`j']
                
                // 将结果写入临时文件
                post temp ("`varname'") ("`out'") ("`adjusted_vars'") (`N') ///
                    (`beta') (`se') (`lci') (`uci') (`pval')
            }
        }
    }
}

postclose temp
use "\test.dta", clear
export excel using "\test.xlsx", firstrow(variables)

关键修改点说明

  1. 变量名优化:把foreach exp in i.rep78改成foreach exp_var in rep78,后续用i.前缀在回归中生成哑变量,这样更容易提取每个哑变量的具体名称。
  2. 矩阵列循环:用colsof(table)获取结果矩阵的总列数,从第2列开始循环(跳过第1列的截距项),确保每个分类水平的结果都被提取。
  3. 哑变量名称提取:通过local varname: colnames table[,j']获取当前列对应的变量名,让输出的exp列能清晰显示具体的分类水平对比(比如rep78_2`代表rep78=2 vs 参照组rep78=1)。
  4. 语法现代化:用i.前缀替代xi:命令,这是现代Stata推荐的分类变量处理方式,语法更简洁且兼容性更好。

修改后,rep78变量的4个哑变量结果都会被写入Excel,每个水平对应一行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:52:49