Stata学习资料

更新时间:2024-01-18 06:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1章 Stata入门简介 .............................................. 3 1.1 Stata简介 ..................................................... 3 1.2 Stata的界面 ................................................... 4

1.2.1 Stata的菜单 ............................................. 4 1.2.2 Stata的工具栏 ........................................... 5 Stata菜单下方的如图1-3............................................. 5

1.2.1 Stata的窗口 ............................................. 6 第2章 Stata的基本操作 ............................................ 8 2.1 Stata数据的导入 ............................................... 8

2.1.1 创建新的数据库........................................... 8 2.1.2 从Excel或TXT等文档复制数据............................ 12 2.1.3 标准的方式读入数据...................................... 12 2.1.4 .dta格式的数据读入 ..................................... 17 2.2 删除变量和观测值.............................................. 19

2.2.1 删除变量................................................. 19 2.2.2 删除观测值.............................................. 21 2.3 变量类型的转换................................................ 23

2.3.1 变量的描述.............................................. 23 .des v1 v2......................................................... 24 Contains data from 股票交易.dta.................................... 25 .des............................................................... 26

2.3.2 将字符型变量转换成数值型................................ 26 . list v2 in 1/5................................................... 27 2.4 生成日期...................................................... 30 2.5 给变量添加标签................................................ 31 2.6 修改变量名称.................................................. 32 2.7 变量和观测值的排序............................................ 34

2.7.1 变量的排序.............................................. 34 2.7.2 观测值的排序............................................ 37 .sort gpdm year.................................................... 38 2.8 合并数据...................................................... 38

2.8.1 横向合并................................................ 38 .sort gpdm year.................................................... 39

2.8.2 纵向合并................................................ 44 第 3 章 Stata的常用命令 .......................................... 47 3.1 检验数据..................................................... 47

3.1.1 inspect(描述变量的取值特征)........................... 47 3.1.2 检查和删除重复值........................................ 49 3.2 创建变量...................................................... 54

3.2.1 生成新变量.............................................. 54 3.2.2 生成虚拟变量............................................ 58 3.3 描述性统计.................................................... 61

3.3.1 修整非缺失值............................................ 61 3.3.2 描述性统计.............................................. 63

1

3.3.3 t检验 .................................................. 67 3.4 回归分析...................................................... 68

3.4.1 相关分析................................................ 68 3.4.2 回归分析................................................ 71 3.4.3 补充命令................................................ 75 第 4 章 会计稳健性................................................ 81 4.1 Basu模型 ..................................................... 81 4.2 Bushman....................................................... 83 4.3 C-Score....................................................... 89

2

第1章 Stata入门简介

1.1 Stata简介

Stata是一个用于整理数据和分析数据的统计软件,它是在1985年由Stata公司(StataCorp)开发研制出来的,在全球范围内被广泛应用于企业和学术机构中。历经20多年的发展,Stata的版本已经从1.1更新到目前的11.0。 现在有很多统计软件和数据管理软件供大家选择使用,例如:Excel,SAS,SPSS,MATLAB等。但是随着Stata的不断发展,越来越多的人开始选择使用Stata作为统计工具。主要原因有以下:

1、体积小。用过SAS、MATLAB的人都知道这些软件需要1G左右的内存,而Stata只有几十兆,便于交流和拷贝。

2、运算速度非常快。Stata是将硬盘的数据全部读入到内存进行运算,所以大大加快了运算速度。

3、便于入门。Stata的菜单功能很丰富,初学者可以依照这些菜单的提示进行操作。

4、方便的样本数据。Stata里提供了很多供使用者练习的样本数据,在菜单File->Example datasets里可以找到这些数据。

5、强大的绘图功能。Stata的绘图功能卓越,常见的二维图Stata都可以绘制出来。

6、更新和发展的速度比较快(这也是很多的人选择的主要原因)。Stata本身提供了很好的运算平台,许多高级模块是编程人员用其宏语言写成的程序文件。

另外,Stata有着丰富的网络资源,用户可随时到Stata网站寻找并下载最新的升级文件。Stata的网址是www.stata.com,它提供了很多服务,其中包括软件更新和常见问题解答等,以及专门的Stata期刊网站www.stata-journal.com。使用者可以从这里获得很多相关信息以及书籍介绍。还有互联网论坛Statalist,每月都有很多Stata用户在这里交换邮件和程序。

各位Stata用户可以自己在网上下载Stata10.0、Stata11.0,10.0以下的是以前的版本,不建议使用,因为版本越高级,应用能力也就越强。这两个版本的操作大同小异,本书所采用的是Stata11.0。

3

1.2 Stata的界面

双击

,出现如图1-1所示的界面:

图1-1 Stata的界面

1.2.1 Stata的菜单

Stata界面的最顶端显示的是菜单,如图1-2所示:

