经常使用stata命令好用.docx

上传人:b****6 文档编号:7765804 上传时间:2023-01-26 格式:DOCX 页数:11 大小:25.74KB
下载 相关 举报
经常使用stata命令好用.docx_第1页
第1页 / 共11页
经常使用stata命令好用.docx_第2页
第2页 / 共11页
经常使用stata命令好用.docx_第3页
第3页 / 共11页
经常使用stata命令好用.docx_第4页
第4页 / 共11页
经常使用stata命令好用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

经常使用stata命令好用.docx

《经常使用stata命令好用.docx》由会员分享,可在线阅读,更多相关《经常使用stata命令好用.docx(11页珍藏版)》请在冰豆网上搜索。

经常使用stata命令好用.docx

经常使用stata命令好用

我经常使用到的stata命令

最重要的两个命令莫过于help和search了。

即便是常常利用stata的人也很难,也没必要记住经常使用命令的每一个细节,更不用说那些不经常使用到的了。

因此,在碰到困难又没有免费专家咨询时,利用stata自带的帮忙文件确实是最正确选择。

stata的帮忙文件十分详尽,面面俱到,这既是益处也是麻烦。

当你看到长长的帮忙文件时,是不是对迅速找到相关信息感到没有信心?

闲话不说了。

help和search都是查找帮忙文件的命令,它们之间的区别在于help用于查找精准的命令名,而search是模糊查找。

若是你明白某个命令的名字,而且想明白它的具体利用方式,只须在stata的命令行窗口中输入help空格加上那个名字。

回车后结果屏幕上就会显示出那个命令的帮忙文件的全数内容。

若是你想明白在stata下做某个估量或某种计算,而不明白具体该如何实现,就需要用search命令了。

利用的方式和help类似,只须把准确的命令名改成某个关键词。

回车后结果窗口会给出所有和那个关键词相关的帮忙文件名和链接列表。

在列表中寻觅最相关的内容,点击后在弹出的查看窗口中会给出相关的帮忙文件。

耐心寻觅,反复实验,通常能够较快地找到你需要的内容。

下面该正式处置数据了。

我的处置数据体会是最好能用stata的do文件编辑器记下你做过的工作。

因为很少有一项实证研究能够一次完成,因此,当你下次继续工作时。

能够重复前面的工作是超级重要的。

有时因为一些细小的不同,你会发觉无法复制原先的结果了。

这时若是有记录下以往工作的do文件将把你从地狱带到天堂。

因为你没必要一遍又一遍地试图重现做过的工作。

在stata窗口上部的工具栏中有个孤立的小按钮,把鼠标放上去会显现“bringdo-fileeditortofront”,点击它就会显现do文件编辑器。

为了使do文件能够顺利工作,一样需要编辑do文件的“头”和“尾”。

那个地址给出我利用的“头”和“尾”。

/*(标签。

简单记下文件的使命。

)*/

captureclear(清空内存中的数据)

capturelogclose(关闭所有打开的日记文件)

setmem128m(设置用于stata利用的内存容量)

