关键词不能为空

当前您在: 主页 > 英语 >

常用stata命令-好用

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-20 12:43
tags:

-

2021年2月20日发(作者:锻压件)


我常用到的


stata


命令



最重要的两个命令莫过于


he lp




search


了。


即使是经常使用


stata


的人也很难,


也没必要记


住常用命令的每一个细节,


更不用说那些不常用到的了。


所以,


在遇到困难 又没有免费专家




询时,使用


stata


自带的帮助文件就是最佳选择。


s tata


的帮助文件十分详尽,面面俱到,


这既是好处也是麻烦 。当你看到长长的帮助文件时,是不是对迅



速找到相关信息感到没有


信心?




闲话不说了。


help



search


都是查找帮助文件的命令,它们之间 的区别在于


help


用于查找


精确的命



令名,而


search


是模糊查找。如果你知道某个命令的名字,并且想知道它的具体


使用方法,只 须在


stata


的命令行窗口中输入


h elp


空格加上这个名



字。回车后结 果屏幕上


就会显示出这个命令的帮助文件的全部内容。如果你想知道在

< br>stata


下做某个估计或某种计


算,而不知道具体该如 何实现,就需要用



search


命令 了。使用的方法和


help


类似,只须把


准确的命令名改成某个关键词。


回车后结果窗口会给出所有和这个关键词相关的帮助文 件名


和链接列表。



在列表中寻找最相 关的内容,点击后在弹出的查看窗口中会给出相关的帮助


文件。耐心寻找,反复实验,通 常可以较快地找到你需要的内容。




下面



该正式处理数据了。我的处理数 据经验是最好能用


stata



do< /p>


文件编辑器记下你做过


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



作时。能够重复


前面的工作是非常重要的。


有时因为一些细小的不同,


你会发现无法复制原先的结果了。



时如果有记录下以往工作的


do


文件将把你从地狱带到天



堂。


因为你不必一遍又一遍地试图


重现做过的 工作。在


stata


窗口上部的工具栏中有个孤立的小按钮,把 鼠标放上去会出现



bring do-file editor to front



,点击它就会出现


do


文件编辑器。




为了使


do


文件能够顺利工作,一般需 要编辑


do


文件的“头”和“尾”


。这 里给出我使用的


“头”和“尾”





/*


(标签。简单记下文件的使命。




*/



capture clear


(清空内存中的数据)



capture log close


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



set mem 128m


(设置用于


stata

使用的内存容量)



set more off


