【问题标题】:Stata: saving scalars/globals/matrices to .dta file - workaround?Stata:将标量/全局/矩阵保存到 .dta 文件 - 解决方法?
【发布时间】:2015-04-21 20:47:57
【问题描述】:

我计算许多不同测量的预测因子得分以及这些因子得分的测量误差,然后删除这些测量。我删除了这些措施,因为我的数据很大;我不希望在我运行分析的大型数据集中使用 RAM 进行所有测量。

对于我的分析,我对因素和其他变量进行回归。我可以通过使用这些因子得分的测量误差来校正测量误差的回归系数。但是,我想不出一种方便的方法来将与每个因素相关的测量误差保存到 .dta 文件中。

为什么我不在一个 Stata 会话中运行所有这些,从而消除了保存标量/宏/矩阵的需要? 我在服务器和 PC 上工作。服务器有很多内存和处理能力,但是使用起来很不方便。所以我经常把我的工作分成两个阶段。首先,我清理数据并减少变量计数(在这种情况下,从大量度量中计算因子得分)。当我使用多个 reshape 命令时,清理数据本身通常会占用大量内存。然后我将清理后的数据保存到 .dta 文件中,并在我的 PC 上进行处理。清理后的数据足够小,可以在我的 PC 上运行,并且不需要那种使用过多 RAM 的操作。

我考虑了几种方法。

  1. 为每个因素的测量误差创建一个变量。 而 这可以工作,我不喜欢它有几个原因:A)这是对内存的浪费。每个因子变量我只需要一个标量,但我正在为这个变量创建 _N 个单元格。虽然我可以通过明智地删除变量或使用其他变通方法使数据集适合内存,但我想要一个更好的解决方案。 B) 这似乎在概念上是错误的。

  2. 创建一个包含所有标量值的变量,以及包含这些标量名称的第二个变量(即, 他们关联。我无法完成这项工作。如何提取每个非缺失 _n 的值并将其放入 Stata 矩阵或 Mata 矩阵?或者,如何创建一组宏,其中宏名称来自包含名称的变量,而宏值来自包含标量的变量?

  3. 以某种方式直接保存标量/宏/Mata 矩阵/Stata 矩阵并在打开 .dta 文件后加载。 显然,Stata 不保存标量、宏、Mata 矩阵或 Stata矩阵到 .dta 文件。因此,Stata 中不存在最方便和最明显的解决方案。我看到其他人建议将标量放入 mata 矩阵,然后将 mata 矩阵加载到内存中并保存为 .dta 文件。然后我可以打开这个文件,将它保存到一个 mata 矩阵,然后加载我想要处理的数据。所有这一切似乎都不必要地复杂,我希望有更好的方法。

我希望提供一种保存这些标量的更简单方法的建议,或者让上述方法之一更简单的方法。

这很令人沮丧。虽然 Stata 非常强大且易于用于各种事情,但它也有这些令人沮丧的“漏洞”,您可以花一整天时间尝试使您认为非常简单的事情工作。

令人惊讶的是,最简单的解决方案是将标量复制到电子表格并手动输入。这不是一个自动化的解决方案,但我意识到这可能只需要我一刻钟的时间,而不是我需要花费大量时间来实现自动化。

【问题讨论】:

  • 我看到你在这个非常冗长的解释上付出了努力,但最好是用example code 来补充。如果我了解细节,我会很乐意提供帮助(我怀疑更多的文字本身可以帮助我弄清楚。)
  • 参见help mkmat,从矩阵到变量,反之亦然。
  • 不幸的是,它并不是真正的调试问题。它更多的是试图找到一些隐藏的 Stata 功能。
  • 不一定非要调试才能用代码补充。

标签: stata


【解决方案1】:

回答你的第二点

假设变量“factorname”包含因子名称,变量“error”包含测量误差

forval i = 1/`=_N'{
   local factor_`=factorname[`i']' = error[`i']
}

将创建包含测量错误的_N本地。

【讨论】:

  • 谢谢,这很有用。
【解决方案2】:

您的冗长介绍并没有让读者了解您正在处理的数据的大小顺序。有多少因素?每个人的平均措施数?观察?此外,您没有提供一些代码,因此很难为您提供帮助。

无论如何,我会避免创建变量。 estimates save *whatever.dta* 不适用于您的情况吗? 如果您真的想将估计结果存储在宏中以将其加载到另一个 Stata 会话中,那么您不能直接将它们保存在 .dta 文件中。 但是,您仍然可以将宏关联到数据集,然后在定义 characteristics 之后检索它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多