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

如何用nlcom还原的原始参数替换esttab表格中的转换参数?

解决Stata中替换回归参数并合并结果的方法

要实现将nl估计的转换参数替换为nlcom还原的原始参数,且不新增结果列,核心是手动修改估计结果的系数向量(e(b))和方差矩阵(e(V)),具体步骤如下:

1. 运行基础回归并保存原始估计信息

先执行nl回归,同时保存初始的系数和方差矩阵:

sysuse auto, clear
est clear

// 运行非线性回归,用转换参数lna
nl (price = exp({lna}) * length + {c}), nolog
// 保存原始系数和方差矩阵
matrix b_orig = e(b)
matrix V_orig = e(V)
// 按需保存其他统计量,比如样本量、R²等
scalar N_orig = e(N)
scalar r2_orig = e(r2)

2. 用nlcom计算还原后的参数

执行nlcom计算原始参数,但不使用post选项,避免新增结果:

// 计算还原后的参数a=exp(lna),不post
nlcom a: exp(_b[lna:_cons])
// 保存nlcom得到的系数和方差
matrix b_nlcom = e(b)
matrix V_nlcom = e(V)

3. 修改系数向量和方差矩阵

将原始矩阵中的lna参数替换为nlcom得到的a,同时修改矩阵的列名/行名:

// 替换系数向量
matrix b_new = b_orig
// 定位lna的位置并替换为a的系数
matrix b_new[1, coln(b_new, "lna:_cons")] = b_nlcom[1, "a:_cons"]
// 修改列名为原始参数名a
matrix colnames b_new = "a:_cons" "c:_cons"

// 替换方差矩阵
matrix V_new = V_orig
// 替换lna对应的方差项为a的方差
matrix V_new[coln(V_new, "lna:_cons"), coln(V_new, "lna:_cons")] = V_nlcom[coln(V_nlcom, "a:_cons"), coln(V_nlcom, "a:_cons")]
// 修改方差矩阵的行列名为原始参数名
matrix colnames V_new = "a:_cons" "c:_cons"
matrix rownames V_new = "a:_cons" "c:_cons"

4. 赋值回估计结果并保存

将修改后的矩阵赋值回e(b)和e(V),同时还原之前保存的其他统计量,最后保存修改后的估计结果:

// 将新的系数和方差矩阵写入ereturn
ereturn post b_new V_new, esample(`e(sample)')
// 还原其他统计量
ereturn scalar N = N_orig
ereturn scalar r2 = r2_orig
// 保存修改后的估计结果
estimates store modifiedReg

5. 输出结果

用esttab输出修改后的结果,此时列中显示的就是还原后的参数57.20,而非转换参数4.047:

esttab modifiedReg, se star(* 0.1 ** 0.05 *** 0.01)

关键说明

  • 必须手动修改e(b)和e(V):因为nlcom, post会生成新的估计结果集,无法直接替换原回归的参数;通过修改这两个核心矩阵,能直接更新原回归的结果展示。
  • 需保留必要统计量:除了系数和方差,样本量、R²等统计量需要手动还原,否则输出表格会缺失这些信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:15:12