图1-2 Stata的菜单

用鼠标左键单击菜单栏上的每个单词,会出现一个下拉菜单,每个下拉菜单下都对应着不同的功能,用户可先自行浏览,后面我们会逐渐介绍每个下拉菜单的功能及作用。

File(文件):打开、存储、读入和输出数据、文件,打印文件,读入样本数据,打开最近操作过的命令及退出等。

Edit(编辑):复制和粘贴数据,对Stata界面的显示进行编辑。

4

Data(数据):对数据进行编辑,包括排序和合并数据,生成新的变量,插入变量标签,从文件夹里查看描述数据等等。

Graphics(图表):生成各种图表,像折线图、散点图、柱形图、饼图等等,以及对各种图表进行编辑和整理。还可制作时间序列图及面板数据折线图。

归等等。

User(使用者):允许对用户自定义。

Window(窗口):对Stata不同窗口进行切换等等。

Help(帮助):获得Stata的帮助,包括Stata自备的帮助信息及Stata手册和Stata网络的帮助。

1.2.2 Stata的工具栏

Stata菜单下方的如图

1-3

图1-3 Stata的工具栏

工具栏可以帮助用户快速进入Stata的常用功能,如果你忘了每个图标的意

思,只需将鼠标停在图标的上面,图标就会变蓝,并出现一个解释的标签。

打开:打开一个Stata文件。点击“打开”图标会出现一个打开的对话框,可以从最近打开的文件中选择任一个Stata文件。 保存:将当前的Stata文件保存到计算机中。 打印:打印结果。 记录:新建一个记录文档。

浏览器(即帮助窗口):打开浏览器,可以进行需要帮助的命令的查找。 图表:打开一个图表的窗口,并置于其他窗口的前面,然后进行图表编辑和制作。

Do文件编辑器:打开Do文件编辑器或将一个Do文件编辑器置于其他窗口的前面,然后进行程序命令的编辑和修改。

数据编辑器(编辑):打开数据编辑器,或将数据编辑器置于其他Stata窗口的前面,然后对数据进行编辑和整理。

数据编辑器(浏览):打开数据编辑器在浏览的模式,此功能只能对数据进行浏览,不可对数据进行编辑。

5

变量管理:打开变量管理,对变量的名称、标签、类型等进行编辑。 清除输出限制:当Stata在输出比较长的结果过程中停止时,点击此图标即可继续输出结果。

停止:停止当前Stata中的任务。

1.2.1 Stata的窗口

Stata的窗口如图1-4所示:

图1-4 Stata的窗口

从上图我们可以看到四个窗口:Review(回顾), Variables(变量) Results (结果),Command(命令)。

左上方的是Review,记录所有通过命令程序和窗口菜单方式操作执行过的命令。如果需要检查和修改先前使用过的命令,就可以在此窗口进行操作,如下:

用鼠标左键点击一下此窗口的某个程序,程序就会在Command窗口出现,然后对程序进行更改和运行;如果想直接运行某个程序,直接左键双击即可实现。 左下方的是 Variables,记录所有正在操作的程序中使用的变量,包括

Name(变量的名称);Label(变量标签);Type(变量的类型);Format(变量的显示格式)。

其中,Label是对变量名称进行的解释进行;

Type包括字符型的string常常简写成str和数值型byte,int,long,float,double;

Format是在统计表格里呈现的格式。

6

右上方的是Results :记录所有程序运行的结果。此窗口的结果可以直接复制到Excel或Word里。

右下方的是Command:在这里输入所有进行的命令程序,然后按Enter键。 上面四个界面的大小可以自由调节,也可关闭。若需要再打开某个窗口,将鼠标移到菜单中的Window上,在出现的下拉菜单中选中你要打开的窗口名即可。

7

第2章 Stata的基本操作

2.1 Stata数据的导入

2.1.1 创建新的数据库

创建新的数据库原数据必须是少量的。 打开Stata,你可以在命令窗口输入edit,或点击工具栏窗口的倒数第五个图标即Data Editor(Edit),就会出现如图2-1所示:

图2-1 数据编辑器

现在已经打开了数据编辑器的窗口,可以直接录入数据。例如,需要录入以下数据:

gpdm year gsjc csrc dshgm dycgbl 1 1998 深发展A I 11 0.104556 2 1998 深万科A J 18 0.064239 3 1998 深金田A M 10 0.074821

8

4 5 1998 1998 深安达A 世纪星源 F M 9 11 . 0.38235

你可以一笔一笔的录入数据,也可以通过复制粘贴把数据录入到编辑器,数据录完后你的屏幕会显示如下:

你会发现数据录入到了Stata里,变量的名称显示却是var1,var2,?,var5。接下来,我们还需要修改变量名称并给变量贴上标签。下面我们就来进行操作。在需要修改的变量的上,单击鼠标右键,会出现一个下拉菜单,下拉菜单的第四个子菜单是Variable Propertise?(变量属性),单击左键,就会出现如下的对话框:

将第一栏Name中的var1改成gpdm。

第二栏Label(标签)即对变量的解释,此处填上股票代码。

9

第三栏Type(类型)即变量的类型,因为变量是数值型,float是数值型,所以此处不用修改。数值型的数据保存为byte,int,long,float,double,默认格式为float。其中,byte,long,int是整数类型,只能存储整数;float和double格式能存储带小数的数值。字符型的保存格式为str*,如str8。其中,str即string(字符串)的缩写,数字8代表最长的字符长度。

第四栏Format(显示格式)即在数据编辑器里所显示的形式。一般有%w.dg和%w.df这两种显示格式:

%w.dg即general(一般)数字格式,w代表数字显示的宽度,d代表小数部分至少要显示的位数,如Format为%9.0g时,10000000显示为1.00e+7;

%w.df即fixed(固定)数字格式,w代表数字显示的总宽度,d代表小数部分固定显示位数,如Format为%9.1f时,100显示为100.0。

第五栏Value(取值),一般在含虚拟变量的数据里会用到这一栏。 上面的步骤操作好之后,Apply键会变蓝,单击即可,这样变量var1的名称和标签就改好了,然后再重复操作,修改其它的变量。

另外,我们还可以通过命令方式来实现上面的操作。譬如,要将变量var1改名称可通过如下命令实现:

. rename var1 gpdm

rename为重新命名的意思,上面这个语句意为将var1重新命名为gpdm。 给对变量gpdm贴上标签,可通过如下命令: . label variable gpdm “股票代码”

此语句的意思为给变量gpdm贴上为股票代码的标签。

数据录入以后,为了方便下次使用,我们要对数据进行保存。使用工具栏的第二个图标Save,将鼠标移在此图标上,单击就会出现一个保存的对话框:

先选择好要保存的路径,然后在文件名栏里,将*改为要保存的文件名,最后点击保存。如本例,将文件选择保存在D盘的Stata11下面,将“*”改为“公司治理”,这样保存的结果在Stata的结果窗口就会显示出一行字体,如下:

10

file D:\\Stata11\\公司治理.dta saved 保存的方法还可以通过命令的方式输入: . save 公司治理.dta

上面这个语句的意思是将文件保存为以“公司治理”为名称的文件,且文这是因为在用save保存前,已经通过菜单的方式保存过了一个名为“公司治理”的dta文件,所以当在保存的时候Stata会提示文件已经有了,如果还想在保存为此名,或想更换原有的“公司治理”文件可通过如下命令实现:

件的后缀是.dta即Stata文件。当在命令窗口运行上面的命令后,结果窗口有红色提示:

file 公司治理.dta already exists

这是因为在用save保存前,已经通过菜单的方式保存过了一个名为“公司治理”的dta文件,所以在保存的时候Stata会提示已有相同名称文件,如果还想再以此名保存,或想更换原有的“公司治理”文件可通过如下命令实现:

. save 公司治理.dta,replace

上面语句的意思是指将文件以“公司治理.dta”为名进行保存时,如果已有相同名称的文件,将替代文件,并有语句提示:

file 公司治理.dta saved

值得注意的是,上面语句中的“.”和“,”都要在英文拼写状态下输入。

下面我们来查看公司治理.dta文件是否保存。在命令窗口输入 .dir

此命令是directory的简写,是查看在指定路径下所包含的文件。在Stata中所有命令都可以简写,除非你简写的命令不是Stata默认的命令。例如:tabulate 可简写为tab,summary可简写为sum,甚至可以简写为su,只要su不是Stata的另外一个命令。

Stata的默认路径是Stata软件的存放路径,我们操作到现在并没有更改路径,并将“公司治理.dta”存储在此路径下,所以当运行命令dir后,就会在在结果窗口显示:

8/12/10 9:00 . 8/12/10 9:00 ..

6/06/10 19:46 ado 0.0k 7/10/09 14:26 isstata.110 1.4k 7/05/09 16:56 profile.do 0.2k 7/10/09 14:26 stata.html 0.1k 10/07/09 9:36 stata.lic 10.2M 6/17/10 13:52 StataSE.bin 10.1M 3/16/10 12:38 StataSE.exe 10.1M 7/10/09 14:26 StataSE.old 8/11/10 16:24 utilities 1.4k 8/05/10 10:11 公司治理.dta

80.3k 8/18/10 22:55 公司治理和Cscore2008.csv 61.7k 8/18/10 22:55 公司治理和Cscore2009.csv 920.5k 8/12/10 15:03 股票交易.xlsx

