Stata常用命令
大学期间觉得学的最有用的软件之一就是stata了,对stata基本是在血和泪的尝试中爬过,到了最后基本属于只要stata不出现红字错误命令就开心得不得了。顺便整理一下常用的stata命令如下,应该对付计量方向第一学期的入门问题不大(求stata大神不虐..),所以就只写了一部分常用的,有时间后面再补充吧。主要就是分为基本操作和回归统计两部分:
1、基本操作
import/use/insheet/merge:基本常用的导入文件就是这四个了,建议直接从stata的menu菜单中导入,导入xlsx和csv这种常见的格式时还有一些备用选项可以自己体验一下(比如string和把第一行视为变量名之类)。
merge需要单独说一下,因为是将两个数据库合并为一个,原理也比较简单,两个数据库中根据一些相同的变量把其他数据“加”到原来的数据库中,也是建议直接菜单操作,不要用命令。在Data的Combine datasets的merge two datasets中,分为1:1、m:1、1:m各种形式,基本用两次就差不多能搞懂。
help:一定第一个学的是这个!啥不会就help一下,不知道函数了就help function,不知道回归细节就help regress,多读help文件!
gen/egen: 最常用的建立函数的命令,这两个不同之处在于gen一般是初等函数,egen的函数会复杂一些。常用的函数包括数学函数和其他函数,比如count/tag之类,建议直接到菜单里Data下Create data的create new variable或create new variable(extended)直接生成函数,会方便的多。
mean/abs/sqrt/max/min/sum/sd:常用数学函数,分别是求均值、绝对值、方根、最大最小、求和、方差用的。
keep if/drop if:这两个也是最常用的,在数据需要进行筛选的时候,两个命令的区别也很明显,keep是留下哪些,drop是去掉哪些。一般在if后面都会跟一些等式或不等式条件,比如drop if days<=15,这就是把sort命令排序days这个变量中小于等于15的obs都去掉。
replace:就是代替,最常用的是在赋值的时候。比如我要建一个新函数,但是取值我还不确定,假设新函数叫f,那就是gen f=.,这个“=.”就意思是缺省值,等我确定了赋值之后再
用replace就行。比如有另一个参数叫male,我让所有male=1的obs,它们的新函数f都要取10,那就是replace f=10 if male==1。
sort:对某一个或者某几个变量进行从小到大的排序。常用的做法就是对日期排序,这个命令也可以排序多个变量,写在前面的先排序。比如sort year month day就是对年月日的顺序排序。如果需要从大到小的话就是gsort就行。
bysort:这个命令简直是用的最多的没有之一!在此之前先讲一下by,by就是在某个组内执行后面的命令。比如by year: gen return=mean(dayreturn),意思就是在每一年的数据里,gen一个return变量,将这一年内所有的dayreturn(日收益率)求平均后赋值给return即当年平均日收益率。而bysort就相当于先sort 再by。
[_n]:这个要单独讲一下,因为我个人觉得很好用。[_n]是一个计数变量,比如gen n=[_n]就是建立了一个自然数列,用到这个变量是因为在经济统计的时候,尤其是统计周数据、月数据、年数据时,由于我们的数据是日数据得到的,因此在每一组(比如计算月平均收益率blabla)时统计完之后,会发现在每一个组内有很多个相同的数据,因此用一个dropif monthreturn[_n]==monthreturn[_n-1]就可以只保留每一组的第一个数据,之后的处理会节
省时间。(补充一句,如果你还需要原来的data的话一定记得另外保存)
drop:处理数据的过程中,一些过程变量就可以drop掉节省时间了。
save:记得写完了一定要保存!!
2、回归统计
sum:对统计量的最基本统计性质报告,直接敲sum加空格加某个变量就行。会报告均值、最大最小、标准差等最基本的信息。
tab:按照百分比对这个变量的取值统计。(就是相当于饼状图的表格)
reg:最简单的回归命令。直接敲reg y x1 x2就相当于y对x1x2的回归,回归结果会报告的比较详细,包括coefficient、constant、t值、p值、F值、SSR等等。
以下的xtreg/ivreg2/tsset分别针对的面板数据、两阶段最小二乘、时间序列,写起来太多,如果有小伙伴想看的话,可以再单独写一章。
∙xtset/xtreg:面板数据处理的命令,需要先进行xtset才能用xtreg的命令。
∙tsset:时间序列数据处理的命令。
∙ivreg2:两阶段最小二乘的命令。(不过在使用之前需要先install一下安装包才可以用,也是先help ivreg2然后到安装包就可以用)
3、我最喜欢用的命令…
count与tag:
count顾名思义,就是数个数,这个有时候在数据里非常好用,尤其是在分组的情况下。举一个实际情况中遇到的栗子,比如我要统计某只股票在每个月内有多少个交易日,那我在月的分组下,用下count函数,就能数出来某个组内的个数。
Tag是另一个函数,我个人理解的与count区别在于:count是数有几个,tag是数有几类。举个栗子,比如在某个组内,有1个10,2个20,那么用count数出来就是3,因为一共有3个数据;用tag数出来就是2,因为只有10和20这两个数值。
(转自人大论坛)
调整变量格式:
format x1 %10.3f ——将x1的列宽固定为10,小数点后取三位
format x1 %10.3g ——将x1的列宽固定为10,有效数字取三位
format x1 %10.3e ——将x1的列宽固定为10,采用科学计数法
format x1 %10.3fc ——将x1的列宽固定为10,小数点后取三位,加入千分位分隔符
format x1 %10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符
format x1 %-10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐
合并数据:
use "C:\Documents and Settings\xks\桌面\2006.dta", clear
merge using "C:\Documents and Settings\xks\桌面\1999.dta"
——将1999和2006的数据按照样本(observation)排列的自然顺序合并起来
use "C:\Documents and Settings\xks\桌面\2006.dta", clear
merge id using "C:\Documents and Settings\xks\桌面\1999.dta" ,unique sort
——将1999和2006的数据按照唯一的(unique)变量id来合并,在合并时对id进行排序(sort)
建议采用第一种方法。
对样本进行随机筛选:
sample 50
在观测案例中随机选取50%的样本,其余删除
sample 50,count
在观测案例中随机选取50个样本,其余删除
查看与编辑数据:
browse x1 x2 if x3>3 (按所列变量与条件打开数据查看器)
edit x1 x2 if x3>3 (按所列变量与条件打开数据编辑器)
数据合并(merge)与扩展(append)
merge表示样本量不变,但增加了一些新变量;append表示样本总量增加了,但变量数目不变。
one-to-one merge:
数据源自stata tutorial中的exampw1和exampw2
第一步:将exampw1按v001~v003这三个编码排序,并建立临时数据库tempw1
clear
use "t:\statatut\exampw1.dta"
su ——summarize的简写
sort v001 v002 v003
save tempw1
第二步:对exampw2做同样的处理
clear
use "t:\statatut\exampw2.dta"
su
sort v001 v002 v003
save tempw2
第三步:使用tempw1数据库,将其与tempw2合并:
clear
use tempw1
merge v001 v002 v003 using tempw2
第四步:查看合并后的数据状况:
ta _merge ——tabulate _merge的简写
su
第五步:清理临时数据库,并删除_merge,以免日后合并新变量时出错
erase tempw1.dta
erase tempw2.dta
drop _merge
数据扩展append:
数据源自stata tutorial中的fac19和newfac
clear
use "t:\statatut\fac19.dta"
ta region
append using "t:\statatut\newfac"
ta region
合并后样本量增加,但变量数不变
茎叶图:
stem x1,line(2) (做x1的茎叶图,每一个十分位的树茎都被拆分成两段来显示,前半段为0~4,后半段为5~9)
stem x1,width(2) (做x1的茎叶图,每一个十分位的树茎都被拆分成五段来显示,每个小树茎的组距为2)
stem x1,round(100) (将x1除以100后再做x1的茎叶图)
直方图
采用auto数据库
histogram mpg, discrete frequency normal xlabel(1(1)5)
(discrete表示变量不连续,frequency表示显示频数,normal加入正太分布曲线,xlabel设定x轴,1和5为极端值,(1)为单位)
histogram price, fraction norm
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论