查看原文
其他

国外教授整理了高效使用Stata的48个小技巧, 制作动图的代码爱了!

计量经济圈 计量经济圈 2022-10-31
凡是搞计量经济的,都关注这个号了
稿件:econometrics666@126.com
所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.
密西西比州立大学Todd Jones教授为大家分享了一些有用的Stata tips,包括很多实证研究中的数据清洗、动图制作、给图片上色,以及其他提供Stata使用效率的小技巧。
现将其整理出来供中青年学者学习和使用。参考:Stata数据管理,绘图,检验,实证方法操作,结果输出的187篇文章!

正文

1.要检查变量在组内是否为常数,可以执行以下操作:
bysort group: assert var==var[1]
没有错误意味着你的变量是恒定的 w/i 组。

2.回归后,可以使用“r(table)”直接得到95%置信区间、p值、标准误、beta等。
sysuse auto2, clear
reg trunk weight
matrix list r(table)
local weight_lower_95ci = r(table)[5,1]
di "`weight_lower_95ci'"

3.如果想查看变量的频率,“fre”会同时显示值和标签,而“tabulate”则不会。使用“fre”:
ssc install fre
fre variable_name

4.要快速查看每个变量有多少观测值缺失,请使用“mdesc”:
ssc install mdesc
mdesc

5.keep if inlist(state, "AL", "AK", "AZ")
与下面这个语句相同:
keep if state=="AL" | state=="AK" | state=="AZ"
keep if inrange(distance, 10, 91)
与下面这个语句相同:
keep if distance>=10 & distance<=91

6.要快速比较两个变量,以查看第一个变量的值高于、低于和等于第二个变量的频率,可以执行以下操作:
compare var1 var2

7.可以使用 tempfiles 来保存临时文件,然后重复加载数据。当退出 Stata 时,它们会被删除。例如:
tempfile a
save a'
然后,
use `a', clear
或者
merge m:1 id using `a'

8.如何使 Do-File Editor 中的 locals 和 tempfiles 在命令窗口下工作。

9.要为多个变量制作单向频率表,请使用 "tab1":
sysuse auto2, clear
tab1 make price mpg
tab1 *

10.要检验变量的观察值是否唯一(即没有重复值),请使用“isid”。没有输出任何结果意味着它是唯一的。
sysuse auto2, clear
keep if _n<15
isid make
isid gear_ratio
isid turn
*检验观察值是否在组内是唯一的
isid gear_ratio turn

11.要使文本的颜色变为红色,可以执行以下操作:
di in red 123*456
di in red "this text is red"

12.“estout”和“outreg2”很好,但他们并不能总是做研究者想做的事。可以切换到完全可定制的“texdoc”输出命令。

13.要让 Stata 在运行完代码后播放声音,请选择“播放带有通知的声音”选项 (Mac/Stata MP 17.0)。
而使用“哔”来让 Stata 发出哔哔声。
你也可以使用“statapush”让Stata在运行结束时给你手机发消息。

14.要查看你的代码运行需要多长时间,请使用“计时器”:
timer clear
timer on 1
forvalues i=1/1000000 {
di "`i'"
}
timer off 1
timer list

15.可以通过在颜色后添加“%X”来为图表添加不透明度,其中 0≤X≤100:
sysuse sp500, clear
replace high = high+80
twoway (hist high, width(20) color(blue%50)) (hist low, width(20)  color(red%50)), schemeddd(s1mono) legend(order(1 "Blue" 2 "Red"))

16.使用“ssc hot”查看最受欢迎的用户贡献的 SSC Stata 包:
ssc hot, n(100)

17.在两位数的美国州缩写、州名和州 FIPS 代码之间使用“statstatates”。
capture ssc install statastates
sysuse census, clear
keep state2
statastates, abbreviation(state2) nogen
replace state_name = strproper(state_name)

18.使用 bysort 时,假设你有一个要排序的变量,但不是group by什么。此时,将此变量放在括号中:
sysuse census, clear
*保留每个区域内人口最少的州,因此按每个区域内的人口排序:
bys region (pop): keep if _n==1

19.在命令窗口中检索上一行代码:
"fn"+"up arrow" (Mac)
"Page Up" (PC)
"Control"+"R" (Mac or PC)

20.在做一些涉及随机性的事情时——例如使用“runiform()”创建变量或使用“sample”获取随机样本——首先使用“set seed”来确保可重复性。
sysuse auto, clear
set seed 42
gen r=runiform()
sample 15

21.以下是如何使用除一个变量之外的所有变量创建局部变量:
sysuse auto2, clear
ds
local vars r(varlist)'
di "`vars'"
local remove_vars "make"
local vars_new: list vars - remove_vars
di "`vars_new'"

22.对变量重新命名:
sysuse census, clear
foreach var of varlist all {
rename var'var'42
}

