【问题标题】:How to hold estimations in memory and write to file in bulk如何在内存中保存估计并批量写入文件
【发布时间】:2026-01-18 02:15:02
【问题描述】:

为了加快代码速度,我想将每 10 次回归的结果导出到一个文件中。是否可以执行以下操作?

forvalues i = 1(1)20{
ppmlhdfe y  ${varlist`i'}, absorb(year) cluster(year)
estimates store result`i'
if mod(`i', 10) == 0 { 
   outreg2 result* using "$outputdir1\results.csv" 
   est clear
}
}

在这个伪代码中,我的意思是我们保存每 10 次回归的结果,并清除内存中的估计值,然后转移到接下来的 10 次回归。在Stata中可以吗?

【问题讨论】:

    标签: stata stata-macros


    【解决方案1】:

    你当然可以根据循环索引做一些事情

    if mod(`i', 10) == 0 { 
    
    } 
    

    我不确定我是否理解其余代码的大部分内容。 outreg2 被要求将内容放入完全相同的文件中;我不使用outreg2,也不知道那里有什么意义。同样,从表面上看,您是在估算之前存储它们。

    这里真正的节省是什么?如果您不想看到结果,为什么还要执行回归?

    【讨论】:

    • 非常感谢您的 cmets Nick!我发现为每个回归编写结果会拖慢代码。所以我试图保存估计并每 10 次回归写一次。这样,我们就可以避免过于频繁地访问硬盘。顺便说一句,我根据你的 cmets 清理了一些伪代码。
    • 再一次,我并没有真正关注。每组结果有多大?为什么不在循环之后把它们写出来呢?
    • 如果我们导出到 csv 文件,每组结果只是一列。我对代码进行了计时,回归需要 15 秒才能完成,但写入硬盘驱动器上的文件需要 30 秒。所以我试图减少对文件的写入次数。
    最近更新 更多