setmoreoff(关闭more选项。

若是打开该选项,那么结果分屏输出,即一次只输出一屏结果。

你按空格键后再输出下一屏,直到全数输完。

若是关闭那么中间不断,一次全数输出。

setmatsize4000(设置矩阵的最大阶数。

我用的是不是太大了?

cdD:

(进入数据所在的盘符和文件夹。

和dos的命令行很相似。

logusing(文件名).log,replace(打开日记文件,并更新。

日记文件将记录下所有文件运行后给出的结果,若是你修改了文件内容,replace选项能够将其更新为最近运行的结果。

use(文件名),clear(打开数据文件。

(文件内容)

logclose(关闭日记文件。

exit,clear(退出并清空内存中的数据。

那个do文件的“头尾”并非我的发明,而是从沈明高教师那里学到的。

版权归沈明高教师。

(待续)

我经常使用到的stata命令:

(续)

实证工作中往往接触的是原始数据。

这些数据没有通过整理,有一些遗漏和不统一的地址。

比如,对某个变量的缺失观看值,有时会用点,有时会用-9,-99等来表示。

回归时若是利用这些观察,往往得出超级错误的结果。

还有,在不同的数据文件中,相同变量有时利用的变量名不同,会给归并数据造成麻烦。

因此,拿到原始数据后,往往需要依照需要从头生成新的数据库,而且只利用那个新库处置数据。

这部份工作不难,可是超级基础。

因为若是在那个地址你不够警惕,后面的情形往往会白做。

假设你清楚地明白所需的变量,此刻要做的是检查数据、生成必要的数据并形成数据库供以后利用。

检查数据的重要命令包括codebook,su,ta,des和list。

其中,codebook提供的信息最全面,缺点是不能利用if条件限制范围,因此,有时还要用别的帮帮忙。

su空格加变量名报告相应变量的非缺失的观看个数,均值,标准差,最小值和最大值。

ta空格后面加一个(或两个)变量名是报告某个变量(或两个变量二维)的取值(不含缺失值)的频数,比率和按大小排列的积存比率。

des后面能够加任意个变量名,只要数据中有。

它报告变量的存储的类型,显示的格式和标签。

标签中一样记录那个变量的概念和单位。

list报告变量的观看值,能够用if或in来限制范围。

所有这些命令都能够后面不加任何变量名,报告的结果是正在利用的数据库中的所有变量的相应信息。

提及来惨白无力,打开stata亲自实验一下吧。

顺便说点儿题外话。

除codebook之外,上述统计类的命令都属于r族命令(又称一样命令)。

执行后都能够利用returnlist报告贮存在r()中的统计结果。

最典型的r族命令当属summarize。

它会把样本量、均值、标准差、方差、最小值、最大值、总和等统计信息储存起来。

你在执行su以后,只需敲入returnlist就能够够取得所有这些信息。

其实,和一样命令的return命令类似,估量命令(又称e族命令)也有ereturn命令,具有报告,贮存信息的功能。

在更复杂的编程中,比如对回归分解,计算一些程序中无法直接计算的统计量,这些功能更是必不可少。

检查数据时,先用codebook看一下它的值域和单位。

若是有-9,-99如此的取值,查一下问卷中对缺失值的记录方式。

确信它们是缺失值后,改成用点记录。

命令是replace(变量名)=.if(变量名)==-9。

再看一下用点记录的缺失值有多少,作为选用变量的一个依据。

取得可用的数据后,我会给没有标签的变量加上注解。

或统一标签;或统一变量的命名规那么。

更改变量名的命令是ren(原变量名)空格(新变量名)。

概念标签的命令是labelvar(变量名)空格”(标签内容)”。

整齐划一的变量名有助于经历,简明的标签有助于明确变量的单位等信息。

若是你需要利用通过原始变量派生出的新变量,那么就需要了解gen,egen和replace这三个命令。

gen和replace常常在一路利用。

它们的大体语法是gen(或replace)空格(变量名)=(表达式)。

二者的不同的地方在于gen是生成新变量,replace是从头概念旧变量。

虚拟变量是咱们常常需要用到的一类派生变量。

若是你需要生成的虚拟变量个数不多,能够有两种方式生成。

一种是简明方式:

gen空格(变量名)=((限制条件))[这外面的小括弧是命令需要的,里面的小括弧不是命令需要的,只是说明“限制条件”并非命令]。

若是某个观看知足限制条件,那么它的那个虚拟变量取值为1,否那么为0。

另一种要麻烦一点。

确实是

gen(变量名)=1if(取值为一限制条件)

replace(相同的变量名)=0if(取值为零的限制条件)

两个方式貌似一样,但有一个小小的区别。

若是限制条件中利用的变量都没有任何缺失值,那么两种方式的结果一样。

若是有缺失值,第一种方式会把是缺失值的观看的虚拟变量都概念为0。

而第二种方式能够将虚拟变量的取值分为三种,一是等于1,二是等于0,三是等于缺失值。

如此就幸免了把本来信息不明的观看错误地纳入到回归中去。

下次再讲如何方便地生成成百上千个虚拟变量。

我经常使用到的stata命令:

(续)

大量的虚拟变量往往是依照某个已知变量的取值生成的。

比如,在某个回归中希望操纵每一个观看所在的社区,即希望操纵标记社区的虚拟变量。

社区数量可能有成百上千个,若是用上次的所说的方式生成绩需要重复成百上千次,这也太笨了。

大量生成虚拟变量的命令如下;

ta(变量名),gen((变量名))

第一个括号里的变量名是已知的变量,在上面的例子中是社区编码。

后一个括号里的变量名是新生成的虚拟变量的一起前缀,后面跟数字表示不同的虚拟变量。

若是我在那个地址填入d,那么,上述命令就会新生成d1,d2,等等,直到所有社区都有一个虚拟变量。

在回归中操纵社区变量,只需简单地放入这些变量即可。

一个麻烦是虚拟变量太多,怎么简单地加入呢?

一个方法是用省略符号,d*表示所有d字母开头的变量,另一法是用破折号,d1-d150表示第一个到第150个社区虚拟变量(假设共有150个社区)。

还有一种方式能够在回归中直接操纵虚拟变量,而无需真的去生成这些虚拟变量。

利用命令areg能够做到,它的语法是

areg(被说明变量)(说明变量),absorb(变量名)

absorb选项后面的变量名和前面讲的命令中第一个变量名相同。

在上面的例子中即为社区编码。

回归的结果和在reg中直接加入相应的虚拟变量相同。

生成变量的最后一招是egen。

egen和gen都用于生成新变量,但egen的特点是它更壮大的函数功能。

gen能够支持一些函数,egen支持额外的函数。

若是用gen弄不定,就得用egen想方法了。

只是我比较懒,到此刻为止只用用取平均、加和这些简单的函数。

有的时候数据情形复杂一些,往往生成所需变量不是超级直接,就需要多几个进程。

曾经碰着原始数据中记录日期有些怪异的格式。

比如,1991年10月23日被记录为。

我想利用它年份和月份,并生成虚拟变量。

下面是我的做法:

genyr=int(date)

genmo=int((data-yr*10000)/100)

tayr,gen(yd)

tamo,gen(md)

假设你已经生成了所有需要的变量,此刻最重要的确实是保留好你的工作。

利用的命令是save空格(文件名),replace。

和前面介绍的一样,replace选项将更新你对数据库的修改,因此必然要警惕利用。

最好另存一个新的数据库,若是把原始库改了又变不归去,就叫天不该叫地不灵了。

我经常使用到的stata命令

(续)

前面说的都是对单个数据库的简单操作,但有时咱们需要改变数据的结构,或抽取来自不同数据库的信息,因此需要更方便的命令。

这一类命令中我用过的有:

改变数据的纵横结构的命令reshape,生成退化的数据库collapse,归并数据库的命令append和merge。

纵列(longitudinal)数据通常包括同一个行为者(agent)在不同时期的观看,因此处置这种数据常常需要把数据库从宽表变成长表,或相反。

所谓宽表是以每一个行为者为一个观看,不同时期的变量都记录在那个观看下,例如,行为者是厂商,时期有2000、2001年,变量是雇佣人数和所在城市,假设雇佣人数在不同时期不同,所在城市那么不变。

宽表记录的格式是每一个厂商是一个观看,没有时期变量,雇佣人数有两个变量,别离记录2000年和2001年的人数,所在城市只有一个变量。

所谓长表是行为者和时期一起概念观看,在上面的例子中,每一个厂商有两个观看,有时期变量,雇佣人数和所在城市都只有一个,它们和时期变量一起概念相应时期的变量取值。

在上面的例子下,把宽表变成长表的命令格式如下:

reshapelong(雇佣人数的变量名),i((标记厂商的变量名))j((标记时期的变量名))

因为所在城市不随时期转变,因此在转换格式时不用放在reshapelong后面,转换前后也不改变什么。

相反地,若是把长表变成宽表那么利用如下命令

reshapewide(雇佣人数的变量名),i((标记厂商的变量名))j((标记时期的变量名))

唯一的区别是long换成了wide。

collapse的用途是计算某个数据库的一些统计量,再把它存为只含有这些统计量的数据库。

用到那个命令的机遇不多,我利用它是因为它能够计算中位数和从1到99的百分位数,这些统计量在常规的数据描述命令中没有。

若是要计算中位数,其命令的语法如下

collapse(median)((变量名)),by((变量名))

生成的新数据库中记录了第一个括号中的变量(能够是多个变量)的中位数。

右面的by选项是依照某个变量分组计算中位数,没有那个选项那么计算全数样本的中位数。

合并数据库有两种方式,一种是增加观看,另一种是增加变量。

第一种用append,用在两个数据库的格式一样,但观看不一样,只需用append空格using空格(文件名)就能够够狗尾续貂了。

简单明了,可不能有什么错。

另一种就不同了,需要额外警惕。

若是两个数据库中包括一起的观看,可是变量不同,希望从一个数据库中提取一些变量到另一个数据库顶用merge。

完整的命令如下:

use(文件名)[打开辅助数据库]

sort(变量名)[依照变量排序,那个变量是两个数据库共有的识别信息]

save(文件名),replace[保留辅助数据库]

use(文件名)[打开主数据库]

sort(变量名)[对相同的变量排序]

merge(变量名)using(文件名),keep((变量名))

[第一个变量名即为前面sort后面的变量名,文件名是辅助数据库的名字,后面的变量名是希望提取的变量名]

ta_merge[显示_merge的取值情形。

_merge等于1的观看是仅主库有的,等于2的是仅辅助库有的,等于3是两个库都有的。

]

dropif_merge==2[删除仅仅来自辅助库的观看]

dropmerge[删除_merge]

save(文件名),replace[将归并后的文件保留,通常另存]

我经常使用到的stata命令

(续)

讲到那个地址似乎关于数据的生成和处置应该闭嘴了。

大伙儿可能更想听听估量、查验这些情形。

但我并非想就此止住,因为实际中老是有一些简单套用命令无法轻易办到的特殊要求。

现在至少有两条路能够通向罗马:

一是找到更高级的命令一步到位;二是利用已知简单命令多绕几个圈子达到目的。

下面讲一个令我刻骨铭心的经历,这也是迄今我所碰着的生成新数据中最繁复的了。

原始数据中包括了能够识别属于同一个家庭中所有个人的信息和家庭成员与户主关系的信息。

目的是利用这些信息成立亲子关系。

初步的构思是新数据库以子辈为观看,找到他们的父母,把父母的变量添加到每一个观看上。

我的做法如下:

usea1,clear[打开全数样本数据库]

keepifgender==2&agemos>=96&a8~=1&line<10

[保留已婚的必然年龄的女性]

replacea5=1ifa5==0

[变量a5标记和户主的关系。

等于0是户主,等于1是户主的配偶。

那个地址不加区分地将户主及其配偶放在一路。

]

keepifa5==1|a5==3|a5==7

[保留是户主(=1),是户主的子女(=3),或是户主的儿媳(=7)的那些人。

]

renhhf[将所需变量加上后缀f,表示女性]

renlinelf[将所需变量加上后缀f,表示女性]

sortwavehhid

saveb1,replace[排序并保留]

keepifa5f==1[留下其中是户主或户主配偶的]

saveb2,replace[保留]

useb1,clear

keepifa5f==3|a5f==7

saveb3,replace[留下其中是户主女儿或儿媳的并保留]

usea3,clear[打开与户主关系是户主子女的儿童数据库]

sortwavehhid

mergewavehhidusingCHNS01b2,keep(hflf)

ta_merge

dropif_merge==2

sorthhidlinewave[处置两代户,将户主配偶女性库与儿童库归并]

byhhidlinewave:

egenx=count(id)

dropx_merge[计算每一个年份家庭匹配的情形,x只取值1,说明两代户匹配成功]

saveb4,replace[保留]

usea4,clear[打开与户主关系是户主孙子女的儿童数据库]

sortwavehhid

mergewavehhidusingCHNS01b3,keep(a5fa8fschfa12fhfagemosfc8flf)

ta_merge

dropif_merge==2[处置三代户,将户主女儿或儿媳女性库与孙子女儿童库归并]

sorthhidlinewave

byhhidlinewave:

egenx=count(id)

gena=agemosf-agemos

dropifa<216&x==3[计算每一个年份家庭匹配的情形,x不只取1,三代户匹配不完全成功。

删除不合理的样本,标准是年龄差距和有三个可能母亲的那些家庭。

]

genxx=x[_n+1]

genxxx=x[_n-1]

geny=lfifx==1

replacey=lf[_n+1]ifx==2&xx==1

replacey=lf[_n-1]ifx==2&xxx==1

keepifx==1|(lf==y&x==2)

[关于有两个可能母亲的儿童,有相同编码的女性显现两次的情形。

上面的做法是为了保证不删除这部份样本。

]

dropaxxxxxxy_merge

saveb5,replace[保留归并后的数据库]

[对男性数据的归并完全类似,不赘述。

]

logclose

exit,clear

我的方式是属于利用简单命令反复迂回地达到目的那一类的,因此超级希望有更简便的方式来替代。

只是做实证时往往不是超级追求程序的漂亮,常常也就苟且偷生了。

曾经有人向我索要过上面的处置方式,因为一直杂事缠身,就没有答复。

此刻公布了,希望对需要的人能有所帮忙,我也懒得再去一一回答了。

本文来自:

人大经济论坛详细出处参考:

我经常使用到的stata命令(六)

(续)

stata壮大的功能体此刻它能够方便地回归微观数据。

而回归也是微观实证中最重要的方式。

下面就开始讲stata中和回归有关的经常使用命令。

大体回归方式有两种:

线性设定下的最小二乘法(OLS)和两时期最小二乘法(2SLS)。

他们在实证分析中应用普遍,十分详细地把握这两种方式是实证研究的大体要求。

讲解的顺序是先依次介绍如安在stata中实现OLS和2SLS估量,然后再分析如安在实际问题当选择合理的方式。

后一部份受JoshuaAngrist教授的阻碍专门大,因此,在后面引用他的思想时会详细注明。

假设你已经清楚地了解待估量方程的形式,那么回归命令的大体魄式就十分简单明了:

reg(被说明变量)(说明变量1)(说明变量2)……

方程中的相应变量能够简单地放在reg的后面。

执行上面的命令后,stata会显现两个表格,别离报告一些方差分析和回归的参数估量结果。

咱们最关切的是参数的大小和显著性,这在第二个表格中列出。

表格的最左侧一栏列出了说明变量,在它的右边是相应的系数估量值,然后依次是估量值的标准误,t比率,原假设为系数的真实值等于零时错误地拒绝该假设的概率——p值,和该估量值的置信度为(1-5%)的置信区间。

我看到回归结果的第一眼是瞄着最关切的说明变量的符号、大小和显著性。

看看说明变量阻碍的方向和大小是不是符合理论的预期,是不是合乎常识,和那个估量值是不是显著。

标记显著性的统计量是t统计量,在经典假设下,它服从t散布。

t散布和标准正态散布形状很相似,但它的“尾巴”要比标准正态散布的“肥”一些,在样本量比较小的时候尤其明显,当样本量趋于无穷时,t散布的极限散布是标准正态散布。

大伙儿对标准正态散布的散布函数上一些关键点比较熟悉,比如,是%的关键点,是95%的关键点,因此,咱们希望明白何时能够平安地利用标准正态散布。

下表列出了一些小自由度下二者的不同(Beyer1987“CRCStandardMathematicalTables,28thed.”;Goulden1956“MethodsofStatisticalAnalysis,2nded.”)。

能够看出,自由度超过一百时,二者的不同就已经相当小了。

因此,当样本量的数量级是100个或以上时,能够直接以为t比率服从标准正态散布,并以此做查验。

90%95%%%

1

2

3

4

5

10

30

100

读者读到那个地址可能会笑话我了,stata不是已经报告了t查验的p值和置信区间了吗?

什么缘故不直接观察这些结果呢?

缘故在于实证文献往往只报告参数的估量值和标准误,需要读者自己将估量值和标准误相除,计算显著性。

而且当你在写实证文章时,也应该报告参数的估量值和标准误。

这比报告估量值和它的p值更标准。

伴随回归命令的一个重要命令是predict。

回归终止后,利用它能够取得和回归相关的一些关键统计量。

语法如下:

predict(新变量名),(统计量名)

那个地址的统计量名是一些选项。

经常使用的选项有:

xb(回归的拟合值。

这是默许选项,即不加任何选项时,predict给予新变量前一个回归的拟合值。

);residuals(残差);leverage(杠杆值)。

下面具一个例子来讲明predict的用法。

有时样本中的一个专门的观看值会显著地改变回归结果。

如此的观看值能够笼统地分为三类:

outliers,leverage和influence。

Outliers是针对残差而言的,指那些回归中残差专门大的观看;leverage是针对说明变量而言的,是说明变量相对其平均值偏里专门大的观看;influence是针对估量结果而言的。

若是去掉那个观看会明显地改变估量值,那么那个观看确实是一个influence。

Influence能够看做outliers和leverage一起作用的结果。

异样观看可能是由于样本的特性,也可能是因为录入错误。

总之,咱们希望找到它们。

回归后的predict命令能够发觉这些异样观看(命令来自UCLA的“RegressionwithStata”第二章)。

发觉outliers,leverage和influence的命令如下:

predictrs,rstudent

predictl,leverage

predictcsd,cooksd

predictdf,dfits

这些统计量都有相应的关键值。

当统计量(或其绝对值)超过关键值时就应该认真检查相应的观看,确认是不是属于录入错误。

rstudent是用来发觉outliers的统计量,其关键值是2,和3。

leverage是用来发觉leverage的统计量,其关键值是(2k+2)/n,其中k说明变量的个数,n是样本量。

Cooksd和DFITS是探测influence的统计量。

它们都综合了残差和杠杆的信息,而且二者超级类似,只是单位不同,因此给出的结果也差不多。

Cooksd的关键值是4/n。

DFITS的关键值是2*sqrt(k/n)。

我经常使用到的stata命令(七)

中心牛师兄的大作,转帖过来呵呵

我经常使用到的stata命令:

(续)

在利用最小二乘法估量时,两个通常被质疑的问题是数据是不是存在多重共线性和异方差。

多重共线性是指说明变量之间的相关性。

通常咱们假设说明变量之间是相关的,而且许诺说明变量存在相关性,并操纵能够观看的因素正是OLS的优势。

若是把多重共线性看做一个需要解决的问题,那么需要把它说明为相关性“较大”。

如此,变量之间没有相关性不行,相关性太大也不行,好坏的分割真是颇费琢磨。

而且多重共线性并无违背任何经典假定,因此,那个问题没有专门好的概念。

本质上讲,在样本给按时,多重共线性问题无法解决,或说它是一个伪问题。

先看一下什么缘故说明变量之间的相关性大会有问题。

在OLS回归的经典假设(除正态假设外)下

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1