Stata:将标量/全局/矩阵保存到.dta文件 - 解决方法?

时间:2015-04-21 20:47:58

标签: stata

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

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

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

我考虑了一些方法。

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

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

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

  4. 我会喜欢一种更简单的方法来保存这些标量的建议,或者是一种使上述方法之一更简单的方法。

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

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

2 个答案:

答案 0 :(得分:0)

回答你的第二点

假设变量" factorname"包含因子名称和变量"错误"包含测量误差

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

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

答案 1 :(得分:0)

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

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