1391.8k 8/12/10 8:49 财务数据.xlsx

11

每行第一列如果显示的是

,代表是文件夹,它还有子文件,如果是文件就会在第一列,显示文件的大小,比如上面保存的“公司治理.dta”,它的大小是1.4k,第二列显示的是保存的日前和时间,第三列是文件的名称。需要说明的是,本文所采用的数据是我国上市公司数据,来源于ccer金融数据库。

2.1.2 从Excel或TXT等文档复制数据

Stata可以直接从别的文档复制数据。如果数据来自Excel可以直接复制粘帖;若数据是来自Word或TXT文档,并以Tab键分隔,也可以直接复制粘帖。

只有当数据较少的时候才可以直接复制粘帖,如果碰到大量的数据,并只需要读入其中部分变量,这种方法就显得过于繁琐。下面介绍Stata标准的读入数据的方式。

2.1.3 标准的方式读入数据

Stata有标准的读入数据的方式,这种方式可以非常方便地读入大型的数据。该方式是使用命令insheet,对原始数据要求必须为有Tab键分隔或逗号分隔的数据。

在上面dir显示的结果中,最后两个文件都是以.xlsx为后缀,表明这是excel格式的数据,下面我们就以股票交易.xlsx为例看怎样将excel数据转换成逗号分隔的数据。

首先,打开文件“股票交易.xlsx ” ,然后点击左上角的另存为,就会出现如下的对话框:

下拉保存类型框最右边的箭头

,会出现如下的菜单:

12

选择CSV(逗号分隔),然后保存。此时,excel会有这样的提示:

点击“是(Y)”。关闭excel,会出现如下提示:

点击“是(Y)”,又会出现一个保存对话框:

13

可以对文件名部分进行修改,保存你方便的文件名,为了和先前的做对比,此处继续使用“股票交易”文件名,文件名修改好后,点击保存,出现如下提示:

在点击“是(Y)”,此时出现如下提示:

继续点击“是(Y)”即可。如果刚开始操作的时候,觉得有些啰嗦,你可以这样操作,看到有提示的对话框,都点击是,就行了。

我们通过命令dir查看Stata11下面的文件,这时比先前多了个“1266.7k 8/12/10 15:08 股票交易.csv ”,这样就保存的CSV(逗号分隔)格式的文件。

14

然后通过菜单File > Import > ASCII data created by a spreadsheet操作方式如下:

点击ASCII data created by a spreadsheet,出现如下对话框:

15

在ASCII dataset filename:下面的空白处通过Browse选择要读入的CSV格式的数据操作完成后,空白出会有如下的内容:

再点击最下方的OK,这样文件“股票交易.csv”便读入到Stata里。然后将文件保存为 “股票交易.dta” Stata格式的,以备用。

文件“股票交易.csv”读入到Stata里还可以通过如下命令方式实现: .insheet using “D:\\Stata11\\股票交易.csv”

语句意思为从D盘的Stata11下面读入非Stata格式的文件股票交

易.csv,因为StataSE在这路径下,即此时的路径就是在Stata11下,所以上面的命令也可简写为

.insheet using 股票交易.csv

Stata保存的数据文件的格式为.dta,但是此格式的读取用insheet却不能读入。下面介绍.dta 格式数据的读入

16

2.1.4 .dta格式的数据读入

通过以上的操作,在我们的Stata11文件下已经存储了“股票交易.dta”。这是一个可以直接使用的Stata类型文件,如果要将此文件读入到Stata里,你可以选择在点击工具栏的第一个图标框:

,然后就会弹出如下对话

选中“股票交易”,然后点击最下方的“打开(O)”,即打开。 也可通过命令方式打开,程序命令如下: .use 股票交易.dta

此语句意思为使用文件“股票交易.dta”,因为.dta是Stata的默认存储数据的格式,所以上面的命令也可简写为:

.use 股票交易

虽然使用菜单和命令方式都可以读入数据,但菜单方式会读入全部数据,包括所有的观察值和变量,而命令方式会有选择性和灵活性。

如果只需要使用文件“股票交易.dta”中的变量v1和v2,则通过如下命令:

.use v1 v2 using股票交易

然后点击工具栏倒数第四个图标Date Editor(Browse),或输入命令bro(browse的简写),对数据进行浏览,显示如下:

17

如果需要读入数据的前10笔,可通过如下命令实现: .use 股票交易 in 1/10

此语句意思的读入文件“股票交易.dta”的第1到第10笔数据,使用命令bro查看数据,显示如下:

在上面的数据编辑器里有的变量v1是黑色,而变量v2是红色,黑是字体代表是数值型的,红色代表字符型的。数据虽然已经输入到Stata里,但是并不符合所需数据的的形式,下面对数据进行整理。

18

2.2 删除变量和观测值

2.2.1 删除变量