23.如果你有一个长字符串变量,然后缩短其值,请使用“compress”来缩短变量,这使得数据编辑器更好看。
sysuse auto2, clear
replace make = "This is a long string...." in 1
replace make = substr(make, 1, 6)
compress

24.用"trim"去掉字符串变量的前面和后面的空格:
clear all
input str12 str
"String A    "
"   String B "
"    String C"
end
replace str = trim(str)
compress

25.制作动画图表:
sysuse uslifeexp, clear
forv i = 1900/1999 {
sc le_m le_f if year==i', ti(i') sch(s1mono) ysc(r(35 80)) xsc(r(40 80)) yla(40(10)80) xla(40(10)80)
gr export `i'.png, replace
}
[Mac] Terminal - cd to dir, then:
convert *.png a.gif

26.使用“mscatter”创建带有颜色渐变的散点图。
cap ssc inst mscatter
cap ssc inst palettes
sysuse sp500, clear
mscatter change close if inrange(change, -30, 30), msymbol(O) msize(7) sch(s1mono) over(change) colorpalette(viridis)

27.你可以使用“return list, all”和“ereturn list, all”(和“return list, all”)来显示所有存储的结果。“creturn list”显示其他参数。
sysuse auto2, clear
reg w g
ereturn list, all
return list, all
matrix list r(table)
creturn list
di "`c(pi)'"

28.使用“n”来获取当前的观察数,使用“N”获取最大 obs。
sysuse auto2, clear
keep rep78 sort rep78
*观测值数:
gen n = _n
*组别内的观测值数:
bys rep78: gen group_n = _n
*最大观测值:
gen N = _N
*在组别内的最大观测值:
bys rep78: gen group_N = _N

29.运行一个非常非常大的循环?在输出中添加点,以便你知道自己在哪里!例如,下面的运行了 1100 多个变量。_dots 是一个隐藏的程序员命令。0 显示 . & 1 显示一个 X。因此你还可以使用 if else 条件构建检查程序。

30.要创建自己的函数(称为“程序”):
pr s_pr, rclass
args x y
*以locals的身份访问 args
gen sum = x' +y'
reg turn sum
local rss = e(rss)
**展示结果
return local rss
end
*运行程序; x=length, y=trunk
s_pr length trunk
*打印结果
di "`rss'"

31.使用“bysort”时不能直接按降序排序。gsort是一个解决方法:
sysuse auto2, clear
*并不起作用:
bys foreign (-turn): gen n=_n
*代替使用gsort试试:
gsort foreign -turn
by foreign: gen n = _n

32.如果排序变量是非字符串,你可以这样做:
sysuse auto2, clear
gen turn_rev = -turn
bys foreign (turn_rev): gen n=_n
drop turn_rev
但是请注意,根据你的操作,可能会以不同的方式处理确切的关系。

33.使用“gsort”按降序排序:
sysuse auto2, clear
*升序:
gsort mpg
*降序:
gsort -mpg

34.使用“moreobs”为你的数据添加额外的观测值结果:
ssc install moreobs
sysuse auto2, clear
moreobs 10
sort make

35.使用“egen”命令时使用“ereplace”替换:
*典型的方式:
sysuse auto2, clear
*不起作用:
replace mpg = max(mpg)
*代替的方法:
egen mpg2 = max(mpg)
drop mpg
rename mpg2 mpg
*更好的方法:
ssc install ereplace
sysuse auto2, clear
ereplace mpg = max(mpg)

36.你可以使用动画地图 显示随时间和空间的变化:
ssc inst maptile
ssc inst spmap
maptile_install using "http://files.michaelstepner.com/geo_state.zip"
sysuse census, clear
ren (state state2) (q state)
g year = _n+1900
fillin state year
bys s: replace me = 0 if me==.
forv i = 1914/1928 {
maptile me if y==i', geo(state) twopt(title(i') legend(off))
gr export `i'.png, replace
}
[Mac] Terminal - cd to dir, then:
convert *.png a.gif

37.“substr”是从字符串中提取字符的一种方法。格式:“substr(var, X, Y)”,其中 X 是第一个位置,Y 是要提取的字符数。
sysuse auto2, clear
*获取字符串的前两个字母
gen first = substr(make, 1, 2)

38.检查是否 obs 是唯一值,使用“duplicates”。
sysuse auto2, clear
keep if _n<15
*不唯一:
duplicates r gear_ratio
duplicates r turn
*唯一:
duplicates r gear_ratio turn
*删掉重复的值:
duplicates drop turn, force

39.要将值标签保存到本地,请使用以下格式:“local loc: label (var) X”,其中 X 是值。
sysuse auto2, clear
local foreign_0: label (foreign) 0
local foreign_1: label (foreign) 1
di "foreign_0'"
di "foreign_1'"
sc p d if f==0, title(`foreign_0')

