如何在Stata中对多个数据集指定观测行运行模型并存储结果
Stata 多数据集建模结果存储实现方案
你要的功能可以通过Stata的循环语句、样本限定语法和模型结果存储命令实现,完整代码及说明如下:
核心对应逻辑
和你熟悉的R操作对应:
- Stata的
in 1/4000等价于R里的dataset[1:4000,],用来限定仅使用前4000条观测建模 - Stata的
estimates store 模型名等价于R里的model1.1 <- lm(...),用来存储模型运行结果 - Stata的
estimates replay 模型名等价于R里的summary(model1.1),用来查看存储的模型汇总结果
完整运行代码
假设你的11个数据集命名为dataset1.dta到dataset11.dta,且都放在Stata当前工作目录下:
* 先清空之前存储的所有模型结果,避免冲突 estimates clear * 循环处理11个数据集 forvalues i = 1/11 { * 加载第i个数据集 use "dataset`i'.dta", replace * 仅用前4000条观测运行指定模型,存储模型结果 meoprobit Y X1 X2 X3 || LVL: in 1/4000 estimates store model1_`i' * 可选:如果需要把单个模型的汇总结果单独存为本地文件,可保留下面这行 estimates table model1_`i', stats(N ll r2_p) b(%9.3f) se(%9.3f) p(%9.3f) /// title("Dataset`i' Model1 Summary") using "model1_`i'_summary.txt", replace }
后续常用操作
- 查看单个模型的汇总结果:比如要查看第3个数据集的模型结果,执行
estimates replay model1_3即可 - 导出所有模型的汇总结果到同一张CSV表:
先安装esttab扩展(仅需安装一次):ssc install esttab, replace
再执行导出命令:esttab model1_* using "all_model1_result.csv", b(%9.3f) se(%9.3f) p(%9.3f) scalars(N ll r2_p) nogap replace - 测试集预测:如果需要在每个数据集剩余的3000条观测(第4001-7000行)上生成预测值,在
meoprobit命令后加一行predict y_hat if inrange(_n,4001,7000)即可,预测值会存储在新生成的y_hat变量中。
内容的提问来源于stack exchange,提问作者Hercules Apergis
相关产品推荐
相关产品推荐