在文件“股票交易.dta”中,变量v3(股票简称)和变量v4(公司中文

名)是多余的,需要删除,下面我们就来介绍怎样删除变量。

可以通过菜单Data > Variables Manager,操作方式如下:

然后会出现如下的对话框:

19

按住Ctrl键,选中变量v3和v4,再单击鼠标右键,选中Drop Selected Variables会有如下显示:

待变蓝后,左键单击,出现如下对话框:

20

然后选择是(Y)即可。

也可通过如下命令方式实现: .drop v3 v4

上面语句的意思是删除变量v3和v4。 再通过如下命令将文件保存: .save 股票交易,replace 然后在输入命令 .clear

此语句的意思是删除,删除当时Stata中使用的所以变量。

2.2.2 删除观测值

在会计中,由于金融行业的会计制度和其他的行业的不同,所以在进行实证研究时,一般会剔除金融行业的观测值。下面我们就来查看在“股票交易”数据中是否存在金融行业的,并将其剔除。

变量csrc代表行业分类,通过菜单Statistics > Summaries, tables, and tests > Tables > One-way tables,可获得变量csrc的频数分布,操作如下:

点击One-way tables,出现如下对话框:

21

点击Categorical variable下面的箭头,选择变量csrc,操作如下:

再点击OK即可。

也可通过如下的 tab(tabulate的简写)命令方式实现上面的操作: .tab csrc

在结果窗口发现变量csrc含有J,J01,J09,他们是金融行业的代码,现在删除这些观测值。

在命令窗口输入如下命令便可实现: drop if csrc==“J”

语句意思是如果变量csrc的观测值等于J就删除,Stata语句中if表示如果,假如的意思。Stata中的算术和逻辑符合如下:

== != > < >= <= = 算术和逻辑符合 等于 不等于 大于 小于 大于或等于 小于或等于 定义为 + - * ^ | & ! 加 减 乘 除 或 和 否 通过上面的程序命令,变量csrc中含有J的观测值被删除。剩下的观测值J01和J09,你可以按照上面的命令用两步把不需要的观测值删除。也可以通过如下的命令方式一次性删除上面三个观测值:

. drop if csrc==“J”|csrc==“J01”| csrc==“J09”

删除了不需要的观测值,此时变量csrc就便的多余了,使用命名: .drop csrc

22

然后保存文件

.save 股票交易,replace

2.3 变量类型的转换

2.3.1 变量的描述

先读入数据“股票交易.dta”,如果此时你想查看数据所包含每个变量的类型,变量的标签,并包含了多少观测值等,可以通过菜单实现:Data > Describe data > Describe data in memory,操作如下:

点击Describe data in memory,出现如下的对话框:

在Variables下面的框格里最右边有个箭头,点击它选择所要描述的变量,先选择变量v1,v2,操作如下:

23

然后点击OK,在结果的窗口,出现如下的内容:

storage display value

variable name type format label variable label ------------------------------------------------------------------------------------------------------------------------------------

v1 long .0g 股票代码 v2 str10 s 年度

variable name表示变量名称,storage type表示变量类型,display format表示显示格式,value label表示取值的标签,variable label表示变量的标签。

上面菜单的操作,用命令des(describe的简写)同样可以实现: .des v1 v2

此语句的意思的描述变量v1,v2的基本情况。

如果在如下对话框:

24

Variables下面的框格里什么都不填,直接点OK,Stata默认将所有的变量都描述出来,结果窗口显示内容如下:

Contains data from 股票交易.dta

obs: 16,820

vars: 4 13 Aug 2010 21:46 size: 504,600 (99.0% of memory free)

------------------------------------------------------------------------------------------------------------------------------------ storage display value

variable name type format label variable label

------------------------------------------------------------------------------------------------------------------------------------ v1 long .0g 股票代码 v2 str10 s 年度 v6 float %9.0g 回报率 v7 double .0g 总市值

------------------------------------------------------------------------------------------------------------------------------------

第一行 Contains data from 股票交易.dta意思数据来自于股票交易.dta这个文档。obs:16820,表示观测值是16820个,vars:4 表示变量有4个,后面的日期表示最后一次修改数据的日期,size: 504,600 (99.0% of memory free)表示数据占有504600B内存,还有99%的内存是可用。 此菜单操作同等于如下命令:

25

.des

从结果窗口的显示可以看书,变量v2的类型是str10,代表是意思是字符型,最长的字符长度是10。

下面我们就来看怎样将字符型变量转换为数值型变量。

2.3.2 将字符型变量转换成数值型

通过前面的分析,我们已经变量v2是字符型,现在将v2转换成数值。首先,列示变量v2的前5笔观测值,看其含有哪些字符。使用菜单:Data > Describe data > List data,操作如下:

点击List data,出现如下对话框:

26

在此窗口Variables下面的框格里点击最右边的箭头,选择v2变量。切换到by/if/in/窗口,在Use a range of observations 前面的方框里点击下,会出现√,然后在From:后面填入1,在o:后面填入5,如下对话框:

点击OK。在结果窗口有如下的显示内容:

+------------+ | v2 | |------------| 1. | 1991/12/31 | 2. | 1992/12/31 | 3. | 1993/12/31 | 4. | 1994/12/31 | 5. | 1995/12/31 | +------------+

上面的操作也可用如下的命令方式实现: . list v2 in 1/5

语句的意思列示变量v2的第1到第5笔观测值,命令list是列示的意思。 根据上面的显示结果可知,变量v2含有字符“/”,下面开始对变量v2进行转换。

使用菜单的步骤是:Data > Create or change data > Other

variable-transformation commands > Convert variables from string to numeric,操作如下:

27

点击Convert variables from string to numeric,出现如下的提示框:

在String variables to convert:下面的框格里,点击最右边的箭头,选择变量v2,并在Create new numeric variables named:下面的框格里输入产生的新变量名date,然后点击Remove these characters前面方框,会出现√,在Remove these characters下面的框格里填上/,操作的显示如下:

28

点击OK即可。

上面的操作也可通过如下命令的方式实现: . detring v2,generate(date) ignore(“/”)

上面语句的意思是忽略字符型变量v2中的/生成一个新数值型变量date。detring是将字符型变量转换成数值型变量的意思,generate(可简写为gen)意为产生一个新的变量,ignore是忽略的意思。

此时,再des所有变量下,会发现多了个新变量date,它的类型是数值型的。这样变量v2就不需要了,删除变量v2,再保存以备用。操作如下: . drop v2

. save 股票交易,replace

如果在要转换的字符变量里没有特殊字符(如/,%,$),可使用如下的程序命令来实现字符型的转换: .gen 新变量=real(旧变量)

此语句的意思是将旧变量的所有字符都转换成数值型的新变量。用此语句是值得注意的是,任何非数字的表达都会转换成缺失值,仅当数据没有字符的时候,才使用该功能。

前面对不需要的变量和观测值进行了剔除,并将变量都转换成了数值型变量。下面继续对数据进行处理,以符合最后使用数据的需要。

29

2.4 生成日期

打开股票交易数据,列示变量date的前5笔观测值,结果显示如下:

+----------+ | date | |----------| 1. | 19911231 | 2. | 19921231 | 3. | 19931231 | 4. | 19941231 | 5. | 19951231 | +----------+

此时的变量date,虽然是数值型的,其观测值19911231意思是1991年的年底,但是会计中很多实证研究并不需要这样累赘的年份,我们只需要1991。我们可以通过如下的程序命令来实现所要的操作: .gen year=int(date/10000)

此语句的意思是产生一个新变量year,它是这样定义的用date除以10000然后取整数,19911231除以10000等于1991.1231,再取整正好1991,就是所需要的年份。int是整数型,在此语句中意为取整数。

类似的方法如果我们需要月份,可通过如下的程序命令实现: .gen month=int((date/10000-year)*100)

还可用同样类似的方法提取天数。现在股票交易数据有了需要的年份,删除不需要的变量date,然后保存。 在变量窗口你会发现,新生成的变量year没有标签,下面给新的变量year填上标签。

30

2.5 给变量添加标签

数据股票交易中变量year其代表年份的意思,虽然这个变量容易明白其意思,但有时变量多时或是变量名不是用英文替代时,对于变量所代表的含义会难以分辨和理解,所以为了方便使用,需要给变量贴上标签。下面就来看怎样给变量year贴上年份这个标签的。

若通过菜单的方式是:Data > Variables Manager,操作如下:

点击Variables Manager,出现如下对话框:

先用鼠标选择year,然后在右边的Valuable Properties下面的Label框格里输入年份,操作如下:

31

点击右下方的Apply即可,最后将此对话框关闭。 也可以通过如下程序命令的方式实现上面的操作: .label var year 年份

此语句的意思是给变量year贴上标签年份。如果再输入如下的命令变量的标签就会自动删除: .label var year。

2.6 修改变量名称

打开数据股票交易,它包含四个变量v1,v6,v7和year,可以发现变量名v1没有变量名year方便使用,下面就对变量名v1,v6和v7进行修改,运用的菜单路径是:Data > Data utilities > Rename variable具体操作如下:

点击Rename variable,会出现如下的对话框:

32

点击Existing ariable name下面框格里箭头选择变量v1,然后在New

variable name下面的框格里输入新的变量名gpdm,操作如下:

点击下方的OK即可。

上面的操作也同样可以通过如下的程序命令方式实现: .rename v1 gpdm