40.“sysuse”加载已经在 Stata 中的数据集。“sysuse dir”列出所有此类数据集。
sysuse dir
sysuse auto, clear
sysuse citytemp, clear
41.要创建标识组的变量,请使用“组”:
sysuse xtline1, clear
egen grp = group(day)
*check that it worked
sort day

42.使用“xtile”创建一个新变量,将另一个变量的值分组到分位数中。
sysuse auto2, clear
*quartiles
xtile f = turn, nq(4)
*deciles
xtile f = turn, nq(10)

43.使用“colorpalette”为你的图表着色:
ssc inst mscatter
ssc inst palettes
sysuse sp500, clear
foreach i in Zissou1 cividis icefire Blues {
mscatter change close if inrange(change, -30, 30), msymbol(O) msize(7) sch(s1mono) over(change) colorpalette(`i')
}
use "colorpalette" to color your graph:
ssc inst mscatter
ssc inst palettes
sysuse sp500, clear
foreach i in BrBG flare inferno RdYlBu {
mscatter change close if inrange(change, -30, 30), msymbol(O) msize(7) sch(s1mono) over(change) colorpalette(`i')
}

44.要仅浏览数据的子集,请使用“browse if”:
sysuse auto2, clear
*仅浏览以“A”开头的汽车品牌:
br if substr(make,1,1)=="A"
*浏览所有数据:
br

45.能够在结果窗口中尽可能向上滚动:
set scrollbufsize 2048000

46.下面的链接显示了如何创建下面的图,该图显示了随着时间的推移大学的推出:https://www.toddrjones.com/blog/2021-09-14-variation-over-time-and-space/

47.你可以使用动画地图显示随时间和空间的变化:
ssc inst maptile
ssc inst spmap
maptile_install using "http://files.michaelstepner.com/geo_state.zip"
sysuse census, clear
ren (state state2) (q state)
g year = _n+1900
fillin state year
bys s: replace me = 0 if me==.
forv i = 1914/1928 {
maptile me if y==i', geo(state) twopt(title(i') legend(off))
gr export `i'.png, replace
}
[Mac] Terminal - cd to dir, then:
convert *.png a.gif

48.制作动画图:
library(gapminder)
library(ggplot2)
library(gganimate)
ggplot(gapminder,aes(log(gdpPercap),lifeExp,size=pop,color=lifeExp))+ geom_point(show.legend=FALSE)+ labs(subtitle='{frame_time}')+ theme_minimal()+ transition_time(year)


关于Stata, 1.Stata16新增功能有哪些? 满满干货拿走不谢,2.Stata资料全分享,快点收藏学习3.Stata统计功能、数据作图、学习资源4.Stata学习的书籍和材料大放送, 以火力全开的势头5.史上最全Stata绘图技巧, 女生的最爱,6.把Stata结果输出到word, excel的干货方案,7.编程语言中的函数什么鬼?Stata所有函数在此集结,8.世界范围内使用最多的500个Stata程序,9.6张图掌握Stata软件的方方面面, 还有谁, 还有谁? 10.LR检验、Wald检验、LM检验什么鬼?怎么在Stata实现,11.Stata15版新功能,你竟然没有想到,一睹为快,12."高级计量经济学及Stata应用"和"Stata十八讲"配套数据,13.数据管理的Stata程序功夫秘籍,14.非线性面板模型中内生性解决方案以及Stata命令15.把动态面板命令讲清楚了,对Stata的ado详尽解,16.半参数估计思想和Stata操作示例,17.Stata最有用的points都在这里,无可替代的材料18.PSM倾向匹配Stata操作详细步骤和代码,干货十足,19.随机前沿分析和包络数据分析 SFA,DEA 及Stata操作,20.福利大放送, Stata编程技巧和使用Tips大集成,21.使用Stata进行随机前沿分析的经典操作指南,22.Stata, 不可能后悔的10篇文章, 编程code和注解,23.用Stata学习Econometrics的小tips, 第二发礼炮,24.用Stata学习Econometrics的小tips, 第一发礼炮,25.广义合成控制法gsynth, Stata运行程序release,26.多重中介效应的估计与检验, Stata MP15可下载,27.输出变量的描述性统计的方案,28.2SLS第一阶段输出, 截面或面板数据及统计值都行,29.盈余管理指标的构建及其Stata实现程序, 对应解读和经典文献,30.Python, Stata, R软件史上最全快捷键合辑!,31.用Stata做面板数据分析, 操作代码应有尽有,32.用Stata做面板数据分析, 操作代码应有尽有,33.没有这5个Stata命令, 我真的会活不下去!,34.第一(二)卷.Stata最新且有趣的程序系列汇编,35.第三卷.Stata最新且急需的程序系列汇编,36.第四卷.Stata最新且急需的程序系列汇编,37.干货: UN和WTO推荐的最全且权威的实证研究方法及在Stata实现!必收藏!38.再中心化影响函数RIF回归和分解的Stata操作程序39.R和Stata软件meta分析操作详细攻略, 对研究再开展研究的利器!40.不能安装Stata命令咋弄?这个方法一直都比较靠谱!,41.使用Stata做结构方程模型GSEM的操作指南42.疫情期计量课程免费开放!面板数据, 因果推断, 时间序列分析与Stata应用,43.一些Stata常见操作代码和注释, 能够让年轻学人更快掌握相关命令!44.Stata语言中的常用函数及其用法解释, 在附上42篇Stata相关学习资料,45.Stata经典操作笔记和学习资源合辑! 都是些博士生导师比较推荐的! 46.Stata17版本对外发布了, 里面提供了25个让学者激动的新程序板块!47.分享9篇文章的Stata复制代码, 可以直接下载进行一一复制实证结果, 48.实证中常用Stata操作命令和代码总结,49.如何用Stata实现熵值法的指南?50.多期DID或渐进DID或交叠DID, 最新Stata执行命令整理如下供大家学习,51.推荐一份超级大礼包资源, 里面有丰富的Stata学习材料, 写文章作报告找工作的指南


关于计量方法类书籍,参看1.一些比较常见的因果推断书籍25本汇总, 很多可以直接下载PDF,2.推荐一本专攻处理效应分析的书籍, 包括主流政策评估计量方法,3.年龄-时期-队列分析及其实现过程和经典书籍, 附code和数据!4.推荐使用Python语言做因果推断前沿方法的书籍,5.使用Stata做时间序列分析书籍, 包括模型讲解以及Stata示例操作,6.一本最新因果推断书籍, 包括了机器学习因果推断方法, 学习主流和前沿方法,7.社会经济政策的评估计量经济学, 提供书籍和数据和程序文件,8.全面且前沿的因果推断课程, 提供视频, 课件, 书籍和经典文献,9.从网页上直接复制代码的因果推断书籍出现了, 学会主流方法成效极快,10.推荐书籍"用R软件做应用因果分析", 有需要的学者可以自行下载!11.哪本因果推断书籍最好?我们给你整理好了这个书单!12.“不一样”的因果推断书籍, 很多观点让我们能恍然大悟, 涵盖了不少其他书里没有的因果推断方法!13.搞懂因果推断中内生性问题解决方法必读的书籍和文献已搜集好!14.一位“诗人”教授写了本因果推断书籍, 现在可以直接下载PDF参看!15.使用R软件学习计量经济学方法三本书籍推荐,16.数据缺失方法处理大全, 经典书籍助你修复数据,17.中介和调节效应操作指南, 经典书籍和PPT珍藏版,18.用R语言做Econometrics的书籍推荐, 值得拥有的经典,19.史上最全的因果识别经典前沿书籍, 仅此一份,20.重磅好书"环境能源计量经济学(附代码)", 该领域主流, 时髦和前沿的计量方法,21.Acemoglu又出版了两本经济学教课书!22.Stata17MP版最新使用指南全书, 包括DSGE, Lasso回归, ERM, 贝叶斯分析等,23.全新因果推断方法新书, 配套R, Stata和Python的代码, 还包括教授视频和PPT素材!24.学习计量, 统计和各种软件的必备书单,25.机器学习第一书, 数据挖掘, 推理和预测,26.计量回归中的交互项到底什么鬼? 捎一本书给你,27.荐书,计量经济学宝典,28.送书: 应用时间序列分析(经典),29.计量经济学教科书,多门类多级别的一个都不能少,30.50本经济学书单,入门到精通分门别类,31.从入门到进阶的Python数据分析手册, 课程内容完全免费!32.2卷RDD断点回归使用手册, 含Stata和R软件操作流程,33.社会网络分析最新文献和软件学习手册,34.环境, 能源和资源经济学手册推荐, 经典著作需要反复咀嚼,35.各领域经济学手册全在这里, 不学手册只能做重复研究,36.史上最全博士论文撰写指导手册Handbook

计量经济圈公众号搜索功能及操作流程演示

下面短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

4年,计量经济圈近1000篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle




数据系列空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光 | 官员方言  | 微观数据 | 内部数据计量系列匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID数据处理Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |干货系列能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验计量经济圈组织了一个计量社群,有如下特征:热情互助最多前沿趋势最多、社科资料最多、社科数据最多、科研牛人最多、海外名校最多。因此,建议积极进取和有强烈研习激情的中青年学者到社群交流探讨,始终坚信优秀是通过感染优秀而互相成就彼此的。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存