Stata:处理大型数据的一些建议
2025-01-20
毕英睿
2661

连享会   主页 || 推文 || 知乎 || B 站 || 在线课堂

New! 搜推文,找资料,用 lianxh 命令:
安装: ssc install lianxh, replace
使用: lianxh 合成控制
       lianxh DID + 多期, w



作者:毕英睿 (中央财经大学)
邮箱judybi2017@163.com

编者按:本文主要整理自「faster to re-load data or preserve/restore?」,特此致谢!

  • Title:Stata:处理大型数据的一些建议
  • Keywords:Stata,大型数据,preserve,restore,compress,fast,gcollapse

1. 处理需求

在频繁根据不同规范折叠数据并运行回归时,如果数据量较大,通常需要 15-30 秒完成一次操作。那么,是重复使用 restore/preserve 更高效,还是每次直接清除 (clear) 并重新加载 (reload) 数据集更节省计算成本?

2. 解决办法

2.1 恢复数据

preserve 命令用于保留当前数据,确保程序结束后数据可以恢复;restore 命令则用于强制恢复之前的保存状态。例如,如果需要观察删除部分数据后的样本,可以先使用 preserve 保存数据,删除部分数据后进行分析,再通过 restore 恢复已删除的样本。为确保数据完整性,可通过 preserve-restore 搭配处理数据。

. use auto, clear
. preserve
. drop in 1/15 // 删除前15行数据
. des          // 此时有59个观察值
. restore
. des          // 此时恢复到74个观察值

set max preservemem 的默认值为 1GB。如果将 amt 设置为 0B,preserve 会始终使用磁盘存储;如果设置为 .preserve 会使用操作系统允许的最大内存量。为提高速度,Stata MP 优先将数据集保存在内存中,只有当内存使用达到 max preservemem 限制时,才会切换到使用磁盘存储。而 Stata SE 和 Stata BE 通常运行在内存较少的设备上,因此始终将数据集存储在磁盘上。

2.2 修剪数据

请尽量精简数据,仅保留必要的观测值和变量。

尽量选择占用空间较小的数据类型。例如,double 类型比 string 类型占用的空间大 8 倍。使用 describe 命令可查看数据类型,使用 compress 命令可通过优化数据类型来压缩数据大小。

原类型 压缩类型
doubles longs, ints, bytes
floats ints or bytes
longs ints or bytes
ints bytes
str#s shorter str#s
strLs str#s
. use auto.dta, clear
. des
. compress
  variable mpg was int now byte
  variable rep78 was int now byte
  variable trunk was int now byte
  variable turn was int now byte
  variable make was str18 now str17
  (370 bytes saved)

2.3 fast 命令

使用 collapse 命令结合 fast 选项。collapse 用于分组统计并生成汇总数据集。添加fast选项可提高效率,但若用户中断 (Break),原始数据集将无法恢复。

. collapse price mpg, by(foreign)
. list //样本数据仅保留汇总数据集

     +------------------------------+
     |  foreign     price       mpg |
     |------------------------------|
  1. | Domestic   6,072.4   19.8269 |
  2. |  Foreign   6,384.7   24.7727 |
     +------------------------------+

2.4 使用 gcollapse 命令

除了上述方法,还可以使用 gcollapsefcollapse 命令。其中,fcollapse 新增了 append 选项,可将汇总数据附加到原始数据集末尾。

更多内容,可以参考连享会推文:

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 数据处理, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

推荐课程:机制分析专题

推荐课程:生成式 AI 助力学术研究专题

资源共享


尊敬的老师 / 亲爱的同学们:
连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。
请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。
我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。more……
  • 扫码加入连享会微信群,提问交流更方便

最新课程:

A. 2025 暑期班:连玉君+张宏亮

B. 社会网络分析:杨张博

C. 政策优化和机制分析:杨海生

D. AI+学术研究专题:杨阳

E. ⚡ 系列公开课

  • 共八次:Python环境配置; 大语言模型应用; IV 估计; 微观数据清洗; 中介效应 (查看)
  • 参与方式: 网络直播 (7.3-24 日),扫码进群即可参与

FAQ往期课程板书和答疑文档

选题征集,点击 此处 或者扫码填写问卷留下您的宝贵意见,感谢!


NEW!视频课堂lianxh-class.cn

⚡ 新版 lianxh 命令:使用说明
. ssc install lianxh, replace
. lianxh 多期DID

ihelp:帮助文件 PDF 版
. ssc install ihelp, replace
. ihelp xtreg


lianxh_cn_saoma

连玉君 · Stata 33 讲 - 免费
  o 点击观看dofile 下载, --Book--