此语句的意思是将变量v1重新命名为gpdm。用同样的方法将变量v6和v7重新命名为return和mv。

33

变量名修改好了,由于股票交易文档在接下来整理中会和其它数据进行合并,所以要先对其变量和进行排序。

2.7 变量和观测值的排序

2.7.1 变量的排序

有时为了方便变量的使用,会将一些常用的变量排在前面,或有对变量进行合并时,一般都会把合并的参照的变量排在最前面。对变量的排序通过菜单方式的路径是:Data > Data utilities > Change order of variables,操作如下:

点击Change order of variables,出现如下对话框:

34

点击Variables to reorder下面的框格最右边的箭头,会出现一个下拉菜单,是各个变量的名称,按照你需要的先后顺序点击各个变量,框格里就会按你点击的顺序显示出各个变量,如下所示:

然后点击OK即可。在变量窗口显示的变量的顺序就会按照你要的需要

排列,上面的操作可用如下命令方式实现:

.order gpdm year return mv

此语句意思是按照所列示的变量顺序排列。

如果你想把某个变量比如变量year移到变量return的前面,可以这样,菜单的路径是:Data > Data utilities > Change order of variables,操作如下:

点击Change order of variables,出现如下对话框:

35

点击Variables to reorder下面的框格最右边的箭头,会出现一个下

拉菜单,选择要移动的变量year,然后选中Place variables to reorder befor specified variable 此时它下面的框格会变蓝,然后点击框格里的箭头选择变量return,操作填入如下:

点击OK即可。此操作用命令方式如下:

36

.order year,before(return)

此语句的意思是将变量year移到变量return的前面。

另外,如果你只想把某两个变量的顺序调换下,用如下的命令可实

现:

.move 变量1 变量2

此语句的意思是交换变量1和变量2的位置。

2.7.2 观测值的排序

排序是指对要排序变量的观测值进行升序(或降序)的排列。要排序的

变量可以是一个也可以是多个。下面就对变量gpdm和year进行排序。使用菜单的路径是: Data > Sort > Ascending sort,操作如下:

点击Ascending sort,出现如下的对话框:

37

点击Variables下面框格最右边的箭头,选择变量gpdm和year,如

下:

点击OK即可。上面的操作可用如下命令方式实现: .sort gpdm year

此语句的意思是对当前的变量进行排序,先对变量gpdm按升排序,

再同一个gpdm的下对year按升序排序。值得注意的是,如果观测值中存在缺失值,会被排在最后,因为缺失值被认为是无穷大。最后保存。

用dir浏览stata11下面的文档,发现另外一个Excel的文档“财务

数据.xlsx” ,用对“股票交易.xlsx”数据处理的方法对此文档进行整理。得到新的文档“财务数据.dta”。下面对两个文档进行合并。

2.8 合并数据

合并数据分为纵向合并和横向合并。横向合并意思是增加变量,根据关

键变量进行将副档的文件合并到主档,如果主档(合并是当前打开的)和副档(当前未打开,但要合并到当前文档的)中有相同的变量名,副档会被住档替代;纵向合并意为增加观察值,主档和副档的变量名大部分相同,合并后相同名的变量的观察值增多。

2.8.1 横向合并

在d盘的Stata11里已经整理好了两个备用的Stata类型的文件:“财

务数据.dta”和“股票交易.dta” 。这两个文件都包含变量gpdm和year,现在对按照这个变量来合并,这两个变量也就是所谓的关键变量。操作如下:

38

.use 财务数据

意为打开文件“财务数据.dta”。 .sort gpdm year

意为对关键变量gpdm和year排序。在对文件进行合并的时候,一定要

先排序,否则Stata不能执行。

.save财务数据,replace

意为将文件保存,如果有相同名的财务数据的Stata文件则替换。

.use 股票交易

意为打开文件“股票交易.dta” .sort gpdm year

意为对关键变量gpdm和year排序。现在两个数据的关键变量都已经排

序好下面对数据进行合并,将“股票交易.dta”做为主档,“财务数据.dta”做为副档。

使用菜单方式的路径如下是:Data > Combine datasets > Merge two

datasets,操作如下:

点击Merge two datasets,出现如下的对话框:

39

在Main窗口下Type of merge方框下有五种选择:

(1)One-to-one on key variables此句意为如果在主档和副档中的

关键变量都只唯一的表示一个观察值,比如:变量gpdm中的1和year变量中1998这两个值能够唯一的表示一个观察值,而如果只选择了gpdm做为关键变量的话,gpdm中的取值为1的有19个观察值,这时就不用one ,就用many。下面是One-to-one on key variables应用的举例:

gpdm 3 3 3 主档 year 1992 1993 1995 gpdm 3 3 3 3 return 0.3829 0.3029 + -0.268

