版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1chap STATA编程基础编程基础(jch)第一页,共83页。第1页/共83页第二页,共83页。我们可以采取交互的方式定义程序(即,在我们可以采取交互的方式定义程序(即,在Stata命令窗口中输入程序的各行命令),但实命令窗口中输入程序的各行命令),但实际应用中,程序经常是被保存到一个际应用中,程序经常是被保存到一个do文件或文件或ado文件中去,从而方便以后的应用。文件中去,从而方便以后的应用。在程序或在程序或do文件中,我们可能需要文件中,我们可能需要(xyo)加加入注释,从而方便以后或他人的阅读。通常,入注释,从而方便以后或他人的阅读。通常,我们还会声明版本,从而使得程序能够在
2、以后我们还会声明版本,从而使得程序能够在以后更高版本的更高版本的Stata中继续使用。此外,局部宏、中继续使用。此外,局部宏、全局宏、临时变量、临时矩阵和临时文件等也全局宏、临时变量、临时矩阵和临时文件等也会经常被使用。会经常被使用。第2页/共83页第三页,共83页。n本实验主要讲解本实验主要讲解(jingji)编写编写程序的一些基本操作,不需要程序的一些基本操作,不需要使用数据文件。使用数据文件。第3页/共83页第四页,共83页。这里,这里,filename指相应的指相应的do文件文件的文件名。但需要注意的一点的文件名。但需要注意的一点是,这个是,这个filename.do文件需要文件需要放
3、在当前目录下,只有这样,放在当前目录下,只有这样,才可以不写文件的路径;否则,才可以不写文件的路径;否则,需要在文件名前写出完整路径需要在文件名前写出完整路径(而如果路径中有中文字符,(而如果路径中有中文字符,一定要将全部路径和文件名置一定要将全部路径和文件名置于英文双引号之间)。于英文双引号之间)。要查看当前目录,我们可输入要查看当前目录,我们可输入命令:命令:cd当然,我们也可以先将当前目当然,我们也可以先将当前目录更改到我们偏好的一个文件录更改到我们偏好的一个文件夹下,然后再将夹下,然后再将do文件存放文件存放(cnfng)其中。例如,如下命其中。例如,如下命令可以将当前目录更改到令可以
4、将当前目录更改到d盘盘data文件夹下:文件夹下:cd “D:data”这里,需要注意的一点是,这里,需要注意的一点是,cd命令要求其后的文件夹原来就命令要求其后的文件夹原来就存在。存在。第4页/共83页第五页,共83页。第5页/共83页第六页,共83页。第6页/共83页第七页,共83页。第7页/共83页第八页,共83页。第8页/共83页第九页,共83页。第9页/共83页第十页,共83页。第10页/共83页第十一页,共83页。第11页/共83页第十二页,共83页。第12页/共83页第十三页,共83页。第13页/共83页第十四页,共83页。局部宏的名称最多有局部宏的名称最多有31个字符,个字符,
5、它的定义方式为:它的定义方式为:local 宏的名称宏的名称 宏的内容宏的内容或:或: local 宏的名称宏的名称=表达式表达式例如,我们输入命令:例如,我们输入命令:local nv “this is a newvar”就定义了一个叫做就定义了一个叫做nv的局部宏,的局部宏,其内容为其内容为this is a newvar。如果。如果我们要引用这个局部宏的内容,我们要引用这个局部宏的内容,其格式为:其格式为:nv。注意,左边的。注意,左边的引号为标准键盘左上角的重音引号为标准键盘左上角的重音符(数字符(数字1左边的键),右边的左边的键),右边的引号为通常的单引号(回车键引号为通常的单引号(
6、回车键左边的键)。定义完毕之后,左边的键)。定义完毕之后,如果我们输入:如果我们输入:nv我们就相当于输入了:我们就相当于输入了:this is a newvar第14页/共83页第十五页,共83页。第15页/共83页第十六页,共83页。第16页/共83页第十七页,共83页。理。对于全局宏而言,其名字最多可以有32个字符长。全局宏的定义方法与局部宏类似,只需要将local改为global即可。此外,引用全局宏时,在其名字前加上美元符号$。此外,即便程序中的全局宏和局部宏有相同的名称也没有关系,因为他们的引用方法不同,Stata可以将其区分。值得注意的一点是,如果我们要显示的内容第一个字符为美元
7、符号,为了和全局宏进行区分,我们可以在该字符前加上反斜线。例如:display “$that”就表示要显示字符串$that,而不是全局宏that的内容。第17页/共83页第十八页,共83页。第18页/共83页第十九页,共83页。第19页/共83页第二十页,共83页。第20页/共83页第二十一页,共83页。此外,命令中使用的观测值有时需要被标记。例如,此外,命令中使用的观测值有时需要被标记。例如,程序设定了条件语句程序设定了条件语句(yj)、范围语句、范围语句(yj),需要确,需要确认其所使用的观测值等。由于很多程序错误产生于在认其所使用的观测值等。由于很多程序错误产生于在程序的不同部分使用不同
8、的样本,因此,我们强烈建程序的不同部分使用不同的样本,因此,我们强烈建议在程序的开始处对样本进行标记。议在程序的开始处对样本进行标记。最后,很多程序需要保存一些结果,并且可以在运行最后,很多程序需要保存一些结果,并且可以在运行程序时返回相应的结果。对于这些,我们也会进行讲程序时返回相应的结果。对于这些,我们也会进行讲解。解。第21页/共83页第二十二页,共83页。第22页/共83页第二十三页,共83页。第23页/共83页第二十四页,共83页。第24页/共83页第二十五页,共83页。第25页/共83页第二十六页,共83页。第26页/共83页第二十七页,共83页。第27页/共83页第二十八页,共8
9、3页。来定义变元名,也可以直接在运行(ynxng)程序时,于程序名后面写上各变元的内容。这时,Stata将依次把各变元的内容传递到局部宏1、2等之中,而且,宏0会按照用户输入的形式来保存所输入的内容(包括引号等),宏*则相当于将宏1、2等依次排列,且两两之间有一个空格。但这样的一个缺点是,变元的含义往往不够明确,程序的可读性比较低。事实上,在用args命令之后,Stata不过把局部宏1、2的内容又传递到args新定义的变元中;而这时,我们仍可在程序中通过局部宏1、2等来引用相应的变量。最后,如果在执行程序时,命令后面的变元个数多于args定义的变元的个数,我们可以通过数字形式的宏来引用多出来变
10、元。第28页/共83页第二十九页,共83页。command表示命令的名称(即表示命令的名称(即程序名),程序名),varlist代表命令中的代表命令中的变量,变量,=exp表示运算表达式,表示运算表达式,using filename使用数据文件使用数据文件filename,if代表条件语句,代表条件语句,in代表范围语句,代表范围语句,weight代表权重代表权重(qun zhn)语句,语句,options代表代表其他选项。其他选项。在写语法时,我们选取需要的在写语法时,我们选取需要的部分进行组合。也可以将某些部分进行组合。也可以将某些项用中括号括起来,表明该内项用中括号括起来,表明该内容为可
11、选项;或者不使用中括容为可选项;或者不使用中括号,表明该项为必选项。但需号,表明该项为必选项。但需要注意的一点是,在程序中写要注意的一点是,在程序中写语法之前,必须写上命令语法之前,必须写上命令snytax,表明该命令是语法格式。而表明该命令是语法格式。而by varlist和和command则不必出现在则不必出现在syntax之后,它们是在运行程序之后,它们是在运行程序时使用的。时使用的。另外,执行程序时,语法中各另外,执行程序时,语法中各项内容都会被保存在相应的宏项内容都会被保存在相应的宏中。例如,条件语句会被保存中。例如,条件语句会被保存在宏在宏if中,范围语句会被保存中,范围语句会被保
12、存在宏在宏in中,等等。中,等等。第29页/共83页第三十页,共83页。syntax varlist (min=3) 表示变量varlist必须设置,且最少要有3个syntax varlist (min=2 max=5 numeric) 表示变量varlist最少要有2个,最多有5个,且必须为数值型。括号中还可设定(sh dn):string=只允许字符变量,ts=允许时间序列算子等。syntax varname 只允许设置一个变量,且该变量为可选项对于varlist的位置,我们也可以设置为newvarlist或newvarname,表明生成新变量。此外,如果设置为namelist或name,
13、表明输入的对象可以不是变量名。要想进一步放宽要求,还可采用anything,这时,在命令后输入表达式或一串数字等都没有关系。最后,如果不设定(sh dn)varlist,则该程序命令会不允许输入变量。第30页/共83页第三十一页,共83页。第31页/共83页第三十二页,共83页。*显示字符串“varlist contains |变量名|”,变量名被保存在宏varlist中display if contains |if| *显示字符串“if contains |条件语句|”,条件语句保存在宏if中display in contains |in| display “ title contains
14、|title|”end下面,在打开数据文件“usaauto.dta”的情况下,我们执行这个程序。输入(shr)命令:mysyn mpg weight length if foreign ,title(“my syntax”)这里,mysyn为命令名(即程序名),mpg、weight和length为变量,if foreign为条件语句,title()指标题。mysyn后的各项即按照程序中指定的语法结构所写。第32页/共83页第三十三页,共83页。第33页/共83页第三十四页,共83页。novarlist表示不排除包含缺失值的观测值;strok表示varlist中的变量可以是字符串(string
15、is OK);zeroweight表示不排除权重为0的观测值;选项noby只有在程序设定了byable(recall)选项时才可以使用,它表示,在标记样本时,分组限制被忽略也就是说,marksample会像未设定by前缀那样来生成标记变量。marksample的通常使用形式是这样的:program syntax marksample touse rest of code if touseend这里,我们使用局部宏touse作为(zuwi)标记变量;这是一种惯例,而非要求。但为了保持程序间的一致性,我们推荐使用该名字。此外,倒数第二行命令含义为,如果宏touse的值为1(即样本被使用),则对其进
16、行相关的操作;“rest of code”指相应的操作的命令。此外,我们在应用该命令时可以生成多个标记变量,分别为其设定不同的选项,从而标记不同的观测值。第34页/共83页第三十五页,共83页。第35页/共83页第三十六页,共83页。第36页/共83页第三十七页,共83页。第37页/共83页第三十八页,共83页。第38页/共83页第三十九页,共83页。第39页/共83页第四十页,共83页。第40页/共83页第四十一页,共83页。第41页/共83页第四十二页,共83页。第42页/共83页第四十三页,共83页。第43页/共83页第四十四页,共83页。第44页/共83页第四十五页,共83页。第45页
17、/共83页第四十六页,共83页。第46页/共83页第四十七页,共83页。第47页/共83页第四十八页,共83页。第48页/共83页第四十九页,共83页。第49页/共83页第五十页,共83页。第50页/共83页第五十一页,共83页。该变量(binling)的均值(r(mean))保存到局部宏mean中)local se = sqrt(r(Var)/r(N) (将该变量(binling)的标准差保存到局部宏se中)display mean = mean (显示字符串“mean=”和局部宏mean的值)display SE of mean = se (显示字符串“SE of mean=”和局部宏se
18、的值)return scalar mean = mean (返回标量mean,其值等于局部宏mean的值)return scalar se = se (返回标量se,其值等于局部宏se的值)end第51页/共83页第五十二页,共83页。第52页/共83页第五十三页,共83页。第53页/共83页第五十四页,共83页。第54页/共83页第五十五页,共83页。的宏(如果被使用,则touse值为1,否则为0)。命令ereturn post会清除之前保存的e()的内容,并将系数向量、协方差矩阵和观测值使用情况依次传递到e(b) 、e(V)和e(sample)中。在如上的操作之后,我们可以通过eretur
19、n scalar、ereturn local或ereturn matrix命令来将其他我们想要保存的结果保存到e()中。此外,我们也可以将用户输入的命令保存到e(cmdline)中,即在程序中包括如下的命令:ereturn local cmdline 0这里,局部宏0就包含了用户输入的完整命令。这句命令不是必须的,但被认为是一种很好的做法。最后,必须指出的是,e类程序的最后一行一定是如下的命令:ereturn local cmd cmdname也就是说,将程序名保存到e(cmd)中去。只有输入这句命令,Stata才会认为保存结果是完整的。而另一方面,如果这句命令设置得过早,Stata可能会在结
20、果没有保存完全的情况下认为结果已保存完整。第55页/共83页第五十六页,共83页。第56页/共83页第五十七页,共83页。absolute residuals (此句为注释,表明本程序的(此句为注释,表明本程序的内容和作用)内容和作用)capture program drop maxres (如果程序(如果程序maxres已经存在,已经存在,则将其删除)则将其删除)program maxres, sortpreserve (定义程序(定义程序maxres。选项。选项sortpreserve表明,程序结束时,表明,程序结束时,恢复数据的初始顺序)恢复数据的初始顺序)version 10.0 (定
21、(定义程序命令对应的义程序命令对应的Stata的版本)的版本)syntax varlist(min=1) if in, number(integer) (定义程序的(定义程序的语法格式。语法格式。varlist中,变量至少中,变量至少为一个,为一个,if和和in为可选项,选项为可选项,选项number()用于设定列出的观测用于设定列出的观测值的个数)值的个数)marksample touse (对满(对满足条件的非缺失观测值进行标足条件的非缺失观测值进行标记,标记变量为记,标记变量为touse)quietly regress varlist if touse (对变量(对变量touse取值为取
22、值为1的观测值的观测值进行回归,被解释变量和解释进行回归,被解释变量和解释变量按变量按varlist的设定,的设定,quietly表表明不显示回归结果)明不显示回归结果)第57页/共83页第五十八页,共83页。预测变量名为yhat)quietly predict resid if touse, resid (对touse取值为1的观测值计算残差,将残差命名为resid)quietly gen absres=abs(resid) (生成名为absres,其值为变量resid的绝对值)gsort absres (对absres从大到小进行排序,缺失值排在最后)drop absres (删掉变量ab
23、sres)list id 1 yhat resid in 1/number (对1到number的观测值,列出变量的序号、被解释变量、yhat和resid。这里(zhl),宏1表示varlist的第一个变量,即被解释变量;宏number表示选项number()所设定的数值)end第58页/共83页第五十九页,共83页。第59页/共83页第六十页,共83页。第60页/共83页第六十一页,共83页。第61页/共83页第六十二页,共83页。第62页/共83页第六十三页,共83页。第63页/共83页第六十四页,共83页。意为两个等号)generate z=log(1)label variable z
24、log(1)else generate z=-(1(2)label variable z -1(2)end第64页/共83页第六十五页,共83页。第65页/共83页第六十六页,共83页。第66页/共83页第六十七页,共83页。第67页/共83页第六十八页,共83页。这时,循环会执行两次,即令局部宏x依次为mpg和weight-turn,来计算其描述统计量。foreach lname of local lmacname 或 foreach lname of global gmacname 这里,第一种是对局部宏lmacname中的各项进行循环,第二种是对全局宏gmacname中的各项进行循环。因
25、为很多时候,我们事先并不知道具体的要循环的元素,而是将这些元素存储在宏中,所以这种形式很常见(chn jin)。此外,在所有的循环方式中,这两种方式的执行速度最快。第68页/共83页第六十九页,共83页。第69页/共83页第七十页,共83页。这里,循环会执行四次,依次对mpg、weight、length和turn进行。这里,weight-turn表示(biosh)从weight到turn的变量,对于“usaauto.dta”的数据,即包括变量weight、length和turn。foreach lname of newlist newvarlist 这里,foreach of newlist是
26、命令格式的一部分,lname是局部宏的名称,newvarlist是新变量列表。Stata会检查指定的新变量名是否有效,但Stata并不自动将其生成。例如,我们可以写这样的一段命令:foreach var of newlist z1-z5 gen var = runiform()这里,循环会执行5次,我们会生成服从均匀分布的四个变量z1、z2、z3、z4和z5。第70页/共83页第七十一页,共83页。第71页/共83页第七十二页,共83页。第72页/共83页第七十三页,共83页。第73页/共83页第七十四页,共83页。面的命令。面的命令。例如,我们编写一段命令判断例如,我们编写一段命令判断1到到5中哪些是奇数、哪些是偶数。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于机器学习的自动驾驶系统研究与应用报告
- 护理质量与护理质量监督
- 听力检测的社会意义
- 护理专业的糖尿病护理
- 护理服务沟通技巧与案例分析
- 2025年量子通信安全事件应急预案演练
- 基于数据分析的配件市场报告
- 基于区块链的供应链管理可行性研究
- 旅游公司企业文化建设与传播岗位的面试技巧与要点
- 快消品企业行政主管面试问题
- (2026春新版)教科版三年级科学下册全册教案
- 彩钢瓦遮雨棚安装施工方案
- 信息技术基础 课件 单元1 Windows10 操作系统基础
- 新编护理三基复习测试题
- 社会体育指导员合作协议
- GB 4234.2-2024外科植入物金属材料第2部分:纯钛
- 眼袋手术课件
- 计算机二级WPS考试题及答案
- 手部卫生要讲究学会洗手剪指甲一年级综合实践活动课件
- DL-T5024-2020电力工程地基处理技术规程
- DZ∕T 0153-2014 物化探工程测量规范(正式版)
评论
0/150
提交评论