(关闭


more


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


果。你按空格键后再输出下一屏,直到全部输完。如果 关闭则中间不停,一次全部输出。




set matsize 4000


(设置矩阵的最大阶数。我用的是不是太大了?)




cd D:


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


dos


的命令行很相似。




log


using


(文件名)


.log,replace


(打开日志文件,并更新。日志文件将记录下所有文件运


行后给出的结果,如果你修改 了文件内容,


replace


选项可以将其更新为最近运行的结 果。





use


(文件名)


,clear


(打开数据文件。





(文件内容)




log close


(关闭日志文件。




exit,clear


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





这个


do


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


版权归沈明高老师。


(待续)





我常用到的


stata


命令:




(续)



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



据。


这些数据没有经过整理,


有一些错漏和不统一的地方。


比如,对某个变量的缺失观察值,有时会用点,有时会用


-9

< p>


-99


等来表示。回归时如果使


用这些观



察,往往得出非常错误的结果。还有,在不 同的数据文件中,相同变量有时使用


的变量名不同,会给合并数据造成麻烦。因此,拿到 原始数据后,往往需要根据需要



重新


生成新的数据库,并且只使用这个新库处理数据。


这部分工作不难,但是非常基础。因为 如


果在这里你不够小心,后面的事情往往会白做。






设你清 楚地知道所需的变量,现在要做的是检查数据、生成必要的数据并形成数据库供


将来使用 。检查数据的重要命令包括


codebook



su



ta



des



list


。其中,


codebook


提供


的信息最全面, 缺点是不能使用


if


条件限制范围,所以,有时还要用别的帮帮 忙。


su


空格


加变量名报告相应变量的 非



缺失的观察个数,均值,标准差,最小值和最大值。


ta


空格后


面加一个(或两个)变量名是报告 某个变量(或两个变量二维)的取值(不含缺失值)的频


数,比率



和按大小排列的累积比率。


des


后面可以加任意个变量名,只要数据中有。它报


告变量的存储的类型,显示的格式和标签 。标签中一般记录这个变量的定义和单



位。

< br>list


报告变量的观察值,


可以用

if



in


来限制范围。


所有这些命令都可以后面不加任何变量名,


报告的结果是正在使用的数据 库中的所有变量的相应信



息。


说起来 苍白无力,


打开


stata



自实验一下吧。




顺 带说点儿题外话。除了


codebook


之外,上述统计类的命 令都属于


r


族命令(又



称一般命


令)


。执行后都可以使用

< br>return


list


报告储存在

r


()中的统计结果。最典型的


r


族命令当属


summarize


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




起来。你在执行


su


之后,只需敲入


return list


就可以得到所有这些信息。其实,和一般命令



return


命令类似,估计命令(又称


e


族命令)也有


ereturn

< p>
命令,具有报告,储存信息的




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

< br>些功能更是必不可少。




检查数据时,先用


codebook


看一下它的值域和单位。如果有


-9



-99


这样的取值,查一下


问卷中对缺失值的记录方法。


确定它们是缺失值后,


改为用点记录。


命令是


replace (


变量名


)=.


if (


变量名


)==-9

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




得到可用的数据后,我会给没有标



签的变量加上注解。或者统一标签;或者统一变量的命


名规则。 更改变量名的命令是


ren


(原变量名)空格(新变量名)< /p>


。定义标签的命令是


label


var


(变量名)空格”


(标签内容)



。整齐划一的变量名有助于记忆,简明的标签有助于明


确变量的单位 等信息。




如果你需要使用通过原始



变量派生出 的新变量,那么就需要了解


gen



e gen



replace


这三


个命令。


gen



re place


常常在一起使用。它们的基本语法是


gen (



replace)


空格(变量名)


=(表达式)


。二者的不同之处在于


gen< /p>


是生成新变量,


replace


是重新定 义旧变量。




虚拟变量是



我们常常需要用到的一类 派生变量。如果你需要生成的虚拟变量个数不多,可


以有两种方法生成。一种是简明方法 :


gen


空格(变量名)=(


(限制条 件)



[




外面的小


括弧是命令需要的,里面的小括弧不是命令需要的,只 是说明“限制条件”并非命令


]


。如


果 某个观察满足限制条件,


那么它的这个虚拟变量取值为


1





则为


0



另一种要麻烦一点。


就是




gen


(变量名)=


1 if


(取值为一限制条件)



replace


(相同的变量名)=


0 if


(取值为零的限制条件)






个方法貌似一样,


但有一个小小的区别。


如果限制条件中使用的变量都没有任何缺失值,


那么两种方法的结果一样。如果有缺失值,第一种方法会把是缺失值的观察



的虚拟变量都


定义为


0

< p>
。而第二种方法可以将虚拟变量的取值分为三种,一是等于


1


,二是等于


0


,三是


等于缺 失值。这样就避免了把本来信息不明的观察错误地纳



入到回归 中去。下次再讲如何


方便地生成成百上千个虚拟变量。




我常用到的


stata


命令:




(续)



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


比如,


在某个回归中希望控制每个< /p>


观察所在的社区,


即希望控制标记社区的虚拟变量。


社区数目可能有成百上千个,


如果用上


次的所说的方 法生成就需要重复成百上千次,这也太笨了。大量生成虚拟变量的命令如下;




ta


(变量名)


, gen(


(变量名)


)


< p>
第一个括号里的变量名是已知的变量,


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


后一个括号里的变量名


是新生成的虚拟变量的共同前缀,后面跟数字表 示不同的虚拟变量。如果我在这里填入


d


那么,上述命令就会新生成


d1



d2


,等等,直到所有社区都有一个虚拟变量。




在回归中控制社区变量,


只需简单地 放入这些变量即可。


一个麻烦是虚拟变量太多,


怎么简


单地加入呢?一个办法是用省略符号,


d*


表示 所有


d


字母开头的变量,另一法是用破折号,

< br>d1-d150


表示第一个到第


150

< br>个社区虚拟变量(假设共有


150


个社区)





还有一种方法可以在 回归中直接控制虚拟变量,


而无需真的去生成这些虚拟变量。


使 用命令


areg


可以做到,它的语法是




areg


(被解释变量)



(解释变量)


, absorb


(变量名)




absorb


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


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


码。回归的结果和在

< br>reg


中直接加入相应的虚拟变量相同。




生成变量的最后一招是


egen



egen



ge n


都用于生成新变量,但


egen


的特 点是它更强大的


函数功能。


gen


可以 支持一些函数,


egen


支持额外的函数。如果用


gen


搞不定,就得用


egen

想办法了。不过我比较懒,到现在为止只用用取平均、加和这些简单的函数。




有的时候数据情况复杂一些,


往往生 成所需变量不是非常直接,


就需要多几个过程。


曾经碰


到原始数据中记录日期有些怪异的格式。比如,


1991



10



23


日被记录为


19911023


。我

想使用它年份和月份,并生成虚拟变量。下面是我的做法:




gen yr=int(date)


gen mo=int((data-yr*10000)/100)


ta yr, gen( yd)


ta mo, gen( md)





设你已经生成了所有需要的变量,


现在最重要的就是保存好你的工作。


使用的命令是


save


空格(文件名)



replace


。和前面介绍的一样,



replace


选项将更新你对数据库的修改,所 以


一定要小心使用。


最好另存一个新的数据库,


如果把原始库改了又变不回去,


就叫天不应叫


地不灵了 。




我常用到的

stata


命令




(续)



前面说的都是对单个数据库的简单操



作,但有时我们需要改变数据的结构,或者抽取来自


不同数据库的信息,


因此需要更方便的命令。


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


改 变数据的纵横结


构的命令



resha pe


,生成退化的数据库


collapse

,合并数据库的命令


append



merge




< br>纵列(


longitudinal


)数据



通常包括同一个行为者(


agent


)在不同时期的观察,所以处理这


类数据常常需要把数据库从宽表变成长表,< /p>


或者相反。


所谓宽表是以每个行为者为一个观察,



不同时期的变量都记录在这个观察下,例如,行为者是厂商,时期有


2000



2001


年 ,变量


是雇佣人数和所在城市,假设雇佣人数在不同时期不同,所在城市



则不变。宽表记录的格


式是每个厂商是一个观察,没 有时期变量,雇佣人数有两个变量,分别记录


2000


年和


2001


年的人数,所在城市只有一个变量。所谓长



表是行为者和时期共同定义观察,在上面的例


子中,


每个厂商有两个观察,有时期变量,雇佣人数和所在城市都只有一个,它们和时期变


量共同定义相应时期的变量



取值。




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




reshape long


(雇佣人数的变量名)


, i(


(标记厂商的变量名)


) j(


(标记时期的变量名)


)



因为所在城市不随时期变化,所以在转换格式时不用放在


resha pe long


后面,转换前后也不


改变什么。相反地,如果把 长表变成宽表则使用如下命令




reshape wide


(雇佣人数的变量名)


, i(


(标记厂商的变量名)


) j(


(标记时期的变量名)


)



唯一的区别是


long


换成了


wide




< p>
collapse


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


用到这个命令的机会不多,我使用它是因为它可以计算中位数和 从


1



99


的 百分位数,这


些统计量在常规的数据描述命令中没有。如果要计算中位数,其命令的语法 如下




collapse (median) (


(变量名)


), by(


(变量名)


)



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

< br>by



项是根据某个变量分组计算中位数,没有这个选项 则计算全部样本的中位数。






并数据库有两种方式,一种是增加 观察,另一种是增加变量。第一种用


append


,用在两


个数据库的格式一样,但观察不一样,只需用


append


空格



using


空格 (文件名)就可以狗


尾续貂了。简单明了,不会有什么错。另一种就不同了,需要格外小 心。如果两个数据库中


包含共同的观察,但是变量不同,希


< /p>


望从一个数据库中提取一些变量到另一个数据库中用


merge< /p>


。完整的命令如下:




use


(文件名)



[


打开辅助数据库


]


sort


(变量名)



[


根据变量排序,这个变量是两个数据库共有的识别信息

]


save


(文件名)


, replace [


保存辅助数据库


]


use


(文件名)



[


打开主数据库


]


sort


(变量名)



[


对相同的变量排序


]


merge


(变量名)



using


(文件名)


, keep(


(变量名)


)


[


第一个变量名即为前面


sort


后面的变量名, 文件名是辅助数据库的名字,后面的变量名是


希望提取的变量名


]


ta _merge [


显示


_m erge


的取值情况。


_merge


等 于


1


的观察是仅主库有的,


等于


2


的是仅辅助


库有的,等于

< br>3


是两个库都有的。


]


drop if _merge==2 [


删除仅仅来自辅助库的观察


]


drop merge [


删除


_merge]


save


(文件名)


, replace [


将合并后的文件保存,通常另存


]





我常用到的


stata


命令




(续)



讲到这里似乎对于数据的生



成和处理 应该闭嘴了。


大家可能更想听听估计、


检验这些事情。


但我并不想就此止住,


因为实际中总是有一些简单套用命令无法轻易办到 的特殊要求。


此时


至少有两



条路可以通向罗马:一是找到更高级的命令一步到位;二是利用已知简单命令多

< br>绕几个圈子达到目的。




下面讲一个令我刻骨铭心的经历,这也是迄


< br>今我所碰到的生成新数据中最繁复的了。原始


数据中包含了可以识别属于同一个家 庭中所有个人的信息和家庭成员与户主关系的信息。



的是利用 这些信息建立亲子



关系。


初步的构想 是新数据库以子辈为观察,


找到他们的父母,

-


-


-


-


-


-


-


-



本文更新与2021-02-20 12:43,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/668375.html

常用stata命令-好用的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文