gpdm 3 3 3 副档 year 1992 1993 1994 ib 74146960 1.17E+08 1.31E+08 横向合并档 year return 1992 0.3829 1993 0.3029 1994 . 1995 -0.2682 ib _merge 74146960 3 1.17E+08 3 1.31E+08 2 . 1 横向合并后,在合并文件的最后一列会自动生成系统变量,Stata默认名

为_merge。_merge只有三个取值,为1时代表合并档的观察值仅自于主档,副档没有匹配的观测值,比如上面股票代码是3,1995年的观察值只有主档有,副档没有,所以_merge

40

值为1。为2时代表合并档的观察值仅来自于副档,主档没有匹配的观测值比如上面合并档股票代码为3的公司在1994年的观察值,只有副档有,所以_merge值为2。3时代表观察值主档和副档都有,比如上面合并股票代码为3的公司在1992和1993年的观察值,主副档都有,所以_merge值为3。

(2)Many-to-one on key variables(unique key for data on disk)

意为主档的关键变量有多个相同的观察值,而副档的关键变量每个观察值只有一个。例如:

主档 gpdm return 3 -1.2207 3 -0.2682 4 -0.8826 4 -0.3546

+

副档 gpdm ib 3 74146960 4 7942800 5 1.20E+08

_merge 3 3 3 3 2

gpdm 3 3 4 4 5 合并档 return ib -1.2207 74146960 -0.2682 74146960 -0.8826 7942800 -0.3546 7942800 . 1.20E+08 (3)One-to-many on key variables(unique key for data in memory)意为主档的关键变量每个观测值只有一个,副档的关键变量的有相同的观察值。这个和Many-to-one想似,例如:

副档 gpdm ib 3 74146960 4 7942800 5 1.20E+08

+

主档 gpdm return 3 -1.2207 3 -0.2682 4 -0.8826 4 -0.3546 _merge 3 3 3 3 1

gpdm 3 3 4 4 5 合并档 ib return 74146960 -1.2207 74146960 -0.2682 7942800 -0.8826 7942800 -0.3546 1.20E+08 .

(4)Many-to-many on key variables意为主档和副档的都有相同的

观测值。这种合并不同数据的合并往往存在些问题,所以这种方式一般不采用,如果你的数据存在此种合并方式建议修改成1:m或m:1的合并方式。

41

(5)One-to-one by observation意为一对一的观察值的合并,并不

属于配对合并,此处从略。

下面继续合并进行“股票交易.dta”和“财务数据.dta”的合并。主档“股票交易.dta”和副档“财务数据.dta”的关键变量是gpdm和year,这两个变量都唯一的表示一个观察值,所以选择第一合并方式。在Key variables下面的框格里点击最右边箭头,选择变量gpdm和year。在Filename ofdataset on disk下面的框格的右边点击Browse,出现如下对话框:

选择财务数据,然后点击打开(O)。此时,Stata合并的对话框的填入如下:

42

点击OK即可。在结果的窗口显示如下:

Result # of obs. ----------------------------------------- not matched 581

from master 408 (_merge==1) from using 173 (_merge==2)

matched 16,412 (_merge==3) -----------------------------------------

上面Result表示合并的结果,# of obs表示有多少观察值,not matched(没有匹配的)有581个,其中from master(来自于主档的)有408个, from using(来自于副档的)有173个,matched (匹配的)有16412个。

也可用如下命令的方式实现上面的操作: .merge 1:1 gpdm year using 财务数据.dta

此语句使用文档财务数据按照关键变量gpdm 和year进行一对一的合并。下面通过命令对数据中没有匹配的进行删除,命令如下:

.drop if _merge!=3

此语句的意思是如果变量_merge不等于3的,则删除。

43

.drop _merge

删除变量_merge,因为此变量现在已变的多余,然后通过下面的命令保存

.save 合并的数据,replace

2.8.2 纵向合并

打开Stata,使用dir查看在,Stata11里所包含着“公司治理和

Cscore2008.csv”和“公司治理和Cscore2009.csv”这两个的文件,现在要把这两个文件合并成一个新的包含2008和2009数据,即对这两个文件进行纵向的合并。首先将这两个csv格式的文件运用前面介绍过的方法转换成.dta的格式,命令方式如下:

.insheet using 公司治理和Cscore2009.csv .save 公司治理和Cscore2009,replace

用同样的方法将“公司治理和Cscore2008.csv”转换成“公司治理和Cscore2008.dta”。下面将此新建的两个.dta 格式数据进行纵向合并。

纵向合并的菜单路径是: Data > Combine datasets > Append datasets 操作如下:

点击Append datasets,出现如下对话框:

44

点击Filename of files on disks下面框格右边的Browse,出现如下的对话框:

45

本文来源:https://www.bwwdw.com/article/m5